Table de Matieres
I. Présentation
Dans ce tutoriel, nous allons apprendre à paramétrer un envoi de mail lors d’une connexion SSH à un serveur Linux. Cela peut être une solution simple et rapide pour savoir quand quelqu’un se connecte à votre serveur et cela en temps quasi réel (le temps d’envoi d’un mail). Nous allons voir que cette méthode peut s’appliquer à tous les utilisateurs se connectant en SSH,le plus intéressant à faire étant pour root car cela permet de superviser les connexions en SSH pour root et ainsi de détecter si il y a des connexions anormales.
II. Le fichier .bashrc
Chaque utilisateur possède un fichier « .bashrc » dans son « home » qui peut contenir, entre autre, des commandes exécutées lors de l’initialisation de son shell (ce qui se passe lors d’une connexion SSH). C’est de ce fichier que nous allons nous servir pour effectuer notre envoi de mail. Il suffit donc juste d’y placer les bonnes commandes.
Note: On par ici du principe que votre serveur est capable d’envoyer des mails.
III. Un utilisateur spécifique
Nous voulons par exemple qu’à chaque connexion SSH pour l’utilisateur « root », un mail nous soit envoyé directement. Nous allons donc aller dans le fichier « /root/.bashrc » (« /root » étant le « home » du super-utilisateur) et y ajouter cette commande :
echo 'NOTIFICATION - Acces SSH en '` id | cut -d "(" -f2 | cut -d ")" -f1`' sur '`hostname`' le: ' `date` `who` | mail -s "NOTIFICATION - Connexion en "`id | cut -d '(' -f2 | cut -d ')' -f1`" via SSH depuis: `who | cut -d"(" -f2 | cut -d")" -f1`" < adresse mail >
Nous allons maintenant détailler un peu cette commande :
On distingue d’abord deux grandes parties, « echo » et « mail » séparées par un pipe (« | »). La première commande servant à écrire le contenu du mail et la deuxième à l’envoyer en précisant son objet et son destinataire.
- ‘` id | cut -d « ( » -f2 | cut -d « ) » -f1`‘ ( attention aux accents et apostrophes qui permettent d’isoler la commande du texte ! ): Cette commande permet 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 ».
- `who | cut -d »( » -f2 | cut -d ») » -f1` ( attention aux accents et apostrophes qui permettent d’isoler la commande du texte ! ): Cette commande permet de 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 ».
- « date » qui permet d’affiche la date et l’heure de la connexion ce qui peut toujours être utile
- « hostname » qui permet de récupérer le nom de l’hôte .
On ajoute bien sur à l’adresse mail de destination pour finir la commande. Nous aurons donc un résultat comme celui-ci :
IV. Tous les utilisateurs
Le fichier « /etc/bash.bashrc » permet d’effectuer les modifications que l’on y met sur tous les fichiers « .bashrc » des utilisateurs. C’est une manière d’éviter de modifier chaque fichier « .bashrc » à la main. Les envois de notifications se feront donc pour toutes les connexions SSH de tous les utilisateurs. Il faut donc y mettre la même commande que précédemment .
Hébergez votre site à partir de 2$ sur 👉👉👉 https://www.tnctech.ca