web-dev-qa-db-fra.com

Ssh avec authentification par clé publique, aucun mot de passe n'est-il suffisamment sécurisé?

J'ai un serveur Web configuré et je souhaite me connecter de l'extérieur à l'aide de Tor. Le serveur Web sert simplement une simple page Web qui servira d'interface pour un programme exécuté sur la machine. Il n'est pas destiné à être accessible à quiconque.

Si je configure un autre ordinateur avec SSH et que je me connecte à l'aide de clés SSH pour agir comme un tunnel SSH, est-ce suffisamment sécurisé contre la plupart des attaquants?

Avec le tunnel SSH et Tor en place, y a-t-il une raison d'utiliser SSL ou tout cela est-il suffisamment sécurisé? Quelles attaques sont encore possibles et comment les défendre?

18
user942937

Si vous utilisez l'authentification par clé publique pour SSH, personne ne peut se connecter au serveur sans avoir la clé privée correspondante. C'est aussi sûr et généralement plus sécurisé que l'authentification par mot de passe. Le chiffrement fourni par OpenSSH est à la pointe de la technologie; il n'y a aucun moyen connu de le casser. Vous pouvez encore améliorer la sécurité côté Tor en utilisant services cachés autorisés . Cela rendra le domaine inaccessible à tous sauf à votre client. Notez que cela ne fonctionne qu'avec les services cachés v2, pas avec la dernière v3.

La seule attaque restante serait une attaque d'homme au milieu. Vous pouvez copier la clé Host du serveur vers votre client, tout comme vous avez copié une clé pour rendre possible l'authentification par clé publique. Cela atténuera complètement les attaques de l'homme du milieu et le client vous avertira si une tentative est détectée.

Voir aussi Quelle est la différence entre le fichier authorized_keys et le fichier known_hosts pour SSH?

31
forest

Le réponse existante écrite par forest détaille la sécurité du côté SSH/Tor des choses (assez sécurisé s'il est configuré correctement), donc je ne vais pas le ressasser ici.

Je remarque que vous posez principalement des questions sur la sécurité côté client ("quelqu'un peut-il interférer avec mon navigateur?"), Mais je dirais que la sécurité côté serveur ("quelqu'un peut-il utiliser mon site Web/programme sans autorisation?") Est également une considération très importante lors de la mise en place d'une interface de gestion de programme sur le Web.

Il y a potentiellement un très grand risque d'avoir une page Web sensible ouverte sur Internet, vous avez donc vraiment besoin d'utiliser une sorte de mesure de sécurité du côté du serveur Web - il pourrait s'agir d'un service caché autorisé par Tor, comme le décrit la forêt, ou certains autre méthode de sécurisation du site contre des pirates informatiques aléatoires.

Scénario hypothétique: supposons que vous disposiez d'un serveur Web fonctionnant sur HTTP (car il n'est pas clair si vous utilisez Tor pour des services cachés ou comme une forme de logiciel proxy). Disons que vous avez /index.php là-bas avec un lien vers /my_program_interface.php, et pour des raisons de "sécurité", mettons également cela sur le port 8080, sans nom de domaine, mais à part cela, vous lui permettez d'accepter les connexions de n'importe qui. Eh bien, si quelqu'un découvre que vous avez un serveur Web là-bas (et avec IPv4, une analyse complète du réseau est possible, de sorte que votre serveur Web puisse être découvert), tout ce qu'il aura à faire est de taper http://[your_ip_here]/index.php dans un navigateur standard, puis ils ont exactement autant de contrôle sur votre programme que vous.

En d'autres termes: n'oubliez pas que les contrôles d'autorisation côté serveur sont importants, ainsi que les contrôles de confidentialité côté client!

8
Ethan Kaminski

Cela dépend de ce que vous entendez par suffisamment sécurisé.

La sécurité n'existe pas sans modèle de menace, car les dieux qui voyagent dans le temps et qui lisent l'esprit peuvent vaincre n'importe quel système que vous créez.

S'il s'agit d'un simple utilitaire, les chances que quelqu'un brûle un 0jour pour ssh sur votre serveur soient minimes, car il y a simplement de meilleures cibles, et cela ne vaudrait pas le temps et l'effort.

Cependant, si vous prévoyez d'exécuter un système pour coordonner un empire criminel géant derrière le site, vous devez vous attendre à ce qu'une grande agence d'intelligence puisse suivre le trafic tor vers votre box, soit en utilisant une attaque sur le réseau Tor, soit par simple cryptographie en caoutchouc:

relevant xkcd

Cependant, même si votre système est théoriquement suffisamment sécurisé, il y a l'élément humain: vous ne pouvez jamais être sûr à 100% que vous l'avez configuré correctement, et il peut donc être trivial de pirater.

Une règle très importante pour la sécurité est de s'attendre à ce que votre système soit cassé à un moment donné. Une grande partie de la conception d'un système sécurisé consiste à s'assurer que lorsqu'il est brisé, il ne cause pas trop de dommages. À cette fin, je suggérerais quelque chose comme une image de docker, afin que vous puissiez facilement la frotter si elle se casse.

Si la cryptographie réelle derrière ssh était cassée, vous devriez être plus préoccupé par la collecte des produits en conserve, car un effondrement économique se produirait qui ferait ressembler la Grande Dépression au Légèrement triste, car tout trafic Web sécurisé pourrait être décrypté avec un simple MitM ( mots de passe, certificats de serveur, coordonnées bancaires, etc.) et des réseaux de zombies massifs de serveurs piratés attaqueraient tous les serveurs Internet, tuant efficacement l'ère de l'information et transformant Internet en champ de bataille.

5
Cyclic3