En ce jour, voici un petit article orienté administration système ^^
Sans me perdre dans un long discours et ouvrir le débat sur la meilleure manière de ce protéger de hacking, je vais vous détailler ici une petite procédure très simple à mettre en place et qui pourra vous êtres très très utile dans le cadre de la sécurité de votre petit serveur dédié 🙂
Donc cette procédure consiste à mettre en place un envoi d’email automatisé lors d’une connexion SSH établit sur votre dédié, sachant que je procède à cette automatisation sur l’utilisateur le plus sensible, sur le “root” donc.
Dans la pratique, cela est exactement pareil que les emails que vous recevez quand vous vous connecté sur votre compte client ovh, firstheberg, ou de tout autre type de prestation permettant ce genre de “sécurité simple”.
Ainsi, vous serez immédiatement averti par email lors d’une connexion ssh est établit sur votre dédié, et pourrait réagir sans plus attendre si il s’avère que ce n’est pas de votre fait, ou une connexion attendue.
Nous allons d’ailleurs inclure dans ce mail un extrait de toutes les dernières connexions SSH établies avec succès ou rejetées sur votre serveur dédié.
Enfin vous avez la possibilité à ce que le mail soit envoyé automatiquement lors d’une connexion réussi au niveau du protocole SSH, ou alors un mail envoyé automatiquement par tâche planifiée.
Mise en place du script d’extraction listing des connexions SSH
Pour commencer donc, il faudra mettre en place un script qui fera une petite recherche des connexions SSH dans votre fichier de log système, dans le cas de mon exemple sous Debian, il s’agit du fichier /var/log/auth.log
A noter que dans l’exemple qui suit, je fait la manipulation pour l’utilisateur “root”, mais cette manipulation peut être faite pour tout les utilisateurs linux que vous souhaitez 🙂
Voici la liste des commandes à saisir dans le terminal =>
# cd /root nano sshcheck.sh
Copier coller ceci en adaptant la variable log bien entendu =>
echo ----- SSH LOGIN CHECK Script ---- echo ------ by WolwX @ WolwX.net ----- echo --------------------------------- echo log=/var/log/auth.log echo $log find $log | xargs grep -s "Accepted password for" echo find $log | xargs grep -s "Failed password" echo echo - Check done @ $(date +%d-%m-%y_%H:%M) echo echo -------------------------------------------- echo
Puis donner les droits d’exécution au fichier
# chmod 755 sshcheck.sh
Avant de l’exécuter pour en voir le résultat
# ./sshcheck.sh
Si vous avez bien un petit spam de ligne dans votre terminal, avec un “Check done” à la fin, c’est que tout est bon 🙂
Test d’un envoi d’email du listing
Afin de récupérer ce listing, nous allons faire appel à l’utilisation de notre application mail, ou de messagerie internet au serveur.
Voici la liste une bonne grosse commande à saisir dans le terminal afin de tester l’envoi de ce listing =>
Si votre commande d’envoi de mail passe par “/usr/lib/sendmail” :
# /root/./sshcheck.sh &> /root/sshcheck.log; (echo "From: SSH-LOGIN-ALERT@votrenomdedomaine.fr"; echo "Subject: SSH-CHECK"; cat /root/sshcheck.log) | /usr/lib/sendmail votre@email.fr; rm -rf /root/sshcheck.log;
Si votre commande d’envoi de mail passe par “mail”
/root/./sshcheck.sh &> /root/sshcheck.log; cat /root/sshcheck.log | mail -r SSH-LOGIN-ALERT@votrenomdedomaine.fr -s SSH-CHECK votre@email.fr; rm -rf /root/sshcheck.log;
Cette commande permettant dans un premier temps d’exécuter notre fichier précédemment créé, tout en renvoyant son résultat dans un petit fichier log, qui lui même sera dans un second temps envoyé par mail, et enfin dans un dernier temps le fichier log sera supprimé.
Mise en place de l’automatisation à chaque login ssh réussi
Pour avoir une notification email à chaque login ssh réussi, nous allons inclure le tout dans la config de notre utilisateur à surveiller (dans l’exemple il s’agit de “root”) afin d’être averti automatiquement.
Pour ce faire il suffit d’éditer un fichier en lui rajoutant notre précédente commande testée.
# nano /root/.bashrc
Copier coller ceci (avec la ligne # incluse) en fin de fichier =>
# Rajout fonction notification mail pour login SSH /root/./sshcheck.sh &> /root/sshcheck.log; (echo "From: SSH-LOGIN-ALERT@votrenomdedomaine.fr"; echo "Subject: SSH-CHECK"; cat /root/sshcheck.log) | /usr/lib/sendmail nomdevotreserveur@votrenomdedomaine; rm -rf /root/sshcheck.log;
Et pour valider cette modification sur le fichier bashrc, il faut impérativement passer par une dernière commande :
# source /root/.bashrc
Si vous n’avez pas eu d’erreur à l’issue de cette dernière commande c’est que tout est ok 🙂
Une tâche planifiée plutôt qu’un envoi à chaque login
Pour ce qui préfère plutôt une notification mail par tâche planifiée planifiée, vous pouvez procéder en évitant la précédente étape et en rajoutant une tâche cron avec les commandes suivantes :
# crontab -e
et inclure en fin de fichier
@hourly /bin/bash /root/checkssh.sh > /dev/null 2>&1 #SSH-LOGIN RAPPORT
Voilà donc, vous avez là mis en place un petit moyen utile pour l’administration d’un serveur dédié, et probablement salvateur en cas de hacking.
Pour cela bien entendu il vous faudra être réactif et alerte sur votre boite mail de réception des notifications 😉