fail2ban et shorewall

modifié le : 13 septembre 2022,
par Guillaume Chéramy
 

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