next up previous contents
Siguiente: El núcleo de HP-UX Subir: HP-UX Anterior: inetd.sec(4)   Índice General

El subsistema de red

Igual que al hablar de Solaris o AIX hemos hecho referencia a órdenes como como ndd o no, en HP-UX es obligatorio comentar la orden nettune, que permite examinar y modificar diferentes parámetros del subsistema de red del operativo en HP-UX 10.x (en versiones anteriores era necesario utilizar comandos como adb, y en HP-UX 11 se introduce la orden ndd, como veremos más adelante, muy similar a la existente en Solaris); por ejemplo, una consulta típica puede ser la siguiente:
marta:/# /usr/contrib/bin/nettune -l
arp_killcomplete = 1200 default = 1200 min = 60 max = 3600 units = seconds
arp_killincomplete = 600 default = 600 min = 30 max = 3600 units = seconds
arp_unicast = 300 default = 300 min = 60 max = 3600 units = seconds
arp_rebroadcast = 60 default = 60 min = 30 max = 3600 units = seconds
icmp_mask_agent = 0 default = 0 min = 0 max = 1
ip_check_subnet_addr = 1 default = 1 min = 0 max = 1
ip_defaultttl = 255 default = 255 min = 0 max = 255 units = hops
ip_forwarding = 1 default = 1 min = 0 max = 1
ip_intrqmax = 50 default = 50 min = 10 max = 1000 units = entries
pmtu_defaulttime = 20 default = 20 min = 10 max = 32768
tcp_localsubnets = 1 default = 1 min = 0 max = 1
tcp_receive = 32768 default = 32768 min = 256 max = 262144 units = bytes
tcp_send = 32768 default = 32768 min = 256 max = 262144 units = bytes
tcp_defaultttl = 64 default = 64 min = 0 max = 255 units = hops
tcp_keepstart = 7200 default = 7200 min = 5 max = 12000 units = seconds
tcp_keepfreq = 75 default = 75 min = 5 max = 2000 units = seconds
tcp_keepstop = 600 default = 600 min = 10 max = 4000 units = seconds
tcp_maxretrans = 12 default = 12 min = 4 max = 12
tcp_urgent_data_ptr = 0 default = 0 min = 0 max = 1
udp_cksum = 1 default = 1 min = 0 max = 1
udp_defaultttl = 64 default = 64 min = 0 max = 255 units = hops
udp_newbcastenable = 1 default = 1 min = 0 max = 1
udp_pmtu = 0 default = 0 min = 0 max = 1
tcp_pmtu = 1 default = 1 min = 0 max = 1
tcp_random_seq = 0 default = 0 min = 0 max = 2
so_qlimit_max = 4096 default = 4096 min = 1 max = 8192
sb_max = 262144 default = 262144 min = 10240 max = 4294967295
hp_syn_protect = 0 default = 0 min = 0 max = 1
so_qlimit_min = 500 default = 500 min = 0 max = 8192
high_port_enable = 0 default = 0 min = 0 max = 1
high_port_max = 65535 default = 65535 min = 49153 max = 65535
ip_forward_directed_broadcasts = 1 default = 1 min = 0 max = 1
marta:/#
Podemos ver que simplemente por el nombre de estos parámetros el valor de algunos de ellos parece importante (y lo es) para la seguridad del sistema; este es el caso de ip_forwarding o tcp_random_seq, por poner unos ejemplos. Podremos modificar el valor de todos aquellos parámetros que nos interese también mediante la orden nettune:
marta:/# /usr/contrib/bin/nettune -l ip_forwarding 
ip_forwarding = 1 default = 1 min = 0 max = 1
marta:/# /usr/contrib/bin/nettune -s ip_forwarding 0
marta:/# /usr/contrib/bin/nettune -l ip_forwarding
ip_forwarding = 0 default = 1 min = 0 max = 1
marta:/#
Quizás son dos los parámetros de los que más nos interesa estar pendientes para reforzar nuestra seguridad; el primero de ellos lo acabamos de ver, y es ip_forwarding. Como su nombre indica, esta directiva indica si la máquina ha de reenviar paquetes (si su valor es 1, el establecido por defecto) o si no ha de hacerlo (valor 0); como ya sabemos, lo más probable es que no nos interese este tipo de comportamiento en nuestro sistema HP-UX, por lo que debemos establecerle un valor `0' tal y como hemos visto en el ejemplo anterior.

El segundo parámetro al que debemos estar atentos para incrementar la robustez de un sistema HP-UX es tcp_random_seq, que es equivalente al TCP/SMALL>_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.
next up previous contents
Siguiente: El núcleo de HP-UX Subir: HP-UX Anterior: inetd.sec(4)   Índice General
2003-08-08