Être notifié instantanément via son smartphone / ordinateur des connexions SSH sur un serveur

Push notifications Fail2Ban

Pushbullet est un service permettant l'envoi de notification "Push" entre ses appareils mobiles et ordinateurs, via des applications et des extensions dédiées.

Daniel Colson a développé in script Bash, permettant d'envoyer des notifications Push directement depuis la ligne de commande vers son smartphone ou son ordinateur.
J'ai alors eu l'idée d'implementer ce script à un filtre Fail2Ban, afin d'être notifié immédiatement lors d'une connexion SSH réussie à un serveur.

notification connection SSH sur son mobile fail2ban

Pour implémenter ces notifications, il vous faudra :

  • Un accès root sur votre serveur
  • Des connaissances sur le fonctionnement de Fail2Ban
  • Fail2Ban installé et opérationnel sur votre serveur
  • Un compte Pushbullet avec une clé API ("Access Token" dans les paramètres du compte)
  • L'application sur votre téléphone Android/iOS, sur votre PC/Mac, ou sur Chrome/Firefox/Safari/Opera via les extensions officielles
  • Le script Bash pour envoyer les notifications depuis la ligne de commande
  • Le filtre et l'action personnalisée pour Fail2Ban détaillés ci-dessous.

Ces explications s'appliquent à Debian 7, il faudra peut être effectuer quelques modifications sur les autres distributions.

Configuration de Pushbullet

Après avoir créé votre compte Pushbullet et récupéré votre clé API, connectez-vous sur votre serveur, passez en utilisateur root, et executez les commandes suivantes pour récuperer le script Bash :

# mkdir -p Scripts && cd Scripts
# git clone https://github.com/Red5d/pushbullet-bash.git

Fail2Ban étant exécuté avec par l'utilisateur root, il faut créer le fichier de configuration de Pushbullet dans le dossier /root :

# cd /root
# mkdir -p .config
# vi .config/pushbullet

Ajoutez alors la ligne suivante

API_KEY=votre_clé_personnelle

puis enregistrez et quittez.

Vous devriez dorénavant pouvoir envoyer des notifications à tous vos appareils depuis la ligne de commande :

# echo "Ceci est une notification de test" | /root/Scripts/pushbullet-bash/pushbullet push all note "Notification de test"

Configuration de Fail2Ban

Attention : de mauvaises modifications peuvent faire planter votre installation de Fail2Ban. N’hésitez pas à faire des copies de sauvegardes des fichiers avant de les modifiés.

Pour configurer Fail2Ban, il faudra éditer 3 fichiers :

  • /etc/fail2ban/jail.local (le fichier de configuration de Fail2Ban)
  • /etc/fail2ban/filter.d/sshd-notify.conf (le filtre qui récupère les connexions SSH réussies)
  • /etc/fail2ban/action.d/ssh-push-notify.conf (l'action exécutée lors d'une connexion réussie)

Dans le fichier jail.local, ajouter le bloc suivant :

[ssh-notify]
enabled = true
filter = sshd-notify
action = ssh-push-notify[name=SSH]
maxretry = 1
bantime = 1
logpath = /var/log/auth.log

(si ce fichier n'existe pas, faite une copie du fichier jail.conf en jail.local, mais n'éditez pas le fichier jail.conf)

Créez le fichier sshd-notify.conf dans le dossier filter.d et ajoutez les lignes suivantes :

[Definition]
failregex = Accepted [-/\w]+ for .* from
ignoreregex =

Enfin, créez le fichier ssh-push-notify.conf dans le dossier action.d et ajoutez les lignes suivantes :

[Definition]
actionstart = /root/Scripts/pushbullet-bash/pushbullet push all note "Fail2Ban SSH-Notify started"
actionstop = /root/Scripts/pushbullet-bash/pushbullet push all note "Fail2Ban SSH-Notify stopped"
actioncheck =

actionban = echo "Hi,
The IP \<ip> just connect to \ via SSH\n
Here are more information about :\n\n
`whois `\n\n
" | /root/Scripts/pushbullet-bash/pushbullet push all note
actionunban =

[Init]
# Default name of the chain
#
name = default

# Server name
host=yourhostname

"actionstart" et "actionstop" permettent d'envoyer une notification lors du démarrage et de l'arrêt de Fail2Ban.

"actionban" est l'action exécuté lors de la détection d'une connexion SSH réussie. Ici, dans le contenu de la notification, on envoi l'IP qui s'est connectée, ainsi que le "whois" associé.
Par sécurité, il est préférable de ne pas envoyer d'informations sensibles, comme le nom d'utilisateur.

Le paramètre "all" dans chacune des actions permet d'envoyer la notification à tous les appareils liés au compte Pushbullet. Vous pouvez envoyer ces notifications à un seul appareil.

"actionunban" n'est pas utile dans notre cas d'utilisation.

N'oubliez pas de remplacer le "host" par le nom de votre serveur.

Vous pouvez maintenant redémarrer Fail2Ban :

# service fail2ban restart

Vous devriez alors recevoir une notification "Fail2Ban SSH-Notify started", et vous recevrez dorénavant une notification à chaque connexion SSH réussie.

N’hésitez pas à faire part de vos remarques en commentaire.

Soyez le premier à commenter l'article "Être notifié instantanément via son smartphone / ordinateur des connexions SSH sur un serveur"!

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués *