Fail2banDans un précédent article, j’ai décrit en détail l’installation et la configuration de Fail2ban pour contrer les attaques en force brute en protégeant le service SSH. Nous pouvons procéder de même pour protéger notre serveur mail fraîchement installé. En effet, un coup d’œil dans /var/log/maillog révèle toute une série de tentatives d’identification visant à casser le mot de passe, sans doute dans l’optique d’utiliser notre serveur à des fins de spam.

Voici à quoi ressemble notre fichier de configuration de Fail2ban dans l’état actuel des choses :

# /etc/fail2ban/jail.d/custom.conf

[DEFAULT]
bantime = 24h 
ignoreip = 88.161.127.222 163.172.81.8

[sshd]
enabled = true

Jetez un œil dans le répertoire /etc/fail2ban/filter.d. Deux fichiers sont d’un intérêt particulier pour nous :

  • postfix.conf
  • dovecot.conf

Ne vous laissez pas impressionner par la syntaxe à coucher dehors utilisée dans ces deux fichiers. Non, ce n’est pas le chat qui a marché sur le clavier. Ce sont là des expressions régulières servant à définir toute une série de règles de filtrage. Heureusement pour nous, on dispose également de quelques indications lisibles pour les utilisateurs communs mortels :

# Parameter `mode` - `normal` or `aggressive`.
# Aggressive mode can be used to match log-entries like:
#   'no auth attempts', 'disconnected before auth was ready', 
#   'client didn't finish SASL auth'.
# Note it may produce lots of false positives on misconfigured MTAs.
# Ex.:
# filter = dovecot[mode=aggressive]
mode = normal

Ce qu’il faut comprendre ici, c’est que les filtres prédéfinis pour Postfix et Dovecot sont prêts à l’emploi, et il suffit de définir le degré de rigueur avec laquelle elles seront appliquées.

Pour commencer, on peut déjà ajouter deux stances comme ceci :

# /etc/fail2ban/jail.d/custom.conf
  
[DEFAULT]
bantime = 24h
ignoreip = 88.161.127.222 163.172.81.8

[sshd]
enabled = true

[postfix]
enabled = true
mode    = normal

[dovecot]
enabled = true
mode    = normal

Prendre en charge la nouvelle configuration :

# systemctl reload fail2ban

Affichez l’état de service de Fail2ban :

# fail2ban-client status
Status
|- Number of jail:      3
`- Jail list:   dovecot, postfix, sshd

Affichez la liste des adresses IP bannies :

# fail2ban-client status postfix
Status for the jail: postfix
|- Filter
|  |- Currently failed: 17
|  |- Total failed:     17
|  `- Journal matches:  _SYSTEMD_UNIT=postfix.service
`- Actions
   |- Currently banned: 5
   |- Total banned:     5
   `- Banned IP list:   92.118.39.240 193.23.160.70 45.129.14.179 80.94.95.170 
                        2.57.122.158
# fail2ban-client status dovecot
Status for the jail: dovecot
|- Filter
|  |- Currently failed: 18
|  |- Total failed:     18
|  `- Journal matches:  _SYSTEMD_UNIT=dovecot.service
`- Actions
   |- Currently banned: 7
   |- Total banned:     7
   `- Banned IP list:   2.57.122.158 193.23.160.70 92.118.39.240 80.94.95.170 
                        103.176.4.78 104.156.155.22 45.129.14.179

Le cas échéant, vous pouvez définir une application plus stricte des règles :

[postfix]
enabled = true
mode    = extra

[dovecot]
enabled = true
mode    = aggressive

ImportantDans ce cas, il faudra être particulièrement vigilant avec les faux positifs. Dans notre lycée local, ça m’est déjà arrivé que dans la pause, tout le monde ouvre son Thunderbird en même temps pour vérifier ses mails, et tout d’un coup plus rien ne fonctionne. C’est que Fail2ban en mode aggressive a interprété toutes ces connexions simultanées en provenance de la même adresse IP comme une attaque de déni de service et a carrément blacklisté l’IP de l’école dans le pare-feu. Bonne chance pour retrouver la cause de la panne dans un cas de figure pareil.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : SécuritéServeur

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *