Dans ce tutoriel, nous allons apprendre à paramétrer un envoi de mail lors d’une connexion SSH à un serveur Linux.
Présentation
Cette solution simple et rapide vous permettra de savoir si quelqu’un se connecte à votre serveur en temps quasi réel (le temps d’envoi d’un mail).
Cette méthode peut s’appliquer à tous les utilisateurs se connectant en SSH.
Le plus intéressant à configurer est l’utilisateur root car cela permet de superviser les connexions en SSH pour root et ainsi de détecter s’il y a des connexions anormales.
Le fichier .bashrc
Chaque utilisateur possède un fichier .bashrc dans son dossier home qui peut contenir, entre autres, des commandes exécutées lors de l’initialisation de son shell.
Ce fichier est également utilisé pour configurer des alias.
C’est à partir de ce fichier dont nous allons effectuer notre envoi de mail en y plaçant les commandes adéquates dans la mesure où votre serveur sera capable d’envoyer des mails.
Un utilisateur spécifique
Nous voulons qu’à chaque connexion SSH pour l’utilisateur root, un email soit envoyé dans le but de signaler cette connexion via les commandes suivantes :
echo 'Accès SSH DE '`id | cut -d "(" -f2 | cut -d ")" -f1`' SUR : '`hostname`' LE '`date` DEPUIS `who` mail -s "NOTIFICATION - Connexion en "`id | cut -d '(' -f2 | cut -d ')' -f1`" via SSH depuis: `who | cut -d"(" -f2 | cut -d")" -f1`"<votre_adresse@email.com>
On édite donc le fichier .bashrc de l’utilisateur root pour y inclure nos commandes :
echo 'Accès SSH DE '` id | cut -d "(" -f2 | cut -d ")" -f1`' SUR : '`hostname`' LE '`date` via SSH depuis: `who` | mail -s "NOTIFICATION - Accès SSH "`id | cut -d '(' -f2 | cut -d ')' -f1`"DEPUIS `who | cut -d"(" -f2 | cut -d")" -f1`"<votre_adresse@email.com> > /home/root/.bashrc
Veillez à bien conserver les quotes et apostrophes afin d’isoler la commande et le texte.
Commande pour de récupérer les informations de l’utilisateur (UID, GID et nom) avec « id » puis de couper la chaine en sortie pour ne récupérer que le nom de l’utilisateur et l’afficher dans le mail avec cut.
Commande pour récupérer les informations sur les sessions en cours avec who utilisé un peu plus tôt également et de couper la sortie pour ne récupérer que l’IP source de la connexion avec cut.
Commande d’affichage de la date et l’heure de la connexion.
Commande contenant le nom de l’hôte.
Commande d’envoi d’email
Ecriture sur le fichier /home/root/.bashrc
L’email reçu sur l’adresse fournie aura la forme suivante :
Objet: NOTIFICATION - Connexion en ROOT via SSH depuis: 192.168.1.100 Accès SSH DE root SUR jn-community LE mardi 27 juin 2017, 13:01:23 (UTC+0200) DEPUIS root pts/0 2017-06-27 13:01 (192.168.1.100)
Tous les utilisateurs
Le fichier /etc/bash/.bashrc permet d’apporter une seule modification qui sera prise en compte par tous les fichiers .bashrc des utilisateurs.
Les notifications seront envoyées pour les connexions SSH de tous les utilisateurs.
Nous utiliserons donc la même commande que précédemment vers un fichier différent :
echo 'Accès SSH DE '` id | cut -d "(" -f2 | cut -d ")" -f1`' SUR : '`hostname`' LE '`date` via SSH depuis: `who` | mail -s "NOTIFICATION - Accès SSH "`id | cut -d '(' -f2 | cut -d ')' -f1`"DEPUIS `who | cut -d"(" -f2 | cut -d")" -f1`"<votre_adresse@email.com> > /etc/bash/.bashrc