Avr 022012
 

Pour se protéger des attaques SYN FLOOD :

Limiter le nombre de connexions parallèles par IP :

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP

Pour se protéger des attaques par SYN FLOOD et QUERY FLOOD :

Limiter le nombre de connexions par seconde par IP (exemple 20 maximum sur 10 secondes sur le port 80):
Le Hitcount ne doit pas être supérieur à 20

iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 20 -j DROP

Plus radical, limiter le nombre de paquet syn par seconde :

iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 13 -j DROP

Ou limiter le nombre de paquet syn par seconde par range d’ip (exemple /28) :

iptables -A INPUT -p tcp --dport 80 --tcp-flags SYN SYN -m hashlimit --hashlimit-name Web \
--hashlimit-above 10/second --hashlimit-mode srcip --hashlimit-burst 13 --hashlimit-srcmask 28 -j DROP

Pour bloquer une requête HTTP :

iptables -I INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string 'GET /w00tw00t' -j DROP

Pour log les IPs qui flood ajouter :

iptables -N flood
iptables -A flood -j LOG --log-prefix "FLOOD "
iptables -A flood -j DROP

et remplacer DROP par flood aux règles précédentes