serveurs:installation:fail2ban

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
serveurs:installation:fail2ban [2026/09/18 10:04] – [Prison nginx-errors] jpmilcentserveurs:installation:fail2ban [2026/09/23 12:52] (Version actuelle) – [Prison nginx-errors] jpmilcent
Ligne 97: Ligne 97:
 ===== Utilisations ===== ===== Utilisations =====
   * Document du client Fail2ban : https://manpages.debian.org/buster/fail2ban/fail2ban-client.1.en.html   * Document du client Fail2ban : https://manpages.debian.org/buster/fail2ban/fail2ban-client.1.en.html
-  * Vérifier son fonctionnement dans les logs : ''vi /var/log/fail2ban.log'' +  * Vérifier son fonctionnement dans les logs : ''%% vi /var/log/fail2ban.log %%'' 
-  * Consulter l'état d'une prison (ici avec comme nom de prison : //nginx-http-auth//) : ''fail2ban-client status nginx-http-auth'' +  * Consulter l'état d'une prison (ici avec comme nom de prison : //nginx-http-auth//) : ''%% fail2ban-client status nginx-http-auth %%'' 
-  * Sortir de prison une IP : '' fail2ban-client set <nom-de-prison> unbanip <IP-concernée> '' +  * Sortir de prison une IP : ''%% fail2ban-client set <nom-de-prison> unbanip <IP-concernée> %%'' 
-  * Réinitialiser une prison : ''<nowiki> fail2ban-client reload --unban <nom-de-prison> </nowiki>''+  * Ajouter manuellement une IP à une prison : ''%% fail2ban-client set <nom-de-la-prison> banip <IP-concernée> %%'' 
 +  * Réinitialiser une prison : ''%% fail2ban-client reload --unban <nom-de-prison> %%'' 
 +  * Enregistrer dans un fichier txt les IPs bannies d'une prison : ''%% fail2ban-client status <nom-de-prison> | grep "Banned IP list:" | awk -F: '{print $2}' | tr -s ' ' '\n' | grep -v '^$' > ips_bannies.txt %%'' 
 +  * Tester un filtre sur un fichier de log : ''%% fail2ban-regex <chemin-fichier-log> /etc/fail2ban/filter.d/<nom-filre> %%'' 
 +  * Recharger un filtre après modification : ''%% fail2ban-client reload <nom-de-prison> %%'' 
 +    * Vérifier que la regex du filtre est bien pris en compte en l'affichant : ''%% fail2ban-client get <nom-de-prison> failregex %%'' 
 +    * Vérifier que l' //ignore regex// du filtre est bien pris en compte en l'affichant : ''%% fail2ban-client get <nom-de-prison> ignoreregex %%''
  
 ===== Fai2ban et Wordpress ===== ===== Fai2ban et Wordpress =====
Ligne 174: Ligne 180:
 ===== Prison nginx-errors ===== ===== Prison nginx-errors =====
   * Mise en place d'une prison détectant un trop fort tôt de code d'erreurs HTTP : 302, 403, 404 et 500.   * Mise en place d'une prison détectant un trop fort tôt de code d'erreurs HTTP : 302, 403, 404 et 500.
-  * Cette prison est <color white/#ed1c24>SENSIBLE</color> car elle peut rapidement prendre en compte des faux positifs. A surveiller avec : ''%% fail2ban-client status nginx-errors+  * Cette prison est <color white/#ed1c24>SENSIBLE</color> car elle peut rapidement prendre en compte des faux positifs. A surveiller avec : ''%% watch fail2ban-client status nginx-errors
  %%'' ou en directe avec ''%% tail -f /var/log/fail2ban.log | grep "\[nginx-errors\] Ban" %%''  %%'' ou en directe avec ''%% tail -f /var/log/fail2ban.log | grep "\[nginx-errors\] Ban" %%''
   * Créer un fichier de filtre : ''%% vi /etc/fail2ban/filter.d/nginx-errors.conf %%''   * Créer un fichier de filtre : ''%% vi /etc/fail2ban/filter.d/nginx-errors.conf %%''
     * Contenu : <code ini>     * Contenu : <code ini>
 [Definition] [Definition]
-failregex = ^<HOST> \S+ - \[.*\] "(GET|POST|HEAD).*HTTP.*" (302|403|404|500) .*$  +url_preserved = /+api/(import/by_dataset|gn_profiles/(consistancy_data|valid_profile)|tmedias/thumbnail)/|/wp-content/uploads/|/apple-touch-icon-|/favicon.ico 
-ignoreregex =+domain_ignored = usershub.silene.eu 
 +# Regex globale 
 +failregex = ^<HOST> \S+ - \[.*\] "(GET|POST|HEAD).*HTTP.*" (302|403|404|500) .*$ 
 +ignoreregex =   ^<HOST> usershub\.silene\.eu - .*$  
 +                ^<HOST> \S+ - \[.*\] "(GET|HEAD) (%(url_preserved)s).*HTTP.*" 500 .*$ 
 </code> </code>
 +    * Tester le bon fonctionnement de cette Regexp avec : ''%% fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-errors.conf %%'' 
   * Créer un fichier de prison : ''%% vi /etc/fail2ban/jail.d/nginx-errors.conf %%''   * Créer un fichier de prison : ''%% vi /etc/fail2ban/jail.d/nginx-errors.conf %%''
     * Contenu : <code ini>     * Contenu : <code ini>
Ligne 190: Ligne 201:
 logpath = /var/log/nginx/access.log logpath = /var/log/nginx/access.log
 maxretry = 6  maxretry = 6 
-findtime = 600 +findtime = 600
 bantime = 1y bantime = 1y
 # Le paramètre ci-dessous peu être décommenté pour tester la prison sans bannir les ip # Le paramètre ci-dessous peu être décommenté pour tester la prison sans bannir les ip
 #banaction = dummy #banaction = dummy
 </code> </code>
-  * Recharger la config de //Fail2ban// : ''%% systemctl reload fail2ban.service %%'' +  * Recharger la config de //Fail2ban// : ''%% systemctl restart fail2ban.service %%'' 
-  * Pour surveiller cette nouvelle prison : ''%% watch fail2ban-client status nginx-errors %%''+ 
 +Version alternative spécifique à l'Atlas : 
 +    * Contenu ''.../filter.d/nginx-errors.conf'' : <code ini> 
 +[Definition] 
 +# Regex alternative spécifique Atlas 
 +failregex = ^<HOST> nature.silene.eu - \[.*\] "GET /espece/.*HTTP.*" 500 .*$ 
 +ignoreregex = ^<HOST> \S+ - \[.*\] "GET //api/tmedias/thumbnail.*HTTP.*" 500 .*$ 
 +</code> 
 +    * Contenu ''.../jail.d/nginx-errors.conf'' : <code ini> 
 +[nginx-errors] 
 +enabled = true 
 +port = http,https 
 +filter = nginx-errors 
 +logpath = /var/log/nginx/access.log 
 +maxretry = 1  
 +findtime = 300 
 +bantime = 1y 
 +# Le paramètre ci-dessous peu être décommenté pour tester la prison sans bannir les ip 
 +#banaction = dummy 
 +</code> 
 + 
 +===== Vérification d'IP bannies ===== 
 +  * Pour vérifier en lot des IPs abusives, vous pouvez utiliser le site : https://www.abuseipdb.com/bulk-check 
 +  * Le site IpInfo fournit également des informations : https://ipinfo.io/
  
  • serveurs/installation/fail2ban.1789725862.txt.gz
  • Dernière modification : 2026/09/18 10:04
  • de jpmilcent