« Fail2ban » : différence entre les versions

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
Ligne 6 : Ligne 6 :
  apt-get install fail2ban
  apt-get install fail2ban


Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien pris en compte fail2ban:
Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:


  iptables -S | grep fail2ban
  iptables -S | grep fail2ban
Ligne 20 : Ligne 20 :
=== fail2ban.conf ===
=== fail2ban.conf ===


Rien à faire dans ce fichier, vous pouvez laisser les options par défaut
Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:


  /etc/fail2ban/fail2ban.conf
  /etc/fail2ban/fail2ban.conf
Ligne 42 : Ligne 42 :


Par défaut la protection du servie SSH est activée, pas les autres:
Par défaut la protection du servie SSH est activée, pas les autres:
Si votre ssh n'est p)as sur le port 22, pensez à le changer... (port = N° de port)
Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)


  [ssh]
  [ssh]
Ligne 50 : Ligne 50 :
  logpath  = /var/log/auth.log
  logpath  = /var/log/auth.log
  maxretry = 6
  maxretry = 6
D'autres services, à activer en fonction de vos besoins:


  [xinetd-fail]
  [xinetd-fail]
Ligne 108 : Ligne 110 :
  filter  = postfix
  filter  = postfix
  logpath  = /var/log/mail.log
  logpath  = /var/log/mail.log
 
  [sasl]
  [sasl]
  enabled  = true  
  enabled  = true  
Ligne 129 : Ligne 131 :
  2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150
  2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150


Effectivement, iptables à bloquer votre ip:
Effectivement, iptables à bloqué votre ip:


  iptables -L
  iptables -L
Ligne 143 : Ligne 145 :


== Erreur au démarrage de fail2ban ==
== Erreur au démarrage de fail2ban ==
Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban ([http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162 fail2ban: fails to load iptable rules with multiple jails]) - Il existe une solution :


Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:
Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

Version du 9 août 2011 à 03:55

Qu'est-ce que Fail2ban?

Fail2ban lit des fichiers de log comme /var/log/pwdfail ou /var/log/apache/error_log et bannit les adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. Il met à jour les règles du pare-feu pour rejeter cette adresse IP. Ces règles peuvent êtres défines par l'utilisateur. Fail2ban peut lire plusieurs fichiers de log comme ceux de sshd ou du serveur Apache.

Installation

apt-get install fail2ban

Par défaut, le port 22 (ssh) est surveillé, vous pouvez vérifier que les règles ipatbles ont bien prises en compte fail2ban:

iptables -S | grep fail2ban

-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh -A fail2ban-ssh -j RETURN

Configuration

Deux fichiers:

fail2ban.conf

Rien à faire dans ce fichier, vous pouvez laisser les options par défaut:

/etc/fail2ban/fail2ban.conf
loglevel = 3
logtarget = /var/log/fail2ban.log
socket = /var/run/fail2ban/fail2ban.sock

jail.conf

Ce fichier est beaucoup plus intéressant, il contient tous les services à monitorer, et vous allez le découvrir, fail2ban ne se limite pas à SSH...

/etc/fail2ban/jail.conf

Vérifiez l'adresse d'envoi des mails d'avertissement:

[DEFAULT]
destemail = root@localhost

Pour activer la surveillance d'un service, il suffit de placer la variable "enabled" à "true"

Par défaut la protection du servie SSH est activée, pas les autres: Si votre ssh n'écoute pas sur le port 22, pensez à le changer... (port = N° de port)

[ssh]
enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6

D'autres services, à activer en fonction de vos besoins:

[xinetd-fail]
enabled   = true 
filter    = xinetd-fail
port      = all
banaction = iptables-multiport-log
logpath   = /var/log/daemon.log
maxretry  = 2
[pam-generic]
enabled = true
filter  = pam-generic
port = all
banaction = iptables-allports
port     = anyport
logpath  = /var/log/auth.log
maxretry = 6
[ssh-ddos]
enabled = true
port    = ssh
filter  = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 6
[apache]
enabled = true
port    = http,https
filter  = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6
[apache-multiport]
enabled   = true
port      = http,https
filter    = apache-auth
logpath   = /var/log/apache*/*error.log
maxretry  = 6
[apache-noscript]
enabled = true 
port    = http,https
filter  = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 6
[apache-overflows]
enabled = true 
port    = http,https
filter  = apache-overflows
logpath = /var/log/apache*/*error.log
maxretry = 2
[postfix]
enabled  = true 
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/mail.log
[sasl]
enabled  = true 
port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter   = sasl
logpath  = /var/log/mail.log

