Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Iptables
- IPT="/sbin/iptables"
- ETH="eth0"
- #Todo el tráfico syn
- $IPT -P INPUT DROP
- $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- $IPT -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
- $IPT -A INPUT -m state --state INVALID -j DROP
- $IPT -P OUTPUT DROP
- $IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- $IPT -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
- $IPT -A OUTPUT -m state --state INVALID -j DROP
- $IPT -P FORWARD DROP
- $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
- $IPT -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
- $IPT -A FORWARD -m state --state INVALID -j DROP
- $IPT -A INPUT -i lo -j ACCEPT
- $IPT -A OUTPUT -o lo -j ACCEPT
- $IPT -A FORWARD -i lo -o lo -j ACCEPT
- #Cuando sube la carga
- $IPT -A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable
- #La que mejor va
- $IPT -N syn-flood
- $IPT -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
- $IPT -A syn-flood -j LOG --log-prefix "SYN flood: "
- $IPT -A syn-flood -j DROP
- #Igual que el de arriba pero muy raw
- $IPT -N syn-flood
- $IPT -A INPUT -i eth0:2 -p tcp --syn -j syn-flood
- $IPT -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
- $IPT -A syn-flood -j DROP
- $IPT -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
- $IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
- #Descartar paquetes mal formados
- $IPT -N PKT_FAKE
- $IPT -A PKT_FAKE -m state --state INVALID -j DROP
- $IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
- $IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,FIN SYN,FIN -j DROP
- $IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,RST SYN,RST -j DROP
- $IPT -A PKT_FAKE -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
- $IPT -A PKT_FAKE -f -j DROP
- $IPT -A PKT_FAKE -j RETURN
- #Syn-flood
- $IPT -N syn-flood
- $IPT -A INPUT -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
- $IPT -A FORWARD -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
- $IPT -A syn-flood -m limit --limit 4/s --limit-burst 16 -j RETURN
- $IPT -A syn-flood -m limit --limit 75/s --limit-burst 100 -j RETURN -A syn-flood -j LOG --log-prefix "SYN FLOOD " --log-tcp-sequence --log-tcp-options --log-ip-options -m limit --limit 1/second
- $IPT -A syn-flood -j DROP
- #Requiere módulo "recent"
- modprobe ipt_recent
- $IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
- $IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP
- # explicación:
- # Se añade cada ip que se conecte a la tabla de recent
- # Por por cada ip en la tabla de recent si hace mas de x hits en x segundos, se dropea.
- $IPT -I INPUT -p tcp --syn -m recent --set
- $IPT -I INPUT -p tcp --syn -m recent --update --seconds 10 --hitcount 30 -j DROP
- #UDP Flood
- $IPT -A OUTPUT -p udp -m state --state NEW -j ACCEPT
- $IPT -A OUTPUT -p udp -m limit --limit 100/s -j ACCEPT
- $IPT -A OUTPUT -p udp -j DROP
- #Evitando Layer7 DoS limitando a 80 la máxima cantidad de conexiones
- $IPT -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 50/min --hashlimit-burst 80 --hashlimit-mode srcip --hashlimit-name http -j ACCEPT
- $IPT -A INPUT -p tcp --dport 80 -j DROP
- #Permitir el ping, pero a 1 paquete por segundo, para evitar un ataque ICMP Flood
- $IPT -A INPUT -p icmp -m state --state NEW --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
- $IPT -A INPUT -p icmp -j DROP
- #Evitando que escaneen la máquina
- $IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE j DROP
- $IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN j DROP
- $IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,RST SYN,RST j DROP
- $IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,RST FIN,RST j DROP
- $IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,FIN FIN j DROP
- $IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,URG URG j DROP
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment