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