web-dev-qa-db-fra.com

Comment puis-je suivre les tentatives de connexion SSH ayant é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?

130
Ivan

Toutes les tentatives de connexion sont consigné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 q pour quitter:

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 de la racine à partir du port 95.58.255.62 38980 ssh2 
     18 août à 23:08:26 izxvps sshd [5768]: Mot de passe introuvable pour root from 91.205.189.15 port 38156 ssh2 
     18 août 23:08:30 izxvps sshd [5770]: Échec du mot de passe pour personne à partir du 91.205.189.15 port 38556 ssh2 
     août 18 23:08:34 izxvps sshd [5772]: Echec du mot de passe pour l'astérisque de l'utilisateur invalide depuis le port 91.205.189.15 38864 ssh2 
     18 août 23 23:08:38 izxvps sshd [5774]: Echec du mot de passe pour l'utilisateur invalide sjobeck à partir du 91.205.189.15 port 39157 ssh2 
     18 août 23:08:42 izxvps sshd [5776]: Échec du mot de passe pour root depuis le port 91.205.189.15 sur le port 39467 ssh2 
    

2. Recherchez les connexions ayant échoué (c’est-à-dire qu’aucune connexion n’est tentée, il peut s’agir d’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 de chaîne d'identification de 70.91.222.121 
     10 août 19:39:49 izxvps sshd [1919]: N'a pas reçu de chaîne d'identification à partir 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 
     août 17 15:49:07 izxvps sshd [5350]: Est-ce que ne reçoit pas la chaîne d'identification de 211.22.67.238 
     19 août 06:28:43 izxvps sshd [5838]: N'a pas reçu de 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 fail2banInstall fail2ban .
147
ish

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'atteignez votre serveur.

Si vous avez un serveur SSH faisant face au public, vous avez besoin d'une solution qui démarre long avant de pouvoir ê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 qui montrent les signes malveillants - trop d'échecs de mot de passe, recherche d'exploits, etc. En général, Fail2Ban était utilisé pour mettre à jour les règles de pare-feu afin de rejeter les adresses IP toute autre action arbitraire (par exemple, envoi d'un courrier électronique ou éjection d'un plateau de CD-ROM) pourrait é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 suspendue cinq minutes plus tard. 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!)

70
Oli