J'utilise fail2ban/firewalld
pour restreindre l'accès d'un bot à un Nginx
serveur. Typiquement, la configuration du jail correspondant ressemble à ceci :
[nginx-botsearch]
#banaction = iptables-multiport
enabled = true
filter = nginx-botsearch
logpath = /var/log/nginx*/*access*.log
maxretry = 3
bantime = 3600
Cela fonctionne comme prévu (l'action d'interdiction prend par défaut la valeur suivante firewallcmd-ipset
), c'est-à-dire le iptables -L
montre une entrée dans le INPUT_direct
chaîne :
REJECT tcp -- anywhere anywhere multiport dports http,https match-set fail2ban-nginx-botsearch src reject-with icmp-port-unreachable
avec les ipset
de fail2ban-nginx-botsearch
.
Cependant, j'ai remarqué un comportement étrange lorsque le bantime
est augmenté. Tout fonctionne comme prévu pour bantime <= 4294967
. Quand je mets bantime = 4294968
et recharger fail2ban
l'entrée dans le iptables
est manquante (l'ipset n'est pas créé) et en effet, le test avec, par exemple, la commande ab
L'utilité montre que l'interdiction n'est pas appliquée. Il est intéressant de noter qu'en utilisant banaction = iptables-multiport
fonctionne même pour les "grands" bantimes. Quelle pourrait être la raison de ce comportement ? J'utilise fail2ban v 0.9.7 sur CentOS 7.