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.