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

Cómo comenzamos a ver en la entrada anterior 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: Protect from Bad ICMP messages, Advanced configurations and tools, ICMP redirect attacks, Better spoofing of ICMP host redirect messages with Scapy, Disable Source Routing, Routing process

ICMP IGNORE BOGUS ERROR RESPONSES

Este parámetro permite al kernel descartar aquellos paquetes ICMP que no cumplan con el standard y descartarlos

Debido a que los paquetes ICMP se pueden manipular, como cambiar la IP «desde» donde proviene, conviene denegar la mayor cantidad posible de información a los attackers, descartando desde el kernel todo paquete que se salga del standard (aquellos ICMP que hayan sido manoseados y que no hayan quedado cumpliendo estricto standard)

# vim /etc/sysctl.conf

Y agregamos al final del archivo la sig. linea:

net.ipv4.icmp_ignore_bogus_error_responses = 1

Refrescamos la config

# sysctl -p

ICMP redirect attacks

Este ataque que tiene altas posibilidades de dar un DDoS e impedir a una víctima contactar a un servidor y no requiere de mucho para producirlo

El efecto que produce es generarle un gateway fake en la cache de la tabla de routing de la víctima, con lo cual cuando la víctima intenta contactar al servidor, sus paquetes son redirigidos al gateway fake que queramos y con eso evitamos que se comunique con el servidor

Para evitar eso configuramos la máquina que queremos proteger:

# vim /etc/sysctl.conf

Y agregamos al final del archivo la sig. linea:

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

Refrescamos la config

# sysctl -p

IP source routing

Esta opción permite al servidor recibir paquetes alguna de las 2 opciones activadas llamadas: Strict Source Route (SSR) y Loose Source Routing (LSR). SSR, define la ruta que debe pasar el paquete sin excepciones, es decir, una lista exhaustiva de los routers por lo que deberá pasar el paquete hasta llegar al destino (obviamente la lista no puede ser infinita, hay un espacio máximo, si se supera ese limite, el paquete sigue su camino por el mecanismo normal de routing) LSR, define una lista no exhaustiva (con huecos) por las que debe pasar el paquete, es decir puede indicar uno o varios de los routers por los que se requiere pasar el paquete.

El problema es que si el paquete es alterado por un attacker y indica en alguna de las 2 opciones que el paquete debe pasar por el router que tiene bajo su control, ahi tenemos un problema de seguridad

Por este motivo no podemos dejar activadas estas opciones, de todas formas, lei por alli que los firewalls por default descartan los paquetes que tengan activada alguna de estas opciones

Para ello hacemos:

# vim /etc/sysctl.conf

Y agregamos al final del archivo la sig. linea:

net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

Refrescamos la config

# sysctl -p

Continuaremos en la sig. parte con los demás, más abajo les dejo como quedará nuestro archivo al final de los artículos, gracias por leer! Hasta el próximo articulo

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

2 comentarios sobre “Securización básica de kernel Linux – Parte 2”

Deja una respuesta

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

Time limit is exhausted. Please reload CAPTCHA.