El subsistema de red

Igual que en Solaris hemos visto, antes de comentar aspectos relativos a la seguridad del subsistema de red del operativo, la orden `ndd', en AIX es necesario introducir el comando `no' (Network Options), encargado de configurar (y visualizar) parámetros del subsistema de red de AIX. Y de la misma forma que hemos dicho que la gestión de seguridad de los usuarios (contraseñas, restricciones de acceso, límites...) es en AIX excelente, y que otros Unices deberían tomar nota, es justo decir ahora que la configuración de parámetros del núcleo relativos a la seguridad en AIX es más pobre que en Solaris, aunque no por ello deba considerarse débil o inadecuada.

Como en cualquier Unix, una norma básica en la seguridad del subsistema de red para prevenir ataques de spoofing es no reenviar paquetes a no ser que nuestro equipo trabaje como un router o una pasarela; por tanto, es una buena idea desactivar el IP Forwarding tanto de tramas IP como de tramas IPv6:
bruja:/# no -o ipforwarding=0
bruja:/# no -o ip6forwarding=0
bruja:/#
Para evitar ataques de SYN Flooding es interesante el parámetro clean_partial_conns, que define si se van a eliminar aleatoriamente conexiones incompletas (aquellas en las que no se ha completado el protocolo a tres bandas) de la cola del servidor para dejar hueco a nuevas entradas:
bruja:/# no -o clean_partial_conns=1
bruja:/#
Respecto a algunos aspectos del protocolo ICMP, es recomendable no responder a los pings lanzados a direcciones de broadcast, ya que si lo hacemos podemos llegar a saturar una red, facilitando ataques de negación de servicio; esto se consigue asignando a la directiva bcastping un valor falso (`0'). De la misma forma, es también interesante no permitir broadcasts dirigidos a una pasarela para que sean emitidos en el otro extremo de la misma, para lo que debemos asignar a directed_broadcast un valor `0'. Además podemos hacer que nuestra máquina no responda a peticiones ICMP del tipo ICMP/SMALL>_MASK/SMALL>_REQUEST, asignando a la directiva icmpaddressmask el valor `0' (el que tiene por defecto):
bruja:/# no -o bcastping=0
bruja:/# no -o directed_broadcast=0
bruja:/# no -o icmpaddressmask=0
bruja:/#
También relacionados con el protocolo ICMP, es necesario comentar aspectos relativos a las tramas ICMP/SMALL>_REDIRECT; podemos restringir la emisión de estos paquetes (recordemos que sólo un router debería poder enviarlos) mediante la directiva ipsendredirects, mientras que para deshabilitar la recepción de los mismos podemos utilizar ipignoreredirects:
bruja:/# no -o ipsendredirects=0
bruja:/# no -o ipignoreredirects=1
bruja:/#
Como ya vimos, la gestión de paquetes source routed también puede presentar serias amenazas a nuestra seguridad; en AIX tenemos varios parámetros relativos al manejo de este tipo de tramas. En primer lugar es necesario desactivar tanto la generación como la recepción y el reenvío de las mismas, mediante los parámetros ipsrcroutesend, ipsrcrouterecv e ipsrcrouteforward respectivamente, asignandoles a todos valores de `0' (falso); el último de ellos tiene un equivalente especial para IPv6 denominado ip6srcrouteforward. Además, otro parámetro importante es nonlocsrcroute, que indica que sólo los paquetes source routed estrictos (strict source routed, paquetes en los que se especifica el camino concreto que ha de seguir la trama, a diferencia de los paquetes loose source routed, en los que sólo se marca un nodo por el que la trama ha de pasar y no el camino completo) pueden ser reenviados a través del host; su valor también ha de ser falso12.3:
bruja:/# no -o ipsrcroutesend=0
bruja:/# no -o ipsrcrouterecv=0
bruja:/# no -o ipsrcrouteforward=0
bruja:/# no -o ip6srcrouteforward=0
bruja:/# no -o nonlocsrcroute=0
bruja:/#
Respecto al timeout de la caché ARP del que ya hemos hablado en Solaris y Linux, en AIX este parámetro viene definido por la variable arpt_killc; no obstante, su valor afecta tanto a entradas ARP no utilizadas como a entradas activas, por lo que nos debemos plantear con cuidado la conveniencia de modificarlo; en cualquier caso, podemos definir en minutos el timeout también mediante la orden no:
bruja:/# no -o arpt_killc=1
bruja:/#
Además de la orden `no', otro comando que nos permite configurar parámetros interesantes para nuestra seguridad a nivel del subsistema de red - especialmente si administramos un servidor NFS - es `nfso', que configura y visualiza diferentes parámetros relacionados con este sistema de ficheros; su sintaxis es bastante similar a la de `no' (en cualquier caso, como sucede con todas las órdenes de un sistema Unix, es recomendable consultar la página de manual correspondiente), y entre los parámetros que permite configurar existen también algunos relacionados con la seguridad del sistema. Quizás el más importante es portcheck, que define el comportamiento del servidor ante peticiones provenientes de puertos no privilegiados: si su valor es 0 (por defecto es así) no se efectúa ningún tipo de comprobación, mientras que si es 1 se realiza el port checking y sólo se admiten peticiones desde puertos remotos privilegiados; por ejemplo, si queremos que esto sea así debemos ejecutar la siguiente orden (recordamos que, al igual que sucedía con `no', los cambios sólo tienen efecto sobre el kernel que se encuentra en ejecución, por lo que si se produce un reinicio de la máquina el comportamiento será el definido por defecto):
bruja:/# nfso -o portcheck
portcheck= 0
bruja:/# nfso -o portcheck=1
bruja:/# nfso -o portcheck
portcheck= 1
bruja:/#
Existen otros parámetros configurables mediante nfso que nos pueden resultar interesantes para incrementar nuestra seguridad; por ejemplo, nfs_use_reserve_ports puesto a 0 (por defecto) especificará que se utilicen puertos no reservados para las comunicaciones entre cliente y servidor NFS, nfs_max_connections y nfs_max_threads definen respectivamente límites al número de conexiones simultáneas y de hilos servidores que se van a aceptar en un sistema AIX, etc. Como siempre, es imprescindible consultar la página de manual correspondiente en la versión de AIX que estemos ejecutando para conocer todos los parámetros sintonizables mediante `nfso' y sus repercusiones en nuestra seguridad.

Tal y como sucedía con `ndd', los cambios efectuados con `no' tienen efecto sobre el kernel que se está ejecutando en un cierto momento, por lo que si el sistema se reinicia deberemos volver a dar el valor que nos interese a ciertos parámetros ejecutando la orden en el arranque de la máquina. En AIX este arranque es más peculiar que en otros entornos, y si queremos añadir estas instrucciones en cada inicio del sistema debemos crear el script correspondiente y planificarlo para que se ejecute desde /etc/inittab ([Bha01]):
bruja:/# cat /etc/rc.securenet
/usr/sbin/no -o ipforwarding=0
/usr/sbin/no -o ip6forwarding=0
/usr/sbin/no -o clean_partial_conns=1
/usr/sbin/no -o bcastping=0
/usr/sbin/no -o directed_broadcast=0
/usr/sbin/no -o icmpaddressmask=0
/usr/sbin/no -o ipsendredirects=0
/usr/sbin/no -o ipignoreredirects=1
/usr/sbin/no -o ipsrcroutesend=0
/usr/sbin/no -o ipsrcrouterecv=0
/usr/sbin/no -o ipsrcrouteforward=0
/usr/sbin/no -o ip6srcrouteforward=0
/usr/sbin/no -o arpt_killc=1
/usr/sbin/nfso -o portcheck=1
bruja:/# chmod 700 /etc/rc.securenet
bruja:/# mkitab "rcsecurenet:2:once:/etc/rc.securenet 2>&1 >/dev/console"
bruja:/#
© 2002 Antonio Villalón Huerta