Fail2ban : notifier chaque connexion SSH

Bien que Fail2Ban fasse correctement son travail, il peut arriver qu'une intrusion se fasse avec succès. Il peut être utile, par précaution ou aussi pour du suivi, de savoir quand quelqu'un se connecte sur SSH.

fail2ban

Si vous connaissez bien Fail2ban, vous savez que tout se fait via des actions et des filtres, donc notre objectif ne sera pas dur à atteindre. Commençons par ajouter notre filtre dans /etc/fail2ban/jail.conf :

Le formatage des mails utilisé ici est disponible sur ce billet.

[ssh-notify]

enabled  = true
filter   = sshd-notify
action   = mail-notify[name=SSH, dest=%(emailt)s, from=%(fromt)s, server=%(servert)s, serverip=%(serveript)s]
maxretry = 1
bantime  = 1
logpath  = /var/log/sshd/current
  • maxretry = 1 : Executer " actionban " à chaque connexion
  • bantime = 1 : Ne pas garder l'état de bannissement
  • logpath = .. : A modifier en fonction de votre système, journal courant des connexions SSH

Continuons avec /etc/fail2ban/filter.d/sshd-notify.conf qui contient l'expression régulière pour les connexions SSH correctement établies :

UPDATE : la regex a été mise à jour en reprenant le manuel, HOST est devenu obligatoire.

[Definition]

failregex = Accepted [-/\w]+ for .* from <HOST>

ignoreregex =

Il ne reste plus que le fichiers des actions à créer. Éditez /etc/fail2ban/action.d/mail-notify.conf :

[Definition]

actionstart =
actionstop =
actioncheck =

actionban = echo -en "***** Fail2Ban *****\n\nNotification Type: NOTIFY\n\nService: <name>\nHost: <server>\nAddress: <serverip>\nState: OK\n\nDate/Time: `date`\n\nAdditional Info:\n\n<ip>" | mail -a "From: <from>" -s "** NOTIFY alert - new connection on <server>/<name> **" <dest>

actionunban =

[Init]
# Default name of the chain
#
name = default
# Destination/Addressee of the mail
#
dest = root

Vous pouvez dès à présent redémarrer Fail2ban, désormais à chaque connexion vous devriez recevoir un email de ce genre :

ssh-fail2ban-notify

Enjoy it ;-)