Recevoir une notification par mail lors d'une connexion SSH (PAM)

Pour plusieurs raison il peut être intéressant pour un administrateur système d'être notifié lorsqu'une personne se connecte sur un de ses serveurs. Pour ma part j'ai opté pour l'envoi d'un mail. Du coup à chaque fois qu'une personne se connecte en SSH à un des serveurs que je supervise je reçois un mail me l'indiquant. La mise en place de ce système de notification est assez trivial puisqu'il repose sur PAM.

Pour commencer nous allons avoir besoin d'un serveur postfix que l'on installera sur le serveur à superviser via cette commande:

sudo apt install postfix mailutils

Ensuite il va falloir configurer le serveur postfix. Si vous n'avez aucun idée de comment faire je vous invite à lire ces articles: https://whiteflag.blog/books/linux/chapter/postfix

Une fois l'installation terminée nous allons pouvoir passer à la configuration de PAM. Pour rappel, PAM (Pluggable Authentication Module) est un mécanisme qui permet, sous la forme de modules, d'exécuter des actions lors d'une authentification. PAM est intéressant pour nous puisque SSH est capable de s'interphaser avec PAM.

Tout d'abord nous allons créer un répertoire dans lequel nous allons stocker le script bash responsable de l'envoi du mail:

mkdir /etc/pam.d/scripts
chmod 0755 /etc/pam.d/scripts

Dans ce répertoire nous allons créer un fichier ssh_login.sh et lui attribuer les bonnes permissions:

touch /etc/pam.d/scripts/ssh_login.sh
chmod 0700 /etc/pam.d/scripts/ssh_login.sh
chown root:root /etc/pam.d/scripts/ssh_login.sh

Enfin nous allons compléter le fichier ssh_login.sh avec ces lignes bash:

#!/bin/sh

MESSAGE="
Utilisateur: $PAM_USER\n
Adresse IP source: $PAM_RHOST\n
Date: `date`\n
Serveur: `hostname`\n    
"

if [ ${PAM_TYPE} = "open_session" ]; then
        echo ${MESSAGE} | /usr/bin/mail -s "Connexion au serveur Whiteflag" aurelien.chalot@gmx.com
fi

exit 0

Il ne nous restera plus qu'à indiquer à PAM et plus particulièrement à SSH que si une connexion est réussie alors il doit exécuter notre script ssh_login.sh. Pour cela il faudra modifier le fichier /etc/pam.d/sshd et ajouter cette ligne:

session required pam_exec.so /etc/pam.d/scripts/ssh_alert.sh

Connectez vous sur votre serveur et vous recevrez une notification sur votre boite mail: