"Il n'y a pas de blanc ou de noir, il n'y a que des nuances de gris. On ne peut pas dire si c'est bon ou mauvais."
Et parfois, nous devons creuser dans les nuances de gris et rechercher les problèmes avant qu'ils ne surviennent. L'une de ces vérifications pourrait être une recherche des tentatives de connexion SSH infructueuses. Heureusement, Ubuntu propose une solution suffisamment simple mais suffisamment puissante pour détecter la plupart des cas où quelqu'un laisse se produire des mots de passe faibles et des attaques par force brute.
Chaque tentative de connexion au serveur SSH est enregistrée dans un fichier nommé auth.log situé dans /var/log/auth.log par le démon rsyslog.
Les administrateurs peuvent consulter les journaux pour voir s'il existe un trafic entrant étrange. Un fichier journal contient beaucoup d'informations en texte brut mais il n'est pas facile de lire toute la sortie. Nous devons apprendre à utiliser grep pour rechercher dans le fichier journal et dans cet exemple, nous nous concentrerons sur les tentatives infructueuses.
Installer OpenSSH
OpenSSH est un service qui fournit un accès distant sécurisé aux systèmes sous la forme d'un protocole de couche application, il comprend également le programme de ligne de commande scp. Connectez-vous en tant qu'utilisateur root ou passez à un utilisateur avec des privilèges sudo, puis utilisez la commande ci-dessous pour installer OpenSSH :
sudo apt-get update
sudo apt-get install openssh-server -y
Cette commande doit installer OpenSSH et ses dépendances. Vous devriez voir que des packages supplémentaires sont également installés car OpenSSH en nécessite un grand nombre pour fonctionner correctement.
Après l'installation, vous pouvez activer ssh en tapant la commande suivante dans la fenêtre du terminal :
sudo systemctl enable ssh
Vous devriez voir une sortie similaire à l'image ci-dessous dans votre fenêtre de terminal si la commande a réussi :
Les commandes suivantes peuvent être utilisées pour arrêter SSH sur les machines Ubuntu au cas où vous voudriez le désactiver :
sudo systemctl stop ssh
Il peut être redémarré en exécutant :
sudo systemctl start ssh
Pour vérifier si le serveur SSH est en cours d'exécution, vous pouvez utiliser la commande ci-dessous :
sudo systemctl status ssh
Vous devriez voir une sortie similaire dans votre terminal :
Dans la capture d'écran ci-dessus, vous pouvez voir que le serveur SSH est déjà en cours d'exécution et activé, ce qui signifie qu'il s'exécutera au démarrage.
Comment rechercher toutes les tentatives de connexion SSH ayant échoué
Une tentative de connexion infructueuse peut être causée par diverses raisons et pas seulement par un exploit de connexion automatisé. Une tentative de connexion infructueuse peut se produire lorsque :
- Un utilisateur peut mal saisir son mot de passe.
- Essayer d'utiliser un mot de passe incorrect pour se connecter.
- Le serveur subit une attaque par force brute et les pirates tentent de deviner le mot de passe à l'aide de scripts automatisés.
Le moyen le plus simple de répertorier toutes les tentatives de connexion SSH ayant échoué consiste à utiliser la commande suivante :
grep "Failed password" /var/log/auth.log
Vous devriez voir une sortie similaire dans votre terminal :
Les commandes suivantes peuvent être utilisées pour afficher les connexions SSH ayant échoué dans CentOS ou RHEL dans une version légèrement modifiée de la commande ci-dessus :
grep "Failed" /var/log/secure
grep "authentication failure" /var/log/secure
Alternativement, nous pouvons afficher les journaux à l'aide du démon Systemd avec la commande journalctl :
journalctl _SYSTEMD_UNIT=ssh.service | egrep "Failed|Failure"
Pour afficher une liste de toutes les adresses IP responsables des tentatives de connexion SSH infructueuses, avec le nombre de tentatives à côté, vous pouvez utiliser cette commande :
grep "Failed password" /var/log/auth.log | awk ‘{print $11}’ | uniq -c | sort -nr
Il est inévitable qu'une tentative de connexion échouée se produise de temps à autre. Cependant, il reste crucial d'identifier les échecs de connexion à votre serveur. Il est important d'identifier les adresses IP qui accèdent fréquemment à votre serveur SSH et de prendre les mesures nécessaires.
Conclusion
Dans ce guide, nous avons expliqué comment rechercher les tentatives de connexion SSH ayant échoué sur une machine Linux. Nous avons également appris une approche différente qui consiste à utiliser la commande journalctl. Nous espérons que vous avez trouvé cet article utile. N'hésitez pas à nous faire part de vos commentaires ou de toute question que vous pourriez avoir dans la section des commentaires.