Siguiente: El núcleo de Linux
Subir: Linux
Anterior: El sistema de parcheado
Índice General
El subsistema de red
Lamentablemente en Linux no existe una orden similar a ndd en Solaris o a
no en AIX, que como hemos visto o veremos más adelante se utilizan para
configurar en tiempo de ejecución, y de una forma sencilla, parámetros del
operativo relativos al subsistema de red. En este caso necesitamos recurrir, en
la mayoría de ocasiones, a escribir directamente en ficheros del directorio
/proc/, un sistema de archivos `virtual' que en Linux y otros entornos
Unix actúa como interfaz ente el espacio de usuario y el núcleo.
Con relación a la tabla ARP y sus timeouts (como ya dijimos al
hablar de Solaris, importantes en nuestra seguridad para prevenir cierto tipo de
ataques), su funcionamiento en Linux es quizás algo engorroso: en los
directorios /proc/sys/net/ipv4/neigh// tenemos ciertos ficheros que
indican parámetros de configuración de ARP; uno de ellos, gc_stale_time, define el tiempo (60 segundos por defecto) que una entrada
de la tabla ARP se considera `viva'. Cuando este timeout ha vencido
para cierta entrada, entra en juego el parámetro gc_interval, que
marca la frecuencia de actuación del recolector de basura (garbage
collector) en el sistema; este, que se ejecuta cada 30 segundos, es realmente
el encargado de eliminar las entradas `caducadas' de nuestra tabla.
Respecto al protocolo ICMP, una buena idea - como en cualquier Unix -
es ignorar las peticiones ICMP/SMALL>_ECHO dirigidas a direcciones de broadcast; esto lo conseguimos escribiendo un valor diferente de 0 en el
archivo /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts. Si no nos
conformamos con esto, y queremos ignorar todas las peticiones ICMP/SMALL>_ECHO, no tenemos más que hacer lo mismo en el archivo /proc/sys/net/ipv4/icmp_echo_ignore_all.
La gestión de tramas ICMP/SMALL>_REDIRECT también puede presentar
ciertos riesgos para nuestra seguridad. Si en /proc/sys/net/ipv4/conf/*/accept_redirects indicamos un valor diferente de
0 estamos diciéndole al núcleo de Linux que haga caso de este tipo de
paquetes que en principio nos puede enviar un enrutador; su valor por defecto
(0, desactivado) es el correcto. Análogamente, en /proc/sys/net/ipv4/conf/*/send_redirects permitimos la emisión de estas
tramas desde nuestra máquina escribiendo un valor diferente de 0; como sólo
un router debería enviar estos paquetes, la opción más segura
es especificar un 0 para este parámetro (su valor por defecto es 1). Una
opción intermedia entre bloquear todas las tramas ICMP/SMALL>_REDIRECT y
permitirlas puede ser el escribir en el archivo secure_redirects un
valor diferente de 0, logrando que se acepten este tipo de paquetes pero sólo desde la lista de gateways válidos definida en /etc/gateways.
Pasando ya a hablar del protocolo IP, uno de los parámetros que más
nos va a interesar es la habilitación o
deshabilitación del IP Forwarding en el núcleo de Linux; como hemos
dicho antes, el sistema de filtrado de paquetes sólo funciona cuando esta
opción está habilitada, lo que se consigue con la orden
luisa:~# echo 1 > /proc/sys/net/ipv4/ip_forward
luisa:~#
Sin embargo, si no utilizamos las facilidades de firewalling del núcleo
de Linux esta opción ha de estar desabilitada (introduciríamos un `0' en
lugar de un `1' en el fichero anterior), ya que de lo contrario corremos el
peligro de que nuestra máquina se convierta en un router.
Antes hemos hablado de las `SYN Cookies', y hemos comentado que aunque
el soporte para esta característica se introduce al compilar el núcleo,
realmente el mecanismo se ha de activar desde espacio de usuario, por ejemplo
con una orden como la siguiente:
luisa:~# echo 1 >/proc/sys/net/ipv4/tcp_syncookies
luisa:~#
También es muy recomendable que el
subsistema de red del kernel descarte las tramas con Source Routing
o encaminamiento en origen activado. Este tipo de paquetes contienen el camino
que han de seguir hasta su destino, de forma que los routers por los que
pasa no han de examinar su contenido sino simplemente reenviarlo, hecho que
puede causar la llegada de datos que constituyan una amenaza a nuestras
políticas de seguridad. En los núcleos 2.0 esto se conseguía
activando la opción CONFIG/SMALL>_IP/SMALL>_NOSR a la hora de compilar el kernel, mientras que en los 2.2 la forma
más sencilla de ignorar estos paquetes es introduciendo un `0' en los
diferentes ficheros accept_source_route del directorio /proc/sys/net/ipv4/; por ejemplo la siguiente orden descarta las tramas con
encaminamiento en origen que llegan al dispositivo de red eth0:
luisa:~# echo 0 >/proc/sys/net/ipv4/conf/eth0/accept_source_route
luisa:~#
Hemos de recordar que las modificaciones que hacemos sobre el interfaz sysctl son dinámicas: se pueden efectuar con el sistema funcionando, sin
necesidad de reiniciarlo, pero se pierden cuando la máquina se apaga para
establecerse a unos valores por defecto al arrancar de nuevo el sistema
operativo; seguramente nos interesará mantener los cambios realizados, por lo
que en alguno de los ficheros de inicialización de la máquina hemos de
incluir las órdenes que acabamos de explicar, obviamente después de haber
montado el sistema de ficheros /proc/.
Siguiente: El núcleo de Linux
Subir: Linux
Anterior: El sistema de parcheado
Índice General
2003-08-08