Bloquear ataques comúnes con iptables

firewall2Ataque SYN-Flood: Es el ataque que manda deliberadamente paquetes SYN, sin respuesta. Al no mandar respuesta el sistema se queda esperando por ACK lo que sigue al SYN+ACK (3 way handshake), al no recibir respuesta SYN+ACK, la cola de paquetes del sistema se desborda y una vez sucedido esto, el sistema es incapaza de reconocer peticiones de red de usuarios legítimos, lo que inutiliza este recurso. Entonces la solución es dropear toda conexión de esta ip.

# iptables -A INPUT -d 190.15.150.2 -j DROP

Chequear paquetes SYN: Nos debemos asegurar que las nuevas conexiones tcp son paquetes SYN, sino, debemos dropearlas.

# iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP

Paquetes fragmentados: Los paquetes fragmentados debemos dropearlos, pues este ataque nos puede dar errores en nuestro server asi como perdida de datos.

# iptables -A INPUT -f -j DROP

Paquetes malformados: Siempre se deben dropear.

# iptables -A INPUT -p tcp –tcp-flags ALL ALL -j DROP

Paquetes nulos[Null packets]: Paquetes entrantes malformados.

# iptables -A INPUT -p tcp –tcp-flags ALL NONE -j DROP

Bloqueando direcciones erróneas o spoofeadas: Toda dirección sospechosa, debemos dropearla.

Por ejemplo: 0.0.0.0/8, 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 224.0.0.0/3

Todas estas direcciones debemos dropearlas, por lo que:

# iptables -A INPUT -i eth0 -s 0.0.0.0/8 -j DROP

# iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP

# iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP

# iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP

# iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP

# iptables -A INPUT -i eth0 -s 224.0.0.0/3 -j DROP

Y hacemos lo mismo para OUTPUT:

# iptables -A OUTPUT -o eth0 -s 0.0.0.0/8 -j DROP

# iptables -A OUTPUT -o eth0 -s 127.0.0.0/8 -j DROP

# iptables -A OUTPUT -o eth0 -s 10.0.0.0/8 -j DROP

# iptables -A OUTPUT -o eth0 -s 172.16.0.0/12 -j DROP

# iptables -A OUTPUT -o eth0 -s 192.168.0.0/16 -j DROP

# iptables -A OUTPUT -o eth0 -s 224.0.0.0/3 -j DROP

Donde eth0 es la interfaz conectada a internet…

Y recuerden, para que esto funcione, se debe añadir lo siguiente a nuestro  archivo /etc/sysctl.conf:

net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.all.log_martians=1
net.ipv4.conf.default.log_martians=1

La entrada net.ipv4.conf.all.rp_filter=1 la verificación de la dirección de destino de los paquetes, esto viene incluido en el kernel del sistema y las últimas dos líneas loguean toda la información de los paquetes spoofeados.

Una vez «securizado» nuestro sistema podemos hacerle pruebas con nmap o hping. Este tema tiene tela por donde cortar, en futuras entradas iré publicando detalles referentes a este tema.

Un saludo y espero les sea de ayuda.

Deja un comentario

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