====== Fail2ban ======
====== Introduction ======
Fail2ban permet de bannir une ip lorsqu'elle effectue de nombreuses  requêtes ratée sur un service (ssh, ftp, apache, ...). Fail2ban crée des  prisons par service avec différents paramètres (filtre de recherche,  log, temps de bannissement, ...) et lorsqu'il trouve X requêtes ratées  dans le fichier de log, banni l'ip.
====== Installation ======
===== Debian & Co =====
# aptitude install fail2ban
====== Configuration ======
Le dossier qui contient les fichiers de configuration est:
/etc/fail2ban
Descriptif des fichiers/dossiers:
jail.conf: sûrement le fichier principal, il contient la définition de nos prisons.
fail2ban.conf: contient quelques paramètres pour Fail2ban (fichier de log, niveau de log, ...)
filter.d/ : Ensemble des filtres à utiliser dans jail.conf
action.d/ : Ensemble des scripts utiliser pour réaliser les différentes actions
Pour modifier un fichier de configuration, il est tout à fait  possible de modifier directement %%*%%%%*%%%%*%%%%*%%.conf, mais il est mieux de créer  %%*%%%%*%%%%*%%%%*%%.local dans le même dossier. Ainsi Fail2ban regarde d'abord  %%*%%%%*%%%%*%%%%*%%.conf pour sa configuration puis regarde %%*%%%%*%%%%*%%%%*%%.local et applique les  différences. Ça permet également de garder un fichier de config propre  au cas ou.
===== SSH =====
Si ce n'est pas encore fait, on commence par dupliquer le fichier de config puis le modifier:
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# vi /etc/fail2ban/jail.local
Se rendre dans la partie [ssh]:
[ssh]   
enabled = true   
port  = ssh,sftp       
filter  = sshd
banaction = iptables-multiport[name=SSH,port=22,protocol=tcp]        
           mail[dest="[[your@mail.com|your@mail.com]]",name="ssh",sender="[[fail2ban@mail.com|fail2ban@mail.com]]"]
# Analyse les 600 dernières secondes (10minutes)
findtime = 600  
# bantime de 25h
bantime =  90000   
# Fichier de log analysé:            
logpath  = /var/log/auth.log
# Maximum d'essais ratés: 3
maxretry = 3
Avec cette configuration, un mail d'avertissement sera envoyé pour  dire qu'une ip a été bloquée pour les 25 heures suite à 3 essais ratés  dans les 10 dernières minutes. Un mail sera également envoyé à chaque  arrêt/démarrage de la prison ssh. On peut aussi mettre un banissement de  60 secondes pour les tests^^ On applique les modifications:
# fail2ban-client reload
Vous devriez recevoir un mail pour vous indiquer que le service fail2ban a redémarré.
Pour voir l'état de la prison ssh:
# fail2ban-client status ssh
Status for the jail: ssh
|- filter
|  |- File list:   /var/log/auth.log 
|  |- Currently failed: 0
|  `- Total failed:     0
`- action
   |- Currently banned: 0
   |  `- IP list:
   `- Total banned:     0
===== Logs Fail2ban =====
Le fichier de log de Fail2ban par défaut (cf fail2ban.conf) est:
/var/log/fail2ban.log
Il est possible de modifier son niveau de verbosité dans le fichier /etc/fail2ban/fail2ban.{conf,local}:
loglevel = 4
\\ 
Si une IP insiste dans la durée ou sur plusieurs services, il est  possible de le bannir plus longtemps d'une manière simple: créer une  prison pour Fail2ban. Le fichier de log de Fail2ban sera analysé et des  actions seront appliquées en conséquence: [[http://gardouilleland.free.fr/wordpress/?p=353|http://gardouilleland.free.fr/wordpress/?p=353]]
====== Utilisation ======
===== Débannir une adresse ip =====
Pour connaître la liste des adresses ip bannies:
# iptables -L
...
**Chain fail2ban-ssh**  (1 reference) 
target     prot opt source   destination 
**DROP   all  --**  **XX.YY.WWW.ZZZ**  **anywhere**  RETURN     all  --  anywhere   anywhere
...
Il y a trois méthodes pour débloquer une adresse ip :
iptables -D **nom_de_la_chaine**  **numéro_de_la_ligne**  iptables -D **fail2ban-ssh**  **1**  iptables -D INPUT -s **XX.YY.WWW.ZZZ**  -j DROP
Attention: L'ip ne sera pas rebannie si elle se trompe à nouveau X  fois. Pour réactiver le bannissement automatique, il faut soit  redémarrer la machine, soit redémarrer le service:
# fail2ban-client restart