Sécurité du serveur : fail2ban (Serveur Web sur Debian Lenny)

Publié le

UPDATE : voir la version à jour pour Debian Squeeze.

 

fail2ban est utilisé pour lire les log de tous les autres démons et bannir des adresses IP s'ils ont échoués à plusieurs reprises de se connecter.
On installe simplement par apt :

apt-get install fail2ban

Puis on configure fail2ban dans /etc/fail2ban/jail.conf

bantime  = 600
destemail = server@domain.tld
action = %(action_mwl)s

[postfix]
action   = %(action_)s
bantime  = 3600

De cette façon, on recevra un email lorsque fail2ban fera une action quelconque. Il a été désactivé pour postfix car les emails étaient très très nombreux !!!
Ensuite, activez les démons que vous désirez. Dans notre installation, il s'agit de pam-generic, vsftpd, postfix, apache, apache-noscripts, apache-overflows et sasl : il suffit de mettre enabled à true dans les sections concernés.

Il existe aussi une attaque sur le serveur Apache qui envoie des requêtes étranges sur la racine du serveur en cherchant un fichier commencant par w00tw00t. Nous pouvons bannir aussi les IP qui effectuent ces requêtes en ajoutant le fichier /etc/fail2ban/filter.d/apache-w00tw00t.conf :

# - - [29/Apr/2008:22:54:08 +0200] "GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 326

[Definition]
# Option:  failregex
# Notes.:  regex to match the w00tw00t scan messages in the logfile. The
#          host must be matched by a group named "host". The tag "" can
#          be used for standard IP/hostname matching.
# Values:  TEXT
failregex = ˆ -.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*".*

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
ignoreregex =

Puis il faut activer ce filtre dans /etc/fail2ban/jail.conf en ajoutant :

[apache-w00tw00t]
enabled = true
filter  = apache-w00tw00t
port = all
banaction = iptables-allports
port     = anyport
logpath  = /var/log/apache*/access.log
maxretry = 1
bantime = 86400


En plus, je me suis aperçu que de nombreux spammeurs essayaient d'envoyer des emails à des adresses inexistantes. Par défaut, le filtre de fail2ban ne banni que les emails rejeté par le serveur (erreur 554) et pas les emails rejeté pour une adresse inexistante. c'est pour cela qu'on édite le fichier /etc/fail2ban/filter.d/postfix.conf pour simplement supprimé le 4 de failregex = reject: RCPT from (.*)\[\]: 55 pour bannir n'importe quelle erreur.

Et pour finir, on recharge le démons pour prendre en compte nos changements :

/etc/init.d/fail2ban force-reload

Maintenant que notre serveur fonctionne avec les démons que l'on veut, si on monitorait pour avoir quelques stats et outils ?

Retour au sommaire.