n'oubliez pas de redémarrer fail2ban :

# service fail2ban restart

Test

Vous pouvez facilement tester votre configuration: Créez par exemple un répertoire dans votre serveur apache, rendez obligatoire l'identification, puis entrez plusieurs fois de suite un mot de passe erroné. Vous devriez avoir dans vols logs ceci:

tail -f /var/log/fail2ban.log
2011-08-08 12:27:18,730 fail2ban.actions: WARNING [apache] Ban 10.9.11.150

Effectivement, iptables à bloqué votre ip:

iptables -L
Chain fail2ban-apache (1 references)
target     prot opt source               destination         
DROP       all  --  10.9.11.150          anywhere            
RETURN     all  --  anywhere             anywhere

Au bout de 10 minutes (en fonction de ce que vous aurez précisé dans le configuration), l'IP sera de nouveau "libérée":

2011-08-08 12:37:19,585 fail2ban.actions: WARNING [apache] Unban 10.9.11.150

Erreur au démarrage de fail2ban

Si vous surveillez plusieurs services, il existe un bug gênant sur fail2ban (fail2ban: fails to load iptable rules with multiple jails) - Il existe une solution :

Lorsque vous démarrerez fail2ban, surveillez ses logs, vous devriez avoir ceci:

2011-08-08 16:44:40,564 fail2ban.jail   : INFO   Jail 'apache-noscript' started
2011-08-08 16:44:40,810 fail2ban.jail   : INFO   Jail 'pam-generic' started
2011-08-08 16:44:41,051 fail2ban.jail   : INFO   Jail 'xinetd-fail' started
2011-08-08 16:44:41,269 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
2011-08-08 16:44:41,506 fail2ban.jail   : INFO   Jail 'apache-multiport' started
2011-08-08 16:44:41,739 fail2ban.jail   : INFO   Jail 'apache-overflows' started
2011-08-08 16:44:41,976 fail2ban.jail   : INFO   Jail 'ssh' started
2011-08-08 16:44:42,206 fail2ban.jail   : INFO   Jail 'postfix' started
2011-08-08 16:44:42,448 fail2ban.jail   : INFO   Jail 'sasl' started
2011-08-08 16:44:42,667 fail2ban.jail   : INFO   Jail 'apache' started

Si vous avez ce genre de message d'erreur:

2011-08-08 12:22:52,286 fail2ban.actions.action: ERROR  iptables -N fail2ban-pam-generic
iptables -A fail2ban-pam-generic -j RETURN
iptables -I INPUT -p tcp -j fail2ban-pam-generic returned 400
2011-08-08 15:06:04,467 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports 10122 -j fail2ban-ssh-ddos
iptables -F fail2ban-ssh-ddos
iptables -X fail2ban-ssh-ddos returned 100
2011-08-08 15:06:10,027 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-overflows
iptables -A fail2ban-apache-overflows -j RETURN
iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows returned 200
2011-08-08 15:06:10,224 fail2ban.actions.action: ERROR  iptables -N fail2ban-postfix
iptables -A fail2ban-postfix -j RETURN
iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 400
2011-08-08 15:06:10,283 fail2ban.actions.action: ERROR  iptables -N fail2ban-sasl
iptables -A fail2ban-sasl -j RETURN
iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl returned 200
2011-08-08 15:14:26,002 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-overflows
iptables -F fail2ban-apache-overflows
iptables -X fail2ban-apache-overflows returned 100
2011-08-08 15:14:28,374 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -j fail2ban-sasl
iptables -F fail2ban-sasl
iptables -X fail2ban-sasl returned 100
2011-08-08 15:14:45,382 fail2ban.actions.action: ERROR  iptables -N fail2ban-apache-noscript
iptables -A fail2ban-apache-noscript -j RETURN
iptables -I INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-noscript returned 400

Il existe une solution:

Faite une sauvegarde de /usr/bin/fail2ban-client auparavant...

Editez le fichier /usr/bin/fail2ban-client et ajoutez une temporisation (time.sleep(0.1)) à cet endroit:

       def __processCmd(self, cmd, showRet = True):
               beautifier = Beautifier()
               for c in cmd:
                       time.sleep(0.1)
                       beautifier.setInputCmd(c)

Si la temporisation à 0.1 ne suffit pas, mettez 0.2. et redémarrez fail2ban.

Liens externes

Je vous encourage à lire:

Lol 8 août 2011 à 09:00 (CDT)