Fail2ban permet de scanner les fichiers de logs et de bannir certaines IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification. On peut ainsi limiter les attaques sur certains ports.
On va voir ici comment connecter fail2ban à shorewall qui bannira les IP pour un temps donné.
Installation et configuration
Installation
# apt-get install fail2ban
Configuration
On commence avec le fichier /etc/fail2ban/fail2ban.conf :
#Fail2Ban configuration file
[Definition]
loglevel = 3
logtarget = /var/log/fail2ban.log
socket = /var/run/fail2ban/fail2ban.sock
[MAIL]
enabled = true
host = localhost
port = 25
user =
password =
from = fail2ban-kooka@cheramy.name
to = root
localtime = true
subject = [Fail2Ban - kooka - server] <section>: Banned <ip>
message = Hi,<br> The IP <ip> has just been banned by Fail2Ban after <failures>
attempts against <section>.<br> Regards,<br> Fail2Ban
On définit ici quelques paramètres de base et la section mail défini les données pour l'envoi des mails lors des banissements.
ATTENTION : le message doit tenir sur une seule ligne.
On définit maintenant la conf du banissement et les règles pour le protocol ssh dans le fichier jail.conf :
# Fail2Ban configuration file.
[DEFAULT]
ignoreip = 127.0.0.1
bantime = 86400
maxretry = 6
backend = polling
destemail = root@localhost
banaction = shorewall
mta = sendmail
protocol = tcp
action_=%(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
action_mw=%(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s]
action_mwl=%(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s]
action = %(action_mw)s
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 9
On définit ici une liste de serveurs qui passent au travers de fail2ban.
banaction permet définir l'action de banissement, ici shorewall.
bantime définit le temps de banissement, ici 1 journée
Ensuite on paramètre les options pour le protocole ssh, on définit qu'au bout de 9 tentatives d'authentification infructueuses l'adresse IP sera bannie.
On peut maintenant redémarrer fail2ban pour qu'il prenne notre configuration en compte :
# /etc/init.d/fail2ban start
Obtenir des infos
# 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