140 votes

Comment puis-je garder la trace des tentatives de connexion SSH qui ont échoué ?

J'aimerais savoir si quelqu'un a essayé de se connecter par force brute à mon serveur Ubuntu 12.04 via SSH. Comment puis-je voir si de telles activités ont eu lieu ?

158voto

ish Points 134738

Toutes les tentatives de connexion sont enregistrées sur /var/log/auth.log .

1. Filtre pour les connexions SSH interactives par force brute

Ouvrez un terminal, et tapez le texte suivant ; s'il fait plus d'une page, vous pourrez le faire défiler de haut en bas ; tapez q pour sortir :

grep sshd.\*Failed /var/log/auth.log | less
  • Voici un exemple réel provenant d'un de mes VPS :

    Aug 18 11:00:57 izxvps sshd\[5657\]: Failed password for root from 95.58.255.62 port 38980 ssh2
    Aug 18 23:08:26 izxvps sshd\[5768\]: Failed password for root from 91.205.189.15 port 38156 ssh2
    Aug 18 23:08:30 izxvps sshd\[5770\]: Failed password for nobody from 91.205.189.15 port 38556 ssh2
    Aug 18 23:08:34 izxvps sshd\[5772\]: Failed password for invalid user asterisk from 91.205.189.15 port 38864 ssh2
    Aug 18 23:08:38 izxvps sshd\[5774\]: Failed password for invalid user sjobeck from 91.205.189.15 port 39157 ssh2
    Aug 18 23:08:42 izxvps sshd\[5776\]: Failed password for root from 91.205.189.15 port 39467 ssh2

2. Recherchez les échecs connexions (c'est-à-dire qu'aucune tentative de connexion n'a eu lieu, il pourrait s'agir d'un scanner de port, etc :)

Utilisez cette commande :

grep sshd.*Did /var/log/auth.log | less
  • Exemple :

    Aug  5 22:19:10 izxvps sshd\[7748\]: Did not receive identification string from 70.91.222.121
    Aug 10 19:39:49 izxvps sshd\[1919\]: Did not receive identification string from 50.57.168.154
    Aug 13 23:08:04 izxvps sshd\[3562\]: Did not receive identification string from 87.216.241.19
    Aug 17 15:49:07 izxvps sshd\[5350\]: Did not receive identification string from 211.22.67.238
    Aug 19 06:28:43 izxvps sshd\[5838\]: Did not receive identification string from 59.151.37.10

Comment réduire les tentatives de connexion ratées ou brutales ?

  • Essayez de basculer votre SSH sur un port non-standard par rapport au port 22 par défaut.
  • Ou installez un script d'interdiction automatique tel que fail2ban Install fail2ban .

74voto

Mufaka Points 54

Je dirais que la surveillance des journaux est une solution faible, surtout si le mot de passe d'un compte est faible. Les tentatives de brute essaient souvent au moins des centaines de clés par minute. Même si vous avez configuré une tâche cron pour vous envoyer un courriel en cas de tentative de brute, il peut se passer des heures avant que vous n'atteigniez votre serveur.

Si vous disposez d'un serveur SSH public, vous pouvez besoin de une solution qui s'impose  long avant que vous puissiez être piraté.

Je recommande vivement fail2ban . Leur wiki dit ce qu'il fait mieux que moi.

Fail2ban analyse les fichiers journaux (par ex. /var/log/apache/error_log ) et bannit les IP qui présentent des signes de malveillance -- trop d'échecs de mots de passe, recherche d'exploits, etc. En général, Fail2Ban est ensuite utilisé pour mettre à jour les règles du pare-feu afin de rejeter les adresses IP pendant une durée déterminée, bien que toute autre action arbitraire (par exemple, l'envoi d'un courriel ou l'éjection du plateau du CD-ROM) puisse également être configurée. Fail2Ban est livré avec des filtres pour divers services (apache, curier, ssh, etc.).

Pour s'en protéger, il suffit de sudo apt-get install fail2ban .

Par défaut, dès que quelqu'un a échoué trois fois, son IP est bannie pendant cinq minutes. Ce délai permet essentiellement de stopper une tentative de force brute SSH, mais il ne va pas ruiner votre journée si vous oubliez votre mot de passe (mais vous devriez quand même utiliser des clés !).

0voto

Mike Points 68

Réponse courte : Pour garder une trace des tentatives échouées, vous devez simplement consulter le fichier journal. /var/log/auth.log sans utiliser de commandes de comparaison de motifs, car ces motifs ne sont pas exhaustifs. Ensuite, pour l'atténuer, vous pouvez utiliser des outils comme fail2ban.

Réponse longue : Les connexions invalides peuvent se produire de plusieurs façons. Par exemple, un attaquant peut essayer certains noms d'utilisateur et mots de passe par défaut, comme le nom d'utilisateur "kali" et le mot de passe "kali" par défaut sur Kali Linux. (Il s'agit d'une technique que les pirates allemands ont largement utilisée à l'époque de la guerre froide. Lire L'œuf du coucou si vous êtes intéressé).

Disons que si vous supprimez l'utilisateur "kali", les commandes grep ci-dessus ne le verront pas :

Nov 25 07:11:32 Everything20170707 sshd[27216]: input_userauth_request: invalid user kali [preauth]

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X