Un poco de teorÃa, en seguridad informática, un ataque de denegación de servicio, también llamado ataque DoS (de las siglas en inglés Denial of Service), es un ataque a un sistema de computadoras o red que causa que un servicio o recurso sea inaccesible a los usuarios legÃtimos.
Normalmente provoca la pérdida de la conectividad de la red por el consumo del ancho de banda de la red de la vÃctima o sobrecarga de los recursos computacionales del sistema de la vÃctima. (wikipedia). Bien, primeramente;
Se crea un archivo de texto vacÃo de nombre ataques.sh ;
touch  ataques.sh
Posteriormente se edita con cualquier editor de textos el archivo ataques.sh;
vim ataques.sh
# Se declara el bash a utilizar
#!/bin/bash
# Se crean los archivos donde se alojaran las IPs para las listas negras;
iptables -A listanegra -m recent – -name blacklist_180 – -rcheck – -seconds 180 -m comment – -comment “Denegar los paquetes de las IPs ingresadas a la lista negra por 180 segundos†-j DROP
Estos archivos se crean en el directorio /proc ya sea en;
/proc/net/xt_recent/blacklist_180 o /proc/net/ipt_recent/blacklist_180
Asà mismo puede ser visualizado utilizando la siguiente sintaxis;
cat /proc/net/xt_recent/blacklist_180
# Detener el ICMP Flood
#Crear la cadena para ICMP flood
iptables -N cadena-icmp-flood
# Saltar a la cadena cuando el ICMP es detectado
iptables -A INPUT -p icmp -j cadena-icmp-flood
# Salir de la cadena, si la tasa de paquetes de la misma IP es inferior a 4 por segundo con una ráfaga de 8 por segundo
iptables -A cadena-icmp-flood -m limit – -limit 4/s – -limit-burst 8 -m comment – -comment “Limit ICMP rate†-j RETURN
# Registros flood cuando la tasa es más alta
iptables -A cadena-icmp-flood -m limit – -limit 6/h – -limit-burst 1 -j LOG – -log-prefix “Cortafuegos: Probable icmp flood â€
# Mandar a lista negra a la IP por 3 minutos
iptables -A cadena-icmp-flood -m recent – -name blacklist_180 – -set -m comment – -comment “ListaNegra origen IP†-j DROP
# Detener el UDP flood
# Crear la cadena para UDP flood
iptables -N cadena-udp-flood
# Saltar a la cadena cuando el UDP es detectado
iptables -A INPUT -p udp -j cadena-udp-flood
# Limitar la velocidad UDPÂ a 10/segundos con limite de 20
iptables -A cadena-udp-flood -m limit – -limit 10/s – -limit-burst 20 -m comment – -comment “Limite velocidad UDP†-j RETURN
# Log
iptables -A cadena-udp-flood -m limit – -limit 6/h – -limit-burst 1 -j LOG – -log-prefix “Cortafuegos: Probable udp flood “
# Denegados por 3 minutos para flooders
iptables -A cadena-udp-flood -m recent – -name blacklist_180 – -set -m comment – -comment “ListaNegra origen IP†-j DROP
# Detener SYN flood
# Crear la cadena syn-flood
iptables -N cadena-syn-flood
# Saltar a la cadena syn-flood cuando el paquete es detectado
iptables -A INPUT -p tcp – -syn -j cadena-syn-flood
# Limitar la tasa de paquetes de dos por segundo, con un 6 por segunda ráfaga
iptables -A cadena-syn-flood -m limit – -limit 2/s – -limit-burst 6 -m comment – -comment “Limitar velocidad TCP SYN†-j RETURN
# Log flooders
iptables -A cadena-syn-flood -m limit – -limit 6/h – -limit-burst 1 -j LOG – -log-prefix “Cortafuegos: Probable syn flood “
# Prohibir flooders por 3 minutos
iptables -A cadena-syn-flood -m recent – -name blacklist_180 – -set -m comment – -comment “Blacklist source IP†-j DROP
# Detener otros tipos de ataques de SYN FLOOD
iptables -A INPUT -p tcp ! – -syn -m state – -state NEW -m comment – -comment “Drop TCP connection not starting by SYN†-j DROP
Para finalizar, si desea guardar las reglas en el sistema desde el inicio de arranque del servidor GNU/Linux ejecute la siguiente sintaxis;
service iptables save
Y reiniciamos el servicio iptables;
service iptables restart
Verificamos las reglas creadas;
iptables -nL
Sintaxis de netfilter/iptables tomadas de acá bajo creative commons.
Sintaxis de netfilter/iptables probadas satisfactoriamente en GNU/Linux CentOS 5.
Fuente:Â enlinux.org
