Имя модуля: mac_portacl.ko
Строка конфигурации ядра: MAC_PORTACL
Параметр загрузки: mac_portacl_load="YES"
Модуль mac_portacl(4) используется для ограничения привязки (binding) к локальным портам TCP и UDP, используя различные переменные sysctl. По сути mac_portacl(4) делает возможной привязку к привилегированным портам, т.е. к портам с номерами меньше 1024 для не-root пользователей.
После загрузки этот модуль включит политику MAC на всех сокетах. Доступны следующие переменные sysctl:
security.mac.portacl.enabled включает/отключает политику целиком. [1]
security.mac.portacl.port_high установит наибольший номер порта, для которого mac_portacl(4) включает защиту.
security.mac.portacl.suser_exempt, если установлена в ненулевое значение, исключает пользователя root из этой политики.
security.mac.portacl.rules задает действующую политику mac_portacl: см. ниже.
Действующая политика mac_portacl, указанная в security.mac.portacl.rules, это текстовая строка в форме rule[,rule,...] с таким количеством правил, которое требуется.
Каждое правило задается в формате: idtype:id:protocol:port.
Параметр idtype
может принимать значения uid или gid и используется для
интерпретации параметра id
, в качестве id пользователя или
группы соответственно. Параметр protocol
используется для
определения применимости этого правила к протоколу TCP
или UDP, он может принимать значения tcp или udp. Последний параметр, port
, задает номер порта, к которому разрешается привязка
указанного пользователя или группы.
Замечание: Поскольку набор правил интерпретируется непосредственно ядром, для ID пользователя, группы и номера порта могут быть использованы только числовые значения. Т.е. имена пользователей, групп и сервисов портов не могут быть использованы.
По умолчанию в UNIX®-подобных системах порты с номерами менее чем 1024 могут быть использованы только привилегированными процессами, т.е. теми, что запущены от root. С mac_portacl(4) для разрешения привязки непривилегированных процессов к портам с номерами ниже 1024 эти стандартные ограничения UNIX должны быть отменены. Это может быть выполнено путем установки переменных sysctl(8) net.inet.ip.portrange.reservedlow и net.inet.ip.portrange.reservedhigh в ноль.
Обратитесь к примерам ниже или к странице справочника mac_portacl(4) за дальнейшей информацией.
Следующие примеры должны осветить обсуждение выше чуть лучше:
# sysctl security.mac.portacl.port_high=1023 # sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0
Сначала мы настраиваем mac_portacl(4) для работы со стандартными привилегированными портами и отмены обычных ограничений UNIX на привязку.
# sysctl security.mac.portacl.suser_exempt=1
Пользователь root должен быть исключен из этой политики, для этого переменная security.mac.portacl.suser_exempt установлена в ненулевое значение. Модуль mac_portacl(4) теперь настроен на то поведение UNIX-подобных систем по умолчанию.
# sysctl security.mac.portacl.rules=uid:80:tcp:80
Разрешает пользователю с UID 80 (обычно это пользователь www) привязку к порту 80. Теперь пользователь www сможет запустить веб сервер даже без привилегии root.
# sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995
Разрешит пользователю с UID 1001 привязку к TCP портам 110 (''pop3'') и 995 (''pop3s''). Это позволит данному пользователю запустить сервер, принимающий соединения на портах 110 и 995.
[1] |
Вследствие ошибки переменная sysctl security.mac.portacl.enabled не будет работать в FreeBSD 5.2.1 или более ранних релизах. |
Пред. | Начало | След. |
Модуль MAC ifoff | Уровень выше | Политики MAC, использующие метки |
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.