Fail2ban est une application qui analyse les logs de divers services (SSH, Apache, FTP…) en cherchant des correspondances entre des motifs définis dans ses filtres et les entrées des logs. Lorsqu'une correspondance est trouvée, une ou plusieurs actions sont exécutées. Fail2ban cherche des tentatives répétées de connexions infructueuses dans les fichiers journaux et procède à un bannissement en ajoutant une règle au pare-feu pour bannir l'adresse IP de la source.
Installer fail2ban si cela n'a pas été déjà réalisé
# sudo apt install fail2ban
Configurer les filtres sur les erreurs 40x
# sudo vi /etc/fail2ban/filter.d/nginx-4xx.conf
#
[Definition]
failregex = ^<HOST>.*"(GET|POST).*" (404|444|403|400) .*$
ignoreregex = .*(robots.txt|favicon.ico|jpg|png)
Le fichier de log doit être au format suivant :
69.162.124.235 - - [05/Jan/2020:16:08:04 +0100] "HEAD / HTTP/1.1" 200 0 "http://www.julienmousqueton.fr" "Mozilla/5.0+(compatible; UptimeRobot/2.0; http://www.uptimerobot.com/)"
Valider les règles :
# sudo fail2ban-regex /var/log/nginx/www.julienmousqueton.fr-access.log /etc/fail2ban/filter.d/nginx-4xx.conf
Running tests
=============
Use failregex filter file : nginx-4xx, basedir: /etc/fail2ban
Use log file : /var/log/nginx/www.julienmousqueton.fr-access.log
Use encoding : UTF-8
Results
=======
Failregex: 116 total
|- #) [# of hits] regular expression
| 1) [116] ^<HOST>.*"(GET|POST).*" (404|444|403|400) .*$
`-
Ignoreregex: 1566 total
|- #) [# of hits] regular expression
| 1) [1566] .*(robots.txt|favicon.ico|jpg|png)
`-
Paramétrer l'utilisation de la règle
# sudo vi jail.d/nginx.conf
#
[nginx-4xx]
enabled = true
port = http,https
filter = nginx-4xx
logpath = /var/log/nginx/*.log
maxretry = 7
findtime = 300
bantime = 600
Redémarrer fail2ban
sudo systemctl restart fail2ban
Vérifier :
# fail2ban-client status nginx-4xx
Status for the jail: nginx-4xx
|- Filter
| |- Currently failed: 2
| |- Total failed: 6
| `- File list: /var/log/nginx/www.julienmousqueton.fr-access.log
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
Attention en activant ce "jail", si vous avez modifié la structure des URLs de votre site vous pourriez bloquer les moteurs de recherche.