Comment puis-je suivre les tentatives de connexion SSH ayant échoué?

134

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?

Ivan
la source

Réponses:

150

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

1. Filtrez les connexions SSH interactives avec force brute

Ouvrez un terminal et tapez ce qui suit. si elle est plus longue qu'une page, vous pourrez faire défiler de haut en bas; tapez qpour sortir:

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

    18 août 11:00:57 izxvps sshd [5657]: Échec du mot de passe pour root à partir du port 38980 ssh2 de 95.58.255.62
    18 août 23:08:26 izxvps sshd [5768]: Échec du mot de passe pour root à partir du port 38156 ssh2 du 91.205.189.15
    Août 18 23:08:30 izxvps sshd [5770]: Échec du mot de passe pour personne à partir du port 91.525.189.15 38556 ssh2
    18 août 23:08:34 izxvps sshd [5772]: Échec du mot de passe pour l'astérisque de l'utilisateur non valide à partir du port 91.205.189.15 38864 ssh2
    18 août 23:08:38 izxvps sshd [5774]: Échec du mot de passe pour l'utilisateur non valide sjobeck à partir du port 91155.189.15 39157 ssh2
    18 août 23:08:42 izxvps sshd [5776]: Échec du mot de passe pour root à partir du port 39467 ssh2 pour la racine 91.205.189.15
    

2. Recherchez les connexions en échec (c.-à-d., Aucune tentative de connexion n'a été tentée, cela pourrait être un scanner de port, etc.):

Utilisez cette commande:

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

    5 août 22:19:10 izxvps sshd [7748]: N'a pas reçu la chaîne d'identification de 70.91.222.121
    10 août 19:39:49 izxvps sshd [1919]: n'a pas reçu la chaîne d'identification de 50.57.168.154
    13 août 23:08:04 izxvps sshd [3562]: N'a pas reçu la chaîne d'identification de 87.216.241.19
    17 août 15:49:07 izxvps sshd [5350]: N'a pas reçu la chaîne d'identification de 211.22.67.238
    19 août 06:28:43 izxvps sshd [5838]: N'a pas reçu la chaîne d'identification de 59.151.37.10
    

Comment réduire les tentatives de connexion infructueuses

  • Essayez de changer votre SSH sur un port non standard à partir du port par défaut 22
  • Ou installez un script d'interdiction automatique tel que fail2banInstaller fail2ban .
ish
la source
4
Quel niveau de sécurité obtenez-vous en commutant le port SSH (ne peuvent-ils pas vous scanner de toute façon comme vous le dites) et cela vaut-il la peine que les utilisateurs légitimes aient accès à une convivialité mineure?
Nick T
8
@ NickT, cela s'avère suffisant pour réduire considérablement les tentatives de connexion. Là où j’ai eu des milliers de tentatives en une semaine / jour, jusqu’à présent, je n’en ai pas eu depuis un mois, simplement en changeant de port.
AntoineG
2
Je pense qu'interdire la connexion avec un mot de passe peut aussi aider.
Luc M
2
Je sais que c'est Ubuntu, je voulais juste mentionner que sur certains systèmes comme centos, le chemin du fichier est/var/log/secure
lfender6445
Certains systèmes accèdent au journal avecsystemctl -eu sshd
alecdwm le
72

Je dirais que la surveillance des journaux est une solution faible, surtout si vous avez un mot de passe faible sur un compte. Les tentatives de brute tentent souvent au moins des centaines de clés par minute. Même si vous avez un travail cron configuré pour vous envoyer des courriels de tentatives brutes, cela peut prendre des heures avant que vous n'atteigniez votre serveur.

Si vous avez un serveur SSH destiné au public, vous avez besoin d' une solution qui fonctionne  bien avant que vous puissiez être piraté.

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

Fail2ban analyse les fichiers journaux (par exemple /var/log/apache/error_log) et interdit les adresses IP indiquant les signes malveillants - trop d’échecs de mot de passe, recherche d’exploits, etc. En règle générale, Fail2Ban est ensuite utilisé pour mettre à jour les règles du pare-feu afin de rejeter les adresses IP Une autre action arbitraire (par exemple, envoi d'un courrier électronique ou éjection d'un plateau de CD-ROM) peut également être configurée. Prêt à l'emploi, Fail2Ban est fourni avec des filtres pour divers services (Apache, Curier, SSH, etc.).

Obtenir une protection est aussi simple que sudo apt-get install fail2ban.

Par défaut, dès que trois tentatives ont échoué, leur adresse IP est interdite pendant cinq minutes. Ce type de retard met essentiellement fin à une tentative de force brutale SSH, mais il ne va pas gâcher votre journée si vous oubliez votre mot de passe (mais vous devriez quand même utiliser des clés!)

Oli
la source
6
Pourquoi est-ce que ça s'appelle échouer?
Pacerier
9
@Pacerier Eh bien, avec une analogie, un échec de connexion conduit à (2) une interdiction.
Sebi
2
Bwahaha tu as fait ma journée à @Pacerier Je n'y ai jamais pensé comme un "échec de l'interdiction" au sens littéral.
Adelriosantiago
1
Je pense que cela devrait être modifié pour supprimer "en particulier" de la première phrase. Ce n'est un problème que si vous avez un mot de passe faible. Les mots de passe forts ne peuvent en aucun cas être forcés brutalement, et la seule raison d'empêcher les utilisateurs d'essayer est de réduire la charge du serveur.
Abhi Beckert
Tout à fait d'accord. Quoi qu'il en soit, tout ira bien pour éviter une charge élevée du serveur. J'ai vu des tentatives à des taux par millisecondes
Diego Andrés Díaz Espinoza