Différences

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

Lien vers cette vue comparative

documentation:fail2ban [2012/10/19 20:30] (Version actuelle)
Ligne 1: Ligne 1:
 +====== 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 =====
 +
 +
 +<​code>#​ aptitude install fail2ban
 +
 +</​code>​
 +====== Configuration ======
 +
 +
 +Le dossier qui contient les fichiers de configuration est:
 +
 +
 +<​code>/​etc/​fail2ban
 +
 +</​code>​
 +
 +
 +Descriptif des fichiers/​dossiers:​
 +
 +
 +<​code>​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
 +
 +</​code>​
 +
 +
 +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:
 +
 +
 +<​code>#​ cp /​etc/​fail2ban/​jail.conf /​etc/​fail2ban/​jail.local
 +# vi /​etc/​fail2ban/​jail.local
 +
 +</​code>​
 +
 +
 +Se rendre dans la partie [ssh]:
 +
 +
 +<​code>​[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
 +
 +</​code>​
 +
 +
 +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:​
 +
 +
 +<​code>#​ fail2ban-client reload
 +
 +</​code>​
 +
 +
 +Vous devriez recevoir un mail pour vous indiquer que le service fail2ban a redémarré.
 +
 +
 +Pour voir l'​état de la prison ssh:
 +
 +
 +<​code>#​ 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
 +
 +</​code>​
 +===== Logs Fail2ban =====
 +
 +
 +Le fichier de log de Fail2ban par défaut (cf fail2ban.conf) est:
 +
 +
 +<​code>/​var/​log/​fail2ban.log
 +
 +</​code>​
 +
 +
 +Il est possible de modifier son niveau de verbosité dans le fichier /​etc/​fail2ban/​fail2ban.{conf,​local}:​
 +
 +
 +<​code>​loglevel = 4
 +
 +</​code>​
 +
 +
 +\\ 
 +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:
 +
 +
 +<​code>#​ iptables -L
 +...
 +**Chain fail2ban-ssh** </​font>​ (1 reference) ​
 +target ​    prot opt source ​  ​destination ​
 +**DROP ​  ​all ​ --** </​font>​ **XX.YY.WWW.ZZZ** </​font>​ **anywhere** </​font>​ RETURN ​    ​all ​ --  anywhere ​  ​anywhere
 +...
 +
 +</​code>​
 +Il y a trois méthodes pour débloquer une adresse ip :
 +
 +
 +<​code>​iptables -D **nom_de_la_chaine** </​font>​ **numéro_de_la_ligne** </​font>​ iptables -D **fail2ban-ssh** </​font>​ **1** </​font>​ iptables -D INPUT -s **XX.YY.WWW.ZZZ** </​font>​ -j DROP
 +
 +</​code>​
 +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:
 +
 +
 +<​code>#​ fail2ban-client restart
 +
 +</​code>​