Comment être averti des connexions SSH sur Linux
Apprenez à configurer les notifications de connexion SSH sur Linux et recevez des alertes en temps réel chaque fois que quelqu'un se connecte à votre serveur.
Savoir qui se connecte et quand à votre serveur Linux via SSH est toujours une bonne idée. Même si vous êtes le seul à y avoir accès, il est recommandé de surveiller les connexions. Pour les équipes ou les systèmes en production, être informé des connexions SSH ajoute une couche supplémentaire de vigilance et de sécurité.
C'est pourquoi, dans ce guide, je vais vous montrer une façon simple de mettre en place des notifications de connexion SSH, ce qui vous offre une tranquillité d'esprit supplémentaire en fournissant des informations en temps réel sur qui accède à votre serveur.
Comment activer les alertes de connexion SSH en utilisant PAM
PAM (Module d'Authentification Plug-in) est le moyen le plus fiable et sans friction pour déclencher un hook exactement lorsque une session SSH s'ouvre (et se ferme). Voici comment cela fonctionne.
Lorsque quelqu'un se connecte via SSH, le système demande des instructions à PAM. En général, PAM vérifie les mots de passe, les clés ou l'authentification à deux facteurs (2FA), mais nous pouvons aussi lui dire : « À chaque fois qu'une nouvelle session SSH démarre, exécutez ce script. » De cette manière, le script obtient des informations utiles comme le nom d'utilisateur et l'adresse IP, et peut immédiatement vous envoyer une notification — sans avoir besoin d'analyser les journaux ou de lancer des démons supplémentaires. Voici comment procéder.
Avec votre éditeur de texte préféré dans le terminal, éditez « /etc/pam.d/sshd » et ajoutez après les lignes existantes « session » ce qui suit :
session optional pam_exec.so /usr/local/bin/ssh-login-notify.shDonc, la version finale ressemble à ceci :
sudo nano /etc/pam.d/sshdEnregistrez le fichier et quittez. Maintenant, créons le script lui-même. Il s'exécutera à chaque fois qu'une connexion SSH réussit, grâce à la configuration PAM SSH que nous venons de mettre en place. La seule chose que vous devez vraiment déterminer ici est le type de notification que vous souhaitez configurer.
Je mentionne cela parce qu'il existe de nombreuses façons de le faire. Par exemple, si vous utilisez déjà un système de notifications auto-hébergé, tel que Ntfy ou Gotify, ou un système public comme Pushover, vous pouvez vous y connecter directement. Une autre option est Apprise, qui fonctionne avec presque tous les services de notification populaires disponibles. Vous pourriez également opter pour Telegram, Discord, Slack, ou une plateforme similaire.
En résumé, les possibilités sont presque infinies — tout dépend vraiment du service que vous préférez. Cependant, pour simplifier les choses dans ce guide, je vais vous montrer l’une des configurations les plus simples : envoyer une notification par e-mail en utilisant le SMTP de Gmail.
Tout d'abord, installons les prérequis. Si vous utilisez une distribution basée sur DEB (Debian, Ubuntu, etc.), exécutez :
sudo apt install msmtp msmtp-mta bsd-mailxPour ceux basés sur RPM (Fedora, Alma, Rocky, etc.) :
sudo dnf install msmtp msmtp-mta mailxComme vous pouvez le voir, nous allons utiliser msmtp, un outil en ligne de commande léger et simple pour envoyer des e-mails en les relayant vers un serveur de messagerie configuré. Dans notre cas, le SMTP de Google. Créez un fichier « /etc/msmtprc » et collez-y ce qui suit :
# Global defaults
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
# Gmail account
account gmail
host smtp.gmail.com
port 587
from YOUR_GMAIL_ADDRESS@gmail.com
user YOUR_GMAIL_ADDRESS@gmail.com
passwordeval "cat /root/.gmail_app_password"
# Set default
account default : gmailBien sûr, remplacez « YOUR_GMAIL_ADDRESS@gmail.com » par votre adresse réelle. Maintenant, concentrons-nous sur une option « passwordeval ». Comme vous pouvez le voir, elle pointe vers un fichier « /root/.gmail_app_password ». Étant donné que Google n'autorise plus les applications ou scripts tiers à se connecter en utilisant votre mot de passe Gmail habituel, vous devez créer un mot de passe d’application à l’avance — un jeton spécial de 16 caractères qui permet d’accéder à votre compte Gmail.
Pour ce faire, cliquez sur votre photo de profil en haut à droite de votre compte Google et choisissez « Gérer votre compte Google ». Dans la barre de recherche, tapez « mot de passe d'application », puis sélectionnez-le lorsqu'il apparaît. Entrez un nom pour votre nouvelle application — par exemple, « Mes notifications SMTP » — et cliquez sur « Créer ». Google générera un mot de passe de 16 caractères divisé en quatre groupes de quatre. Copiez ce code et gardez-le à portée de main.
Exécutez maintenant les commandes suivantes. Bien sûr, remplacez « YOUR_16_CHAR_APP_PASSWORD » dans la première par le code que Google vient de générer pour vous.
sudo bash -c 'echo "YOUR_16_CHAR_APP_PASSWORD" > /root/.gmail_app_password'
sudo chmod 600 /root/.gmail_app_password
sudo chown root:root /root/.gmail_app_passwordEnfin, créez le script, que PAM exécutera automatiquement chaque fois que quelqu'un se connecte avec succès à votre serveur via SSH.
sudo nano /usr/local/bin/ssh-login-notify.sh#!/bin/bash
USER="$PAM_USER"
IP="$PAM_RHOST"
HOST=$(hostname)
DATE=$(date)
RECIPIENT="you@example.com"
SUBJECT="SSH Login on $HOST"
BODY="
A new SSH login was successfully established.
User: $PAM_USER
User IP Host: $PAM_RHOST
Date: $DATE
Server: $HOST
"
if [ ${PAM_TYPE} = "open_session" ]; then
echo "$BODY" | mail -s "SSH Login Alert on $HOST" ${RECIPIENT}
fi
exit 0Ici, remplacez « you@example.com » par l'adresse e-mail à laquelle vous souhaitez que les notifications soient envoyées. Ensuite, rendez le script exécutable :
chmod +x /usr/local/bin/ssh-login-alert.shPour tester tout ce que vous avez fait jusqu'à présent, connectez-vous au serveur via SSH depuis un autre hôte. Vous devriez recevoir un e-mail à l'adresse que vous avez configurée, similaire à celui montré ci-dessous :
Si, pour une raison quelconque, vous n'obtenez pas le résultat attendu, consultez les journaux dans « /var/log/msmtp.log » pour voir ce qui a mal tourné.
Conclusion
Utiliser PAM pour déclencher des notifications de connexion SSH est une approche fiable qui s'intègre directement dans le processus d'authentification — aucun balayage de journaux ou démon en arrière-plan n'est nécessaire. Une fois configuré, cela vous permet de savoir immédiatement qui accède à votre serveur et depuis où, vous aidant à détecter rapidement toute activité non autorisée.
Pour une couche de protection supplémentaire, envisagez également un outil comme SSHGuard ou Fail2Ban. Si vous ne savez pas comment le configurer, consultez nos guides « Comment sécuriser votre serveur SSH avec SSHGuard » et « Comment protéger SSH avec Fail2Ban », qui vous expliquent le processus étape par étape. Pour aller encore plus loin, je recommande de configurer SSH avec une authentification à deux facteurs.
Enfin, évitez d'utiliser l'authentification par mot de passe. Utilisez plutôt une paire de clés SSH et connectez-vous avec elle de manière sécurisée.
Merci d'avoir pris le temps de suivre ce guide. Comme toujours, vos commentaires sont les bienvenus.


