Securización básica de kernel Linux – Parte 3

Cómo comenzamos a ver en la primera y segunda parte, tenemos algunas cosas que podemos hacer en los parámetros del kernel que podemos ajustar para que evitar algunos de los muchos ataques que se pueden producir hacia nuestro sistema

continuamos!


fuentes: 3-ways-handshake

IP FORWARD

Si bien este parámetro puede no producir un ataque en sí mismo, dejamos la puerta abierta a que puedan utilizar a nuestra máquina como gateway, lo cual podría enmascarar el ataque que se pretenda realizar (y nosotros como intermediarios)

Para ello hacemos:

# vim /etc/sysctl.conf

Y agregamos al final del archivo la sig. linea:

net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

Refrescamos la config

# sysctl -p

Evitando SYN flood attacks:

Las conexiones a los servidores o entre computadores, se realizan vía una “previa” revisión entre ellos, es decir, se chequean mutuamente si ambos están preparados para establecer una conexión (TCP/IP), está revisión previa es un mecanismo de control que utiliza el protocolo TCP antes de poder establecer una conexión

Evidentemente siempre entre 2 servidores, uno es el que quiere conectarse al otro (SYN), luego el servidore contactado responde que está listo para la aceptar la conexión (SYN-ACK) y por último el servidor que solicito todo esto, terminá confirmando que se procederá con la conexión (ACK)
1.- SYN, 2.- SYN-ACK, 3.-ACK

Los attackers utilizan el conocimiento del mecanismo para enviar muchos SYN con ip source falsa, entonces la respuesta SYN-ACK es enviada a una IP falsa con lo que produce muchas conexiones a medio empezar

Las computadoras y servidores, tienen un buffer de conexiones a medio terminar e incluso algunos tienen una duración de 3 minutos !, no importa, con suficientes paquetes enviados a una computadora / servidor que no tenga en cuenta esta situación se verá afectado, degradando su repuesta de servicio o incluso una Denegación de servicio. Obviamente este ataque es muy viejo y es muy simple de ejecutar con lo cual puede que no se pueda hacer en muchos lugares, pero no puede dejarse de incluir en una prueba de penetración

En nuestro servidor vamos a ajustar algunos parametro para mitigar estos ataques:

Para ello hacemos:

# vim /etc/sysctl.conf

Y agregamos al final del archivo la sig. linea:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

Refrescamos la config

# sysctl -p

Activando exeshield :

Serie de ajustes de entorno para los programas que se ejecutan en el servidor se pueden implementar con activar un par de parametros del kernel, el cual incorporó esos parámetros como una forma de reforzar la seguridad ante ataques desde programas que se ejecutan y producen heap y stack overflow en el servidor

Para ello hacemos:

# vim /etc/sysctl.conf

Y agregamos al final del archivo la sig. linea:

kernel.exec-shield = 1
kernel.randomize_va_space = 1

Refrescamos la config

# sysctl -p

bueno con eso hemos cubierto los parametros básicos del kernel en los que podemos prevernir diversas situaciones indeseadas para nuestro servidor linux

Muchas gracias por leer !

UPDATE:

Agrego un nuevo parámetro, a partir del descubrimiento de una vulnerabilidad en TCP, en la complementación del RFC 5961, se pueden interceptar e inyectar código malicioso en cualquier comunición TCP que hagamos osea: HTTP, HTTPS, FTP, SSH, DNS, SMTP, etc, este parámetro mitiga el ataque, no lo soluciona, hay que tener en cuenta eso, hasta que solucionen el problema de fondo y ya venga solucionado “nativamente”

# vim /etc/sysctl.conf

Y agregamos al final del archivo la sig. linea:

net.ipv4.tcp_challenge_ack_limit = 999999999

Refrescamos la config

# sysctl -p

Más abajo dejo el archivo completo como quedaría:

Así queda nuestro archivo /etc/sysctl.conf

# Activar protección contra reverse path filtering
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Activar protección contra smurf attack
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Activar protección contra mensajes ICMP mal formados
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Que nadie pueda alterar las tablas de routing del sistema
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

# No Source Packets
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# No actuar como router
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Prevenir SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# Protección contra execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1

# Extras:
# Usar la mayor cantidad de tiempo posible memoria RAM en vez del disco como memoria
vm.swappiness=1

# IPv6
net.ipv6.conf.default.router_solicitations = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.dad_transmits = 0
net.ipv6.conf.default.max_addresses = 1

#vulnerabilidad CVE-2016-5696
net.ipv4.tcp_challenge_ack_limit = 999999999

Hasta la próxima

Un pensamiento en “Securización básica de kernel Linux – Parte 3”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

catorce − 14 =

Time limit is exhausted. Please reload CAPTCHA.