Tutorial Iptables (protegerse de denegación de servicio)

Iniciado por v4char, Noviembre 16, 2015, 08:21:42 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 16, 2015, 08:21:42 PM Ultima modificación: Noviembre 17, 2015, 08:37:18 PM por v4char
Aquí traigo un script a modo de tutorial de como protegerse de ataques de denegación de servicio

Código: bash
#!/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
Código: text
cat /proc/net/xt_recent/lista_negra

Muy bueno @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, personalmente prefiero usar fail2ban + iptables que me va bastante bien.

Por si te interesa te dejo mi artículo: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login




You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Muy bueno @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, personalmente prefiero usar fail2ban + iptables que me va bastante bien.

Por si te interesa te dejo mi artículo: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Esta muy bien, no conocia fail2ban aun asi me falta pulir un par de cosas con iptables, pero muchas gracias