STRONG/SMALL>_ISS de Solaris: si su valor es 0 (por defecto es
así), la generación de números iniciales de secuencia TCP es
bastante débil, si es 1 es algo más robusta, y si es 2 (el valor
recomendado) se adapta al esquema definido en [Bel96], que como ya
sabemos es más robusto que los anteriores.
Aparte de los dos anteriores, existe otro parámetro configurable vía
nettune que es interesante para nuestra seguridad:
hp_syn_protect, introducido en HP-UX 10.x, y que protege a una
máquina de ataques SYN Flood si su valor es `1' (por defecto está a
0, desactivado), algo con un objetivo similar a las SYN Cookies del
núcleo de Linux:
marta:/# /usr/contrib/bin/nettune -l hp_syn_protect
hp_syn_protect = 0 default = 0 min = 0 max = 1
marta:/# /usr/contrib/bin/nettune -s hp_syn_protect 1
marta:/# /usr/contrib/bin/nettune -l hp_syn_protect
hp_syn_protect = 0 default = 0 min = 0 max = 1
marta:/#
No todos los parámetros importantes para la seguridad del subsistema de red
de HP-UX son accesibles a través de nettune; un buen ejemplo es ip_block_source_routed, que como su nombre indica bloquea las tramas
source routed que llegan a los interfaces de red cuando su valor es
verdadero (`1'), enviando ante la recepción de una de ellas un paquete ICMP de destino inalcanzable hacia el origen de la misma ([Ste98b]).
Otro ejemplo interesante es lanc_outbound_promisc_flag, que
permite a las aplicaciones que utilizan el modo promiscuo de un interfaz
capturar tanto los paquetes inbound (los `vistos' por el sistema) como
los outbound (los transmitidos por el propio sistema); por defecto el
valor de este parámetro es `0', lo que provoca que aplicaciones como tcpdump puedan no funcionar correctamente al ver sólo el tráfico no
generado por el propio host. Para asignarle el valor true a ambos
parámetros no podemos utilizar nettune, sino que tenemos que escribir
directamente sobre el núcleo en ejecución:
marta:/# echo 'ip_block_source_routed/W1'|adb -w /stand/vmunix /dev/kmem
marta:/# echo 'lanc_outbound_promisc_flag/W1'|adb -w /stand/vmunix /dev/kmem
marta:/#
Como hemos dicho al principio de este punto, en HP-UX 11 se introduce un comando
ndd, similar al que existe en Solaris, que facilita enormemente el ajuste
de parámetros de la seguridad del subsistema de red. Para obtener un listado
de cada parámetro configurable a través de este interfaz podemos ejecutar
`ndd -h', y para hacernos una idea de cuales de estos parámetros son
los más importantes para nuestra seguridad una excelente referencia es
[Ste00]; en cualquier caso, el nombre de los mismos, así como la
sintaxis de la orden, es muy similar a la que existe en Solaris.
Como siempre, nos va a interesar deshabilitar diferentes tipos de forwarding en nuestro sistema: el IP Forwarding, el reenvío de
paquetes con opciones de source routing, y los broadcasts; para
conseguirlo podemos ejecutar `ndd -set':
marta11:/# ndd -set /dev/ip ip_forwarding 0
marta11:/# ndd -set /dev/ip ip_forward_src_routed 0
marta11:/# ndd -set /dev/ip ip_forward_directed_broadcasts 0
marta11:/#
Como ya sabemos, el protocolo ICMP puede ser fuente de diferentes
problemas de seguridad en el sistema, por lo que en ocasiones conviene modificar
algunos de sus parámetros; es importante no responder a broadcasts de
tramas ICMP/SMALL>_ECHO/SMALL>_REQUEST, ICMP/SMALL>_ADDRESS/SMALL>_MASK/SMALL>_REQUEST
o ICMP/SMALL>_TIMESTAMP/SMALL>_REQUEST, así como tampoco hacerlo a
peticiones ICMP/SMALL>_TIMESTAMP/SMALL>_REQUEST dirigidas directamente a la
máquina (no en broadcast). En este orden, los parámetros del interfaz
ndd son los siguientes:
marta11:/# ndd -set /dev/ip ip_respond_to_echo_broadcast 0
marta11:/# ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0
marta11:/# ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0
marta11:/# ndd -set /dev/ip ip_respond_to_timestamp 0
marta11:/#
El envio de tramas ICMP/SMALL>_REDIRECT e ICMP/SMALL>_SOURCE/SMALL>_QUENCH se
puede evitar también mediante ndd, así como la activación de la
defensa contra el SYN flood que proporciona HP-UX:
marta11:/# ndd -set /dev/ip ip_send_redirects 0
marta11:/# ndd -set /dev/ip ip_send_source_quench 0
marta11:/# ndd -set /dev/tcp tcp_syn_rcvd_max 500
marta11:/#
Al igual que sucedía en Solaris (o en AIX con la orden no), los
cambios efectuados por ndd tienen efecto sólo mientras no se reinicia
el sistema, por lo que si queremos hacerlos permanentes hemos de ejecutarlos
automáticamente en el arranque de la máquina. HP-UX ejecuta en uno de sus
scripts de arranque la orden `ndd -c', que inicializa los valores
por defecto de cada parámetro, para lo que lee el archivo /etc/rc.config.d/nddconf. En este fichero (de texto), podemos definir las
entradas correspondientes a los valores de cada parámetro que nos interesen,
de forma que en cada reinicio del sistema se asignen automáticamente;
no se trata de un simple shellscript, sino de un fichero de
configuración con tres entradas por parámetro a configurar, que definen el
componente sobre el que se aplica (tcp, ip, arp...), el
nombre del parámetro, y el valor que queremos darle. Es conveniente, tras
modificar el fichero, que comprobemos que efectivamente todo ha funcionado como
habíamos definido tras un reinicio del sistema (es decir, que cada uno de
los parámetros tiene el valor que nosotros queremos), ya que, como se cita en
[Ste00], existen algunos problemas relacionados con esta forma de
trabajar; si no fuera así, en la misma obra se explica una sencilla
modificación del sistema que hará que todo funcione correctamente.
© 2002 Antonio Villalón Huerta