(modifié le 10 juillet 2015 à 22:31)

alerte-email-connexion-sshUne connexion SSH permet d'administrer un serveur, Linux dans la plupart des cas. Cette connexion s'effectue grâce à un login et un mot de passe associé, généralement root (bien que le login root frontal soit déconseillé).

Si vous hébergez votre site/blog sur un serveur de type mutualisé ou dédié vous avez la possibilité de gérer ce serveur à distance via SSH. Autant dire que si une personne non autorisée se connecte sur votre serveur, il est libre de littéralement détruire toutes vos données ainsi que le système.

Il se peut parfois que l'on vous ait volé vos identifiants et que rien ne soit passé sur votre serveur, que l'attaquant attende un moment opportun pour attaquer ou collecter certaines de vos données. Et dans ce cas vous n'en saurez rien !

Je vous propose de mettre une place une notification par email (alerte) à chaque connexion effectuée sur votre serveur. Vous serez ainsi averti en temps réel de cette intrusion indésirable, à condition de consulter votre email régulièrement.

En pratique

A chaque connexion un fichier contenant des commandes est appelé, il s'agit du fichier .bashrc. Ce fichier est présent à la racine de chaque profil utilisateur Linux.

Éditez le fichier avec l'éditeur de votre choix (nano pour moi) :

nano ~/.bashrc

Se placer à la fin du fichier et ajouter le code suivant :

# notification email de chaque connexion ssh
 echo 'NOTIFICATION - Acces SSH en ROOT sur `hostname` le:' `date` `who` | mail -s "NOTIFICATION - Connexion en ROOT via SSH depuis: `who | cut -d"(" -f2 | cut -d")" -f1`" votre@email.com

En remplaçant votre adresse email en fin de ligne.

Si vous souhaitez envoyer le mail en copie à un second email :

# notification email de chaque connexion ssh
 echo 'NOTIFICATION - Acces SSH en ROOT sur `hostname` le:' `date` `who` | mail -s "NOTIFICATION - Connexion en ROOT via SSH depuis: `who | cut -d"(" -f2 | cut -d")" -f1`" votre@email.com -c second@email.com

Voici un exemple de notification reçue :

notification-email

Déconnecter un utilisateur SSH

Si vous recevez une notification de connexion et que celle-ci ne vous semble pas autorisée à se connecter sur votre serveur, il vous faut réagir.

Lister toutes les connexions SSH utilisez la commande who:

server # who
 root     pts/0        2009-10-24 15:17 (lns-bzn-20-82-55-3-2.adsl.proxad.net)

La date et l'heure sont celles de la connexion.

Si vous n'obtenez qu'une seule ligne alors c'est vous même qui êtes connecté et personne d'autre, vous pouvez retourner à vos occupations sans souci. En revanche, si deux lignes ou plus apparaissent c'est que vous n'êtes pas la seule personne connectée sur votre serveur.

Changer tout d'abord le mot de passe du compte concerné :

server # passwd nom_du_compte

A chaque connexion SSH le démon SSHD déclenche un processus, lui même identifié par un numéro de processus (PID). Il vous suffit de tuer le processus correspondant à cette connexion pour déconnecter l'utilisateur. Listons tous les processus correspondants à SSHD :

server # ps aux | grep sshd
 root     31115  0.0  0.0   8152  2472 ?        Ss   15:16   0:00 sshd: root@notty

Dans notre cas il s'agit du PID 31115. Tuons le processus pour déconnecter l'utilisateur avec la commande kill -9 :

kill -9 31115

Conclusion

Ce système permet d'être averti en cas d'intrusion sur votre serveur, vous pouvez d'ailleurs utilisez des méchanismes d'avertissement par SMS si vous ne pouvez consulter vos mails en permanence.

Dans le cas où vous travaillez à plusieurs administrateurs sur un serveur, cela permet également d'avoir un historique de connexion.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter