Aquí traigo un script a modo de tutorial de como protegerse de ataques de denegación de servicio
#!/bin/bash
# Limpiar reglas anteriores
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
##########################################################
# Se crea el archivo donde estan las ip bloqueadas se actualiza cada 200 segundos
iptables -A listanegra -m recent --name lista_negra --rcheck --seconds 200 -j DROP
# Detener ataques de ICMP flood #
# Creamos la cadena icmp-flood
iptables -N icmp-flood
# Saltar a la cadena cuando el ICMP es detectado
iptables -A INPUT -p icmp -j icmp-flood
# Evitar si supera los 4 por segundo
iptables -A icmp-flood -m limit --limit 4/s --limit-burst 8 -m comment --comment "Limite de ICMP alcanzado" -j RETURN
# Registrar en el log cuando es muy alto
iptables -A icmp-flood -m limit --limit 6/h --limit-burst 1 -j LOG --log-prefix "Detectado ICMP flood "
# Mandar a lista negra la IP por 200 segundos
iptables -A icmp-flood -m recent --name lista_negra --set -m comment --comment "Lista negra IP" -j DROP
##########################################################
# Detener el UDP flood #
# Creamos la cadena udp-flood
iptables -N udp-flood
# Saltar a la cadena cuando el UDP es detectado
iptables -A INPUT -p udp -j udp-flood
# UDP maximo 10 por segundo limitar a 20
iptables -A udp-flood -m limit --limit 10/s --limit-burst 20 -m comment --comment "Limite UDP superado" -j RETURN
# Añadir al log si es muy alto
iptables -A udp-flood -m limit --limit 6/h --limit-burst 1 -j LOG --log-prefix "Detectado UDP flood "
# Mandar a lista negra la IP por 200 segundos
iptables -A udp-flood -m recent --name lista_negra --set -m comment --comment "Lista negra IP" -j DROP
##########################################################
# Detener SYN flood #
# Más de lo mismo
iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 2/s --limit-burst 6 -j RETURN
iptables -A syn-flood -m limit --limit 6/h --limit-burst 1 -j LOG --log-prefix "Detectado SYN flood "
iptables -A syn-flood -m recent --name lista_negra --set -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -m comment --comment "Lista negra IP" -j DROP
##########################################################
# Paquetes mal formados #
iptables -N paquetes_malformados
iptables -A paquetes_malformados -m state --state INVALID -j DROP
iptables -A paquetes_malformados -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
iptables -A paquetes_malformados -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A paquetes_malformados -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A paquetes_malformados -p tcp ! --syn -m state --state NEW -j DROP
iptables -A paquetes_malformados -f -j DROP
iptables -A paquetes_malformados -j RETURN
##########################################################
# Cortafuegos por v4char #
Si hay algun error o algún ataque que se me pase decirlo en los comentarios espero que sirva de ayuda para protejer routers, servidores y equipos.
Puedes ver la lista negra con el comando cat /proc/net/xt_recent/lista_negra
Muy bueno @v4char (https://underc0de.org/foro/index.php?action=profile;u=47377), personalmente prefiero usar fail2ban + iptables que me va bastante bien.
Por si te interesa te dejo mi artículo: http://www.incibe.es/blogs/post/Seguridad/BlogSeguridad/Articulo_y_comentarios/DDoS_VSS_persistente
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Muy bueno @v4char (https://underc0de.org/foro/index.php?action=profile;u=47377), personalmente prefiero usar fail2ban + iptables que me va bastante bien.
Por si te interesa te dejo mi artículo: http://www.incibe.es/blogs/post/Seguridad/BlogSeguridad/Articulo_y_comentarios/DDoS_VSS_persistente
Esta muy bien, no conocia fail2ban aun asi me falta pulir un par de cosas con iptables, pero muchas gracias