[ << ]
[ < ]
[ Inicio ]
[ > ]
[ >> ]
9. Seguridad del Kernel
Contenido:
9.a. Eliminando funcionalidad
La regla básica cuando se configura el kernel es eliminar todo lo que
no se necesite. Esto no creará sólo un kernel pequeño sino también
eliminará las vulnerabilidades que puedan encontrarse en drivers y
otras características.
Considere también desactivar el soporte para módulos cargables. Aunque
incluso es posible añadir "root kits" sin esta
característica activada, se hace más difícil para los atacantes
normales instalar "root kits" sin poder hacerlo a través de
módulos del kernel.
9.b. El sistema de ficheros proc
Muchos de los parámetros del kernel pueden cambiarse a través del
sistema de ficheros /proc o usando sysctl.
Para cambiar dinámicamente parámetros y variables del núcleo al vuelo
necesita tener definido CONFIG_SYSCTL en el kernel. Lo que está
activado por defecto en un kernel 2.4 estándar.
Listado de Código 2.1: Desactivar IP forwarding |
# /bin/echo "0" > /proc/sys/net/ipv4/ip_forward
|
Asegúrese que IP forwarding está desactivado. Sólo lo queremos en un
equipo que tenga más de una conexión de red ("multi-homed
host"). Le advertimos que active o desactive este parámetro antes
que cualquier otro, puesto que también activa/desactiva otros
parámetros.
Listado de Código 2.2: Descartar los paquetes de ping |
# /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
|
Esto hará que el kernel simplemente ignore todos los mensajes de ping
(también conocidos como mensajes ICMP tipo 0). La razón para hacer
esto está en que el paquete IP que lleva el mensaje ICMP puede
contener información distinta de la que debería. Los administradores
usan ping como una herramienta de diagnóstico y frecuentemente se
quejan si se deshabilita, pero no hay ninguna razón para que alguien
desde fuera pueda mandar un ping. Sin embargo, a veces puede ser
práctico que desde dentro sí se puedan hacer pings, entonces lo que
puede hacer es deshabilitar el ICMP tipo 0 en el cortafuegos
(permitiendo continuar utilizando esta herramienta a los
administradores locales).
Listado de Código 2.3: Ignorar pings de broadcast |
# /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
|
Esto deshabilita la respuesta a "broadcasts" ICMP y
prevendrá de ataques "Smurf". El ataque Smurf consiste en
enviar un ICMP tipo 0 (ping) a la dirección de broadcast de una
red. Por regla general el atacante usará una dirección de origen
falseada ("spoofed"). Todos los ordenadores de la red
responderán al mensaje de ping y de ese modo inundarán al host cuya
dirección se ha falsificado.
Listado de Código 2.4: Deshabilitar paquetes enrutados desde el origen |
# /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
|
No acepte paquetes enrutados desde el origen. Los atacantes pueden
usar enrutamiento desde el origen para generar tráfico que pretende
ser originado dentro de su red, pero que es actualmente enrutando
hacia el origen por el camino por el que ha venido, de esta forma los
atacantes pueden comprometer su red. El enrutamiento desde el origen
es raramente utilizado para fines legítimos, por ello es seguro
desactivarlo.
Listado de Código 2.5: Deshabilitar la aceptación de redirección |
# /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
|
No acepte paquetes de redirección ICMP. La redirección ICMP puede ser
usada para alterar sus tablas de enrutamiento, posiblemente con una
una mala finalidad.
Listado de Código 2.6: Protección contra mensajes de error falsos |
# /bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
|
Habilite la protección contra respuestas de mensajes de error falsos.
Listado de Código 2.7: Activar el filtrado inverso de paths |
# for i in /proc/sys/net/ipv4/conf/*; do
/bin/echo "1" > $i/rp_filter
done
|
Active el filtrado inverso para trayectorias. Esto ayuda a estar
seguros que los paquetes usan una dirección de origen legítima
rechazando automáticamente los paquetes entrantes si la entrada
correspondiente a la dirección origen en la tabla de enrutamiento no
coincide con la interfaz de red por la que llegan. Lo cual tiene
ventajas de seguridad porque previene el falseamiento de IP ("IP
spoofing"). Necesitamos activarlo en cada
net/ipv4/conf/*, puesto que en caso contrario la
validación del origen no es totalmente funcional.
Aviso:
No obstante, activar el filtrado inverso de paths puede ser un
problema si usted utiliza el enrutamiento asimétrico (los paquetes que
usted envía a un host toman un camino diferente que los paquetes que
le envía a usted ese host) o si opera en un host que no enruta y que
tiene varias direcciones IP en distintas interfaces.
|
Listado de Código 2.8: Registre todos los paquetes falsificados (spoofed), enrutados en el origen y paquetes de redirección |
# /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
|
Registre todos los paquetes falsificados (spoofed), enrutados en el
origen y paquetes de redirección.
Todos estos ajustes se perderán cuando la máquina se reinicie. Le
sugiero que los añada a /etc/sysctl.conf el cual es
automáticamente inicializado por el guión de inicio
/etc/init.d/bootmisc.
La sintaxis para /etc/sysctl.conf es bastante
simple. Elimine el /proc/sys/ de los paths anteriormente
mencionados y sustituya / por .:
Listado de Código 2.9: Trasladar sysctl.conf |
/bin/echo "0" > /proc/sys/net/ipv4/ip_forward
net.ipv4.ip_forward = 0
|
9.c. Grsecurity
El parche de Grsecurity es un
estándar en las fuentes del núcleo sys-kernel/hardened-sources
pero está deshabilitado por defecto. Configure su núcleo como lo hace
normalmente y luego configure las opciones de Grsecurity. Una explicación
en profundidad de las opciones disponibles en Grsecurity (versión 1.9)
está disponible en la página del proyecto
Gentoo Hardened.
Las recientes hardened-sources proporcionan la versión 2.* de
Grsecurity. Para más información de este parche de Grsecurity
mejorado, por favor consulte la documentación disponible en
Grsecurity home page.
9.d. Kerneli
Kerneli es un parche que
añade cifrado al kernel existente. Parcheando el kernel conseguiremos
nuevas opciones como cifradores criptográficos, algoritmos digest y
bucles de filtros criptográficos.
Aviso:
Actualmente el parche kerneli no es una versión estable en el último
kernel, por tanto tenga cuidado cuando lo use.
|
9.e. Otros parches para el kernel
Y probablemente haya bastantes más.
[ << ]
[ < ]
[ Inicio ]
[ > ]
[ >> ]
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|