objectif
Limiter par exemple à 30 nouvelles connexions HTTP par minute et par IP.
code minimal
sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m hashlimit --hashlimit-name http_new --hashlimit 30/min --hashlimit-burst 20 --hashlimit-mode srcip --hashlimit-htable-expire 600000 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j DROP
utilisation
# limiter RST flood
sudo iptables -A INPUT -p tcp --tcp-flags RST RST -m hashlimit --hashlimit 10/second --hashlimit-burst 20 --hashlimit-mode srcip -j ACCEPT
variante(s) utile(s)
# logs avant drop
sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j LOG --log-prefix 'HTTP_RATELIMIT '
notes
- précis et efficace; attention aux NATs partagées.
- nftables possède
limit rate over/maps pour équivalents.