Siguiente: El núcleo de HP-UX
Subir: HP-UX
Anterior: inetd.sec(4)
Índice General
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.
Siguiente: El núcleo de HP-UX
Subir: HP-UX
Anterior: inetd.sec(4)
Índice General
2003-08-08