web-dev-qa-db-fra.com

Pourquoi laisser un SSH avec mot de passe sur Internet si mauvais?

J'ai entendu plusieurs fois à plusieurs reprises ne jamais laisser SSH avec un mot de passe ouvert sur Internet. Pourquoi est-ce si grave?

Je comprends que le mot de passe peut être forcé, mais que se passe-t-il s'il s'agit d'un mot de passe très solide qui prendrait des éons à se fissurer?

Y a-t-il plus de choses à considérer que juste la force brute ou me manque-t-il autre chose?

56
Ethereal

Pourquoi est-ce si grave?

Parce qu'il y a des tonnes de bots qui analysent le Web pour les ports ouverts et essaient de se connecter, une fois qu'un bot de scanner trouve un port SSH ouvert, il peut être mis en file d'attente pour un autre bot (ou botnet) pour essayer de forcer brutalement le mot de passe. L'un des risques ici est que, éventuellement, ils parviennent à trouver le mot de passe et à prendre le contrôle du serveur.

Je comprends que le mot de passe peut être forcé, mais que se passe-t-il s'il s'agit d'un mot de passe très solide qui prendrait des éons à se fissurer?

Avoir un mot de passe long est une technique d'atténuation, mais la consommation de ressources (bande passante, espace disque utilisé pour les journaux et le processeur par exemple) d'une attaque par force brute peut également être dommageable.

Atténuation

Quelques techniques pour atténuer une attaque par force brute sur SSH:

68
Purefan

Le principal risque est que la connexion initiale puisse être interceptée par un Man-In-The-Middle, afin qu'un attaquant puisse récupérer le mot de passe.

La première fois qu'un utilisateur se connecte à un serveur SSH, quelque chose de semblable au suivant s'affiche:

$ ssh scanme.nmap.org
The authenticity of Host 'scanme.nmap.org (45.33.32.156)' can't be established.
ECDSA key fingerprint is SHA256:8iz5L6iZxKJ6YONmad4oMbC+m/+vI9vx5C5f+qTTGDc.
Are you sure you want to continue connecting (yes/no)?

Maintenant, à moins que chaque utilisateur ne vérifie cette empreinte digitale pour s'assurer qu'il s'agit bien de votre serveur, il y a un risque que leur connexion ait été interceptée (par exemple, MITM sur leur réseau interceptant directement le trafic, ou un certain type de piratage DNS).

En effet, SSH est "Trust on First Use". Si vous vous êtes déjà connecté à cet hôte et que la clé change soudainement, le message suivant s'affiche à la place, avertissant l'utilisateur.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE Host IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA Host key has just been changed.
The fingerprint for the RSA key sent by the remote Host is
5c:9b:16:56:a6:cd:11:10:3a:cd:1b:a2:91:cd:e5:1c.
Please contact your system administrator.
Add correct Host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:1
RSA Host key for ras.mydomain.com has changed and you have requested strict checking.
Host key verification failed.

L'avertissement atténuera cette attaque pour les utilisateurs qui se sont déjà connectés depuis ce client particulier.

D'autres risques moins critiques de l'ouverture de SSH sur Internet sont qu'il existe de nombreux robots qui trouvent et tentent de se connecter à de tels serveurs. Si vous avez un mot de passe fort sur tous les comptes, le risque de compromis est très faible (j'entends par fort celui qui ne figurera certainement pas dans une liste de mots que l'attaquant peut utiliser ou créer). Les règles habituelles s'appliquent - par exemple, pas de réutilisation de mot de passe, mot de passe stocké en toute sécurité, etc. L'inconvénient est que les fichiers journaux s'accumuleront rapidement avec toutes les tentatives d'authentification reçues.

En ce qui concerne SSH lui-même dans n'importe quel mode d'authentification, car il s'agit d'un autre service, il existe une possibilité de découverte de vulnérabilités qui pourraient être exploitées automatiquement par de tels robots. Cependant, le risque de cela n'est pas plus grand que celui d'un serveur Web ou d'une application Web d'être exploité. Comme tout serveur avec des services publics, une bonne stratégie de gestion des vulnérabilités est recommandée.

Voir aussi cette réponse , la partie relative aux messages d'avertissement SSH et au risque de continuer, même avec l'authentification par clé publique.

27
SilverlightFox

J'ai entendu plusieurs fois à plusieurs reprises ne jamais laisser SSH avec un mot de passe ouvert sur Internet. Pourquoi est-ce si grave?

Je comprends que le mot de passe peut être forcé, mais que se passe-t-il s'il s'agit d'un mot de passe très solide qui prendrait des éons à se fissurer?

L'avantage très fort de la désactivation des connexions SSH par mot de passe est vraiment d'empêcher les comptes par défaut avec des mots de passe faibles ou les utilisateurs qui choisissent des mots de passe faibles d'être forcés par la force. À l'heure actuelle, vous ne disposez peut-être que de quelques comptes sans mots de passe faibles, mais quelque chose pourrait être installé à l'avenir, si ce n'est pas le cas. Plus vous avez de systèmes ou de complexité au fil du temps, plus le risque augmente.

Cas anecdotique: une de mes connaissances a perdu son serveur et tout ce qu'il contient parce qu'il a donné à un ami un compte avec le mot de passe de changeme qui n'a pas été modifié. Aucune sauvegarde à distance n'a été créée non plus, il a donc tout perdu.

Les clés SSH sont considérablement plus sécurisées par défaut. À moins que la génération de clés soit interrompue , le niveau de compromis le plus bas nécessite d'obtenir la clé des utilisateurs. Alors qu'avec les mots de passe, le niveau ne fait que deviner quand quelqu'un expose un mot de passe faible. Il s'agit de s'assurer que les futures défaillances humaines sont protégées.

12
Jeff Ferland

Une autre chose à considérer est la possibilité de vulnérabilités (bien que connues depuis un certain temps ou jour zéro) dans le démon sshd lui-même, qui pourraient être exploitées par un attaquant. Pour atténuer cela, il est préférable d'ouvrir sshd uniquement aux utilisateurs travaillant à partir d'adresses IP connues auxquelles vous faites confiance, ou via un VPN, si possible.

3
mti2935

Il existe plusieurs raisons différentes pour lesquelles il est plus sûr d'utiliser l'authentification par clé publique plutôt que l'authentification par mot de passe:

  • La clé secrète ne quitte jamais la machine cliente, il est donc plus difficile d'intercepter la clé secrète que le mot de passe. Ceci est important dans le cas où un attaquant effectue une attaque mitm contre votre première connexion où la clé Host n'est pas connue auparavant. Il est également important dans le cas où le serveur a été compromis par un attaquant.
  • L'utilisation de l'authentification par clé publique vous protège contre les attaques par mitm complètes. Si un attaquant effectuait une attaque mitm contre votre première connexion, vous ne pourriez pas vérifier la clé d'hôte. Cependant, si vous utilisez l'authentification par clé publique pour vous authentifier, l'authentification est liée à l'ID de session ssh, ce qui empêche l'attaquant d'utiliser la même authentification pour transmettre la connexion au serveur légitime. Cela réduit l'attaque d'une attaque mitm complète à l'interception de la connexion, ce qui est souvent plus facile à remarquer pour l'utilisateur. (Par exemple, lorsque l'utilisateur recherche un fichier connu pour être sur le vrai serveur, mais inconnu de l'attaquant, l'utilisateur remarquera que quelque chose ne va pas.)

Étant donné que je déconseille d'utiliser l'authentification par mot de passe, je déconseillerai également de la laisser activée sur votre serveur ssh pour les raisons suivantes:

  • Les attaquants tenteront des attaques par mot de passe par force brute. Si vous avez un utilisateur sur le système avec un mot de passe faible, il est possible qu'une telle attaque réussisse.
  • Même si tous les utilisateurs du système ont des mots de passe forts, les attaquants essaieront toujours de forcer les mots de passe par force brute. Cela consommera des ressources sur le serveur. Parfois, j'ai vu de telles attaques par force brute être si agressives que les connexions légitimes échouaient en raison d'une surcharge du serveur.
  • Si vous vous habituez à ce que les serveurs ssh n'acceptent jamais les mots de passe, vous êtes plus susceptible de le remarquer au cas où un attaquant tenterait un jour de lancer une attaque mitm contre vous et vous présenterait un mot de passe.
2
kasperd

Si je comprends bien, une clé n'est pas si différente d'un mot de passe; c'est juste beaucoup, beaucoup plus long et donc plus difficile à casser. De plus, vous avez besoin d'un mot de passe sur le dessus.

Mais je voudrais également souligner qu'il est logique de n'autoriser que certaines adresses IP à se connecter même à votre port SSH. Cela diminue les fichiers journaux et il est généralement recommandé de n'autoriser l'accès (pas de connexion) à un service si nécessaire. Ainsi, par exemple, à une plage d'adresses IP de votre entreprise VPN . Mais ne comptez jamais là-dessus.

Le déplacement du port SSH est parfois suggéré, mais je n'y vois que peu d'avantages.

Aussi (hors sujet): n'autorisez jamais la connexion SSH pour root.

0
Øle Bjarnstroem