← retour aux snippets

iptables: limiter les requêtes par IP (hashlimit)

Rate limiter des nouvelles connexions ou paquets par IP source au niveau L3/L4.

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.