User Tools

Site Tools


informatique:logiciels:fail2ban

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
informatique:logiciels:fail2ban [2010/07/08 15:09] – créée pteuinformatique:logiciels:fail2ban [2022/11/16 08:13] (current) – [Ajouter un ban manuellement] unban pteu
Line 3: Line 3:
 {{http://www.fail2ban.org/fail2ban_logo.png }} {{http://www.fail2ban.org/fail2ban_logo.png }}
  
-[[http://www.fail2ban.org|fail2ban]] est un script qui permet de bloquer les IPs (avec iptables) des machines distantes qui dépassent un certains seuil de logins manquéspour un certain temps. Pour cela, il consulte les log des différents logiciels : serveur SSH, serveur web apache, serveur de mail, serveur FTP, ...+[[http://www.fail2ban.org|fail2ban]] est un logiciel qui permet de bloquer les IPs (avec iptables) des machines qui dépassent un certains seuil de matches dans les logs d'un service (souventdes tentatives de connexion ratées), pendant un certain laps de temps. Pour cela, il recherche des expressions régulières prédéfinies dans les journaux de différents logiciels : serveur SSH, serveur web apache, serveur de mail, serveur FTP, etcIl est donc utile pour se prémunir des attaques de type force brute.
  
-Son comportement diffère de celui du fichier ''/etc/hosts.deny'' (qui, pour mémoire, blackliste directement toute connexion issue des IPs renseignées dans ce fichier) : fail2ban, lui, puni __les abus__et __temporairement__.+Son comportement diffère de celui du fichier ''/etc/hosts.deny'' (qui, pour mémoire, blackliste directement toute connexion issue des IPs renseignées dans ce fichier) : fail2ban, lui, puni __les abus__ avérés (et peut lever le ban au bout d'un certain temps). 
 + 
 + 
 +=====Installation=====
  
-Installation : 
 <code bash> <code bash>
 aptitude install fail2ban aptitude install fail2ban
 </code> </code>
  
-Sous Debian Lenny, les fichiers de configuration sont situés dans ''/etc/fail2ban'' :+Sous Debian, les fichiers de configuration sont situés dans ''/etc/fail2ban'' :
   * ''fail2ban.conf'' qui est la configuration du démon fail2ban   * ''fail2ban.conf'' qui est la configuration du démon fail2ban
   * ''jail.conf'' est la configuration par défaut. Il contient une section "[DEFAULT]" qui contient la configuration globale :   * ''jail.conf'' est la configuration par défaut. Il contient une section "[DEFAULT]" qui contient la configuration globale :
 <code bash> <code bash>
 [DEFAULT] [DEFAULT]
-liste d'IPs qui ne seront jamais blacklistées+whitelist (IPs qui ne seront jamais blacklistées)
 ignoreip = 127.0.0.1 192.168.0.0/24 ignoreip = 127.0.0.1 192.168.0.0/24
-# temps de blocage +bantime  = 3600      # temps de blocage, en secondes (1 jour) 
-bantime  = 600 +Une IP est bannie si elle génère "maxretry" fails pendant les dernières "findtime" secondes 
-apres 5 tentatives de login infructueuses +maxretry = 5         # nombre de fail avant blocage 
-maxretry = 5+findtime = 600       # intervalle de temps pour vérifier les logs, en secondes (10 min)
 # destinataire des mails de rapports # destinataire des mails de rapports
 destemail = root@localhost destemail = root@localhost
Line 28: Line 30:
 </code> </code>
  
-...ainsi qu'une section par service ([ssh], [apache], etc...) qui peut surchargé les paramètres globaux :+...ainsi qu'une section par service ([ssh], [apache], etc...) qui peut surcharger les paramètres globaux :
 <code bash> <code bash>
 [ssh] [ssh]
 enabled = true enabled = true
 port    = ssh port    = ssh
-# nom du filtre qui est déclaré dans le dossier  +filter  = sshd       # nom du filtre qui est déclaré dans le dossier  
-filter  = sshd + 
-# il est possible de définir soit même des filtres sous forme d'expressions régulières+# il est possible de définir soit-même des filtres sous forme d'expressions régulières ici :
 failregex = courierpop3login: LOGIN FAILED.*ip=\[.*:<HOST>\] failregex = courierpop3login: LOGIN FAILED.*ip=\[.*:<HOST>\]
-# chemin vers le fichier de log du démon sshd + 
-logpath  = /var/log/auth.log +logpath  = /var/log/auth.log  chemin vers le fichier de log du service sshd 
-surcharge du paramètre maxretry +maxretry = 6         # surcharge du paramètre maxretry
-maxretry = 6+
 </code> </code>
  
Line 46: Line 47:
   * ''action.d/'' est le fichier de description des actions entreprises lorsqu'un seuil de connexion est dépassé.   * ''action.d/'' est le fichier de description des actions entreprises lorsqu'un seuil de connexion est dépassé.
  
-Après modification d'un fichier de conf, penser à recharger la conf ou le service complet :+Après modification d'un fichier de conf, penser à recharger le service :
 <code bash> <code bash>
-/etc/init.d/fail2ban reload +systemctl restart fail2ban || /etc/init.d/fail2ban restart
-# ou +
-/etc/init.d/fail2ban restart+
 </code> </code>
  
Line 56: Line 55:
 <code bash> <code bash>
 grep WARNING /var/log/fail2ban.log grep WARNING /var/log/fail2ban.log
- 18:2010-07-08 14:36:54,228 fail2ban.actions: WARNING [ssh] Ban 192.168.0.22 + 18:2010-07-08 14:36:54,228 fail2ban.actions: WARNING [ssh] Ban 192.168.1.22 
- 20:2010-07-08 14:46:39,376 fail2ban.actions: WARNING [ssh] Unban 192.168.0.22+ 20:2010-07-08 14:46:39,376 fail2ban.actions: WARNING [ssh] Unban 192.168.1.22 
 +</code> 
 + 
 + 
 +=====fail2ban-client===== 
 + 
 +Permet de voir l'état du serveur fail2ban : 
 +<code bash> 
 +fail2ban-client status 
 +Status 
 +|- Number of jail:      7 
 +`- Jail list:           apache-overflows, apache-noscript, ssh, openvpn, postfix, sasl, dovecot 
 +</code> 
 + 
 +... ou l'état d'un filtre spécifique : 
 +<code bash> 
 +fail2ban-client status ssh 
 +Status for the jail: ssh 
 +|- filter 
 +|  |- File list:        /var/log/auth.log  
 +|  |- Currently failed: 0 
 +|  `- Total failed:     2 
 +`- action 
 +   |- Currently banned: 0 
 +    `- IP list: 
 +   `- Total banned:     0 
 +</code> 
 + 
 +On peut arrêter/relancer une prison indépendamment des autres : 
 +<code bash> 
 +fail2ban-client stop ssh 
 +fail2ban-client start ssh 
 +</code> 
 + 
 +====Ajouter un ban manuellement==== 
 + 
 +Pour ajouter une adresse IP à une prison (rappel : on liste les jails avec ''fail2ban-client status'', et le flag ''-vvv'', adaptable, permet d'afficher les détails DEBUG): 
 +<code bash> 
 +fail2ban-client -vvv set <JAIL> banip <ADDRESS IP> 
 +# par exemple 
 +fail2ban-client -vvv set apache-overflows banip 45.155.205.233 
 +</code> 
 + 
 +Pour débloquer une IP qui a été ban (dans cet exemple, dans le jail sshd) : 
 +<code bash> 
 +fail2ban-client set <JAIL> unbanip <ADDRESSE IP> 
 +# par exemple 
 +fail2ban-client set sshd unbanip 10.0.0.1 
 +</code> 
 +=====fail2ban-regex===== 
 + 
 +Permet de tester un fichier de filtre sur un fichier de log, pour voir s'il matche comme prévu : 
 +<code bash> 
 +#fail2ban-regex "ligne de log" "regex à tester" 
 +# OU 
 +#fail2ban-regex <fichier de log> <fichier de filtres> 
 +fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/sasl.conf
 </code> </code>
informatique/logiciels/fail2ban.1278601766.txt.gz · Last modified: 2013/10/14 20:55 (external edit)