Nombre de módulo: mac_portacl.ko
Línea de configuración de Kernel: MAC_PORTACL
Opción de arranque: mac_portacl_load="YES"
El módulo mac_portacl(4) es utilizado para limitar el amarre a puertos locales TCP y UDP usando una variedad de variables sysctl. En esencia mac_portacl(4) hace posible permitir a usuarios que no son root amarrarse a puertos privilegiados específicos, por ejemplo, puertos menores a 1024.
Una vez cargado, este módulo habilitará la política MAC en todos los sockets, Los siguientes sintonizables están disponibles:
security.mac.portacl.enabled habilitará/deshabilitará la política completamente.[1]
security.mac.portacl.port_high especificará el número de puerto más elevado para el que mac_portacl(4) habilitará protección.
security.mac.portacl.suser_exempt exentará cuando esté a un valor diferente de cero, al usuario root de esta política.
security.mac.portacl.rules especificará la política actual mac_portacl; ver abajo.
La política actual mac_portacl, como se especifica en
la variable de sysctl security.mac.portacl.rules es un texto de
cadena de la forma: rule[,rule,...] con tantas reglas como se
necesiten. Cada regla es de la forma: idtype:id:protocol:port.
El parámetro idtype puede ser uid o gid e interpreta el parámetro
id ya sea como id de usuario o id de grupo,
respectivamente. El parámetro protocol es usado
para determinar si la regla debe aplicar a TCP o
UDP configurando el parámetro a tcp o udp. El parámetro final port es el número de puerto al que se le permitirá
amarrarse al usuario o grupo especificado.
Nota: Ya que las reglas son interpretadas directamente por el kernel, solo valores numéricos pueden utilizarse para los parámetros ID de usuario, ID de grupo y puerto. Ejemplo, nombres de usuario, grupo y servicios de puerto no pueden ser usados.
Por omisión, en sistemas tipo UNIX®, puertos menores que 1024 solo pueden ser usados o amarrados a procesos privilegiados, ejemplo, aquellos que corren como root. Para que mac_portacl(4) permita que procesos no privilegiados se amarren a puertos debajo de 1024 esta restricción estándar de UNIX debe ser deshabilitada. Esto puede lograrse activando a cero las variables de sysctl(8) net.inet.ip.portrange.reservedlow y net.inet.ip.portrange.reservedhigh.
Vea los ejemplos abajo o revise la página de manual mac_portacl(4) para mayor información.
Los siguientes ejemplos deben iluminar la discusión de arriba un poco mejor:
# sysctl security.mac.portacl.port_high=1023 # sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0
Primero configuramos mac_portacl(4) para cubrir los puertos privilegiados estándar y deshabilitar las restricciones de amarre normales UNIX.
# sysctl security.mac.portacl.suser_exempt=1
El usuario root no debe ser invalidado por esta política, así que ponga security.mac.portacl.suser_exempt a un valor diferente de cero. El módulo mac_portacl(4) ha sido ahora configurado para comportarse de la misma manera en que lo hacen los sistemas tipo UNIX por omisión.
# sysctl security.mac.portacl.rules=uid:80:tcp:80
Permite al usuario con UID 80 (normalmente el usuario www) amarrarse al puerto 80. Esto puede usarse para permitir al usuario www ejecutar un servidor web sin tener siquiera privilegios de root.
# sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995
Permite al usuario con UID de 1001 amarrarse al puerto TCP 110 (“pop3”) y 995 (“pop3s”). Esto le permitirá a este usuario iniciar un servidor que acepte conexiones en los puertos 110 y 995.
| [1] |
Debido a un error, la variable de sysctl security.mac.portacl.enabled no funcionará en FreeBSD 5.2.1 o releases anteriores. |
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.