17.8. El módulo MAC portacl

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:

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.

17.8.1. Ejemplos

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.

Notas

[1]

Debido a un error, la variable de sysctl security.mac.portacl.enabled no funcionará en FreeBSD 5.2.1 o releases anteriores.

Éste y otros documentos pueden obtenerse en ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para preguntas acerca de FreeBSD, leer la documentación antes de contactar con la lista <questions@FreeBSD.org>.
Para preguntas acerca de esta documentación, e-mail a <doc@FreeBSD.org>.