Eu tenho as seguintes regras aplicadas como parte da prevenção contra DDoS.
Para evitar pacotes falsificados
-A INPUT -s 255.0.0.0/8 -j LOG --log-prefix "Spoofed source IP"
-A INPUT -s 255.0.0.0/8 -j DROP
-A INPUT -s 0.0.0.0/8 -j LOG --log-prefix "Spoofed source IP"
-A INPUT -s 0.0.0.0/8 -j DROP
Para evitar varredura Stealth e inundação TCP SYN
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "Stealth scan attempt?"
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
Agora, queremos impor o número de conexões permitidas por endereço IP por minuto. Para isso, planejei usar --limit
extensions. Mas parece que agora é recomendado usar a extensão --cstate
. Poucas perguntas ..
Suponha que eu queira permitir 60 conexões por segundo e, se exceder esse limite, aplicarei a 25 conexões por segundo. Para isso, a regra está bem
/sbin/iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m limit --limit 25/s --limit-burst 60 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m conntrack --ctstate NEW -j DROP
A segunda regra é necessária depois de adicionar a primeira regra.
Tags iptables ip-conntrack