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

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

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 !

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 : l’adresse e-mail de l’expéditeur, ici au format « (email protected)« 
expediteur="`hostname`(email protected)"
  • destinataire : l’adresse e-mail du destinataire
destinataire="(email protected)"
  • objet : l’objet de l’e-mail, ici au format «  – Connexion SSH« 
objet="`hostname` - Connexion SSH"
  • body : le corps de l’e-mail, avec diverses informations dont l’adresse IP de l’hôte distant (via $PAM_RHOST), ainsi que le nom de l’utilisateur qui s’est connecté (via $PAM_USER)
body="

Serveur `hostname` – Nouvelle connexion SSH

– Hôte distant : $PAM_RHOST
– Utilisateur : $PAM_USER
– Date : `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`(email protected)"
destinataire="(email protected)"
objet="`hostname` - Connexion SSH"
body="

Serveur `hostname` – Nouvelle connexion SSH

– Hôte distant : $PAM_RHOST
– Utilisateur : $PAM_USER
– Date : `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 :

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

Hébergez votre site à partir de 2$ sur 👉👉👉 https://www.tnctech.ca

À propos Santana

Analyste en cybersécurité avec 5 ans d'expérience dans la protection des systèmes d'information contre les menaces et les attaques. Expertise dans la surveillance des réseaux, l'analyse des vulnérabilités, et la gestion des incidents de sécurité. Passionnée par l'innovation technologique et la mise en œuvre de solutions de sécurité robustes pour protéger les données sensibles et assurer la conformité réglementaire.

Vérifiez également

Linux : configuration d’un espace de stockage sécurisé avec SFTP

Linux : configuration d’un espace de stockage sécurisé avec SFTP

Table de Matieres1 I. Présentation2 II. Préparation du serveur2.1 A. Configuration du réseau2.2 B. Vérification …

Linux : comment éviter d’entrer sa passphrase à chaque utilisation d’une clé SSH ?

Linux : comment éviter d’entrer sa passphrase à chaque utilisation d’une clé SSH ?

Table de Matieres1 I. Présentation2 II. Prérequis3 III. Vérifier la présence de la clé SSH4 …

Utilisation des montages SSHFS sécurisés sur GNU/Linux

Utilisation des montages SSHFS sécurisés sur GNU/Linux

Table de Matieres1 I. Présentation2 II. Installation de SSHFS3 III. Utilisation de SSHFS4 IV. Conclusion …

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.