PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Linux : recevoir un e-mail lors d’une connexion SSH

mardi 8 mars 2022 à 10:00

I. Présentation

Dans ce tutoriel, nous allons voir comment configurer un serveur Linux afin de recevoir une notification par e-mail lorsqu'une connexion SSH est ouverte. Pour ma part, je vais utiliser une machine sous Debian 11, mais cela peut s'appliquer à d'autres distributions.

Cette notification par e-mail me semble pertinente pour surveiller l'activité de son serveur Linux et être avertie lorsqu'une personne se connecte sur le serveur via SSH. Lorsqu'il y a de très nombreuses connexions sur une machine, on peut douter de la nécessité et de la pertinence de ces notifications, mais lorsque l'accès est limité à une personne ou un groupe de quelques personnes, je trouve que c'est pertinent.

Si le sujet vous intéresse et que vous souhaitez le mettre en place sur votre serveur Linux, alors suivez le guide !

II. Comment allons-nous procéder ?

Au moment de s'authentifier sur un hôte Linux, le système d'authentification PAM entre en jeu afin de permettre à l'application (ici SSH) d'authentifier l'utilisateur sur le système. À partir du moment où SSH est installé sur le serveur, il crée le fichier "/etc/pam.d/sshd" : c'est dans ce fichier que nous allons ajouter un appel "pam_exec", ce dernier étant un module PAM qui permet d'exécuter une commande externe, ici notre script Bash.

Dans un premier temps, nous allons créer le script, puis ensuite nous allons le déclarer dans ce fichier. Une fois que ce sera fait, il ne restera plus qu'à tester.

Votre serveur doit être capable d'envoyer des e-mails, donc vous devez configurer un relais SMTP local si nécessaire (postfix, msmtp, etc.).

Remarque : vérifiez bien votre configuration, et assurez-vous d'avoir un autre moyen de connexion au serveur, car si le script n'est pas correct, ou que le fichier "pam.d/sshd" n'est pas correctement modifié, vous pouvez faire planter l'authentification via SSH.

III. Script bash - Alerte e-mail SSH

Enregistrez ce script où vous le souhaitez sur votre machine Linux. Vous pouvez créer un dossier spécifique pour les scripts liés à PAM, au moins ce sera organisé :

sudo mkdir /etc/pam.scripts

Créez le script dans votre dossier et modifiez-le avec votre éditeur préféré.

nano /etc/pam.scripts/ssh-alert.sh

Ce script commence bien sûr par le shebang, en l'occurrence ici celui de Bash. Ensuite, nous allons déclarer plusieurs variables :

expediteur="`hostname`-ssh@domaine.fr"
destinataire="florian@domaine.fr"
objet="`hostname` - Connexion SSH"
body="<h2><b>Serveur `hostname` - Nouvelle connexion SSH</b></h2><br><b>- Hôte distant : </b>$PAM_RHOST<br><b>- Utilisateur : </b>$PAM_USER<br><b>- Date : </b>`date`"

Bien sûr, vous pouvez adapter le contenu de ces variables comme bon vous semble. L'e-mail sera envoyé au format HTML, ce qui permet d'utiliser les balises HTML pour mettre en forme l'e-mail, ajouter de la couleur, etc... Ensuite, ce script va contenir une condition if pour envoyer l'e-mail dans le cas où la session est ouverte, ce qui correspond à "open_session".

Voici le script "ssh-alert.sh" :

#!/bin/bash

expediteur="`hostname`-ssh@domaine.fr"
destinataire="florian@domaine.fr"
objet="`hostname` - Connexion SSH"
body="<h2><b>Serveur `hostname` - Nouvelle connexion SSH</b></h2><br><b>- Hôte distant : </b>$PAM_RHOST<br><b>- Utilisateur : </b>$PAM_USER<br><b>- Date : </b>`date`"

if [ ${PAM_TYPE} = "open_session" ]; then
    echo "${body}" | /usr/bin/mail -r "${expediteur}" -s "${objet}" "${destinataire}" -a "Content-Type: text/html"
fi
exit 0

Enregistrez le script, et attribuez-lui les droits qui vont bien :

chmod 700 /etc/pam.scripts/ssh-alert.sh
chmod +x /etc/pam.scripts/ssh-alert.sh

IV. Ajouter du script à pam.d/sshd

Le script est prêt, nous devons le déclarer dans le fichier "/etc/pam.d/sshd" :

nano /etc/pam.d/sshd

Tout à la fin, ajoutez le contenu suivant, basé sur pam_exec comme je l'évoquais précédemment (adaptez le chemin vers le script si besoin).

# Notification en cas de connexion SSH
session  required  pam_exec.so  /etc/pam.scripts/ssh-alert.sh

Enregistrez et fermez le fichier. Il ne reste plus qu'à tester.

V. Tester la notification par e-mail

C'est l'étape la plus simple : connectez-vous à votre serveur via SSH et vous devriez recevoir une notification par e-mail ! Le contenu du message sera semblable à celui-ci :

Notification e-mail SSH

Libre à vous d'adapter ce script afin de le personnaliser ! Mais, vous pouvez constater que cela fonctionne bien ! 🙂

The post Linux : recevoir un e-mail lors d’une connexion SSH first appeared on IT-Connect.