Comment survoler les clés d'hôte ssh?


17

J'essaie de mettre à niveau mon serveur ssh de clés RSA 2048 bits vers des clés plus grandes, car les recommandations sont de supprimer progressivement les clés 2048 bits.

J'ai généré une nouvelle clé, puis je l'ai ajoutée à la configuration sshd, comme ceci:

HostKey / etc / ssh / ssh_host_rsa_key             (ancienne clé 2k-bit en premier) 
HostKey / etc / ssh / ssh_host_rsa4096_key         (nouvelle clé plus grande 2e )

Après le redémarrage sshd, j'ai envoyé à l'hôte, je ne reçois pas l'avertissement d'identification modifiée, mais le nouveau n'est pas non plus mis en cache ~/.ssh/known_hosts. Si je mets les lignes dans l'ordre inverse, j'obtiens l'avertissement d'identification modifiée. De même, lorsque j'ajoute une clé ed25519, quel que soit l'ordre dans lequel je la mets, le client n'ajoute pas la nouvelle clé au fichier d'hôtes connu.

Cela semble rendre impossible le roulement des clés de l'hôte SSH - difficile de croire que c'est vraiment le cas, cependant, étant donné que la sécurité nécessite régulièrement la mise à niveau des clés.

Je sais que vous pouvez simplement échanger la clé, puis chaque client doit exécuter ssh-keygen -Rpour supprimer l'ancienne clé, puis vérifier et accepter manuellement la nouvelle clé, mais cela est vraiment difficile, surtout si vous avez beaucoup de clients se connectant ou ne pas administrer tous les clients. Sans oublier que si vous n'administrez pas les clients, il y a de très bonnes chances qu'ils ne vérifient pas réellement la clé d'hôte et au lieu de cela, frappent simplement Y. La tentative d'amélioration de la sécurité vous ouvrira donc probablement à l'homme les attaques du milieu à la place.

Existe-t-il un moyen de faire fonctionner les mises à niveau des clés d'hôte SSH? C'est-à-dire que les clients devraient apprendre la nouvelle clé plus sécurisée (et aussi, espérons-le, ne pas apprendre la clé obsolète). Et sans donner la clé de l'hôte, l'avertissement de l'homme du milieu a changé.


Veuillez jeter un œil à ceci . Bien qu'il ne fournisse pas de solution pour ce que vous voulez en ce moment, il pourrait vous aider à atteindre vos objectifs finaux à l'avenir.
rda

Réponses:


14

La rotation de la clé d'hôte est prise en charge depuis OpenSSH 6.8 (le client et le serveur ajoutent la prise en charge dans cette version).

Donc, le processus devrait fonctionner comme ceci:

  • Générez et ajoutez de nouvelles clés avec l'option HostKey newkey(après celles existantes) au/etc/ssh/sshd_config
  • Redémarrer sshd
  • Les clients doivent s'installer UpdateHostKeys yesdans leur configuration (globalement ou par hôte)
  • Les clients qui se connectent récupèrent toutes les nouvelles clés
  • Après un certain temps (mois?), Vous pouvez supprimer les anciennes clés de la sshd_configet redémarrersshd
  • Les clients (qui se sont connectés pendant la période de transition) auront déjà les nouvelles clés (les anciennes ne seront pas supprimées, ce qui est le seul problème ici) et ils ne montreront pas l'avertissement d'attaque MitM.

Les nouveaux clients pourront récupérer les nouvelles clés. Cette fonctionnalité n'est pas activée par défaut, probablement parce qu'elle est assez récente et a rapidement montré une certaine sécurité. Mais de nos jours, ça devrait être bien de l'utiliser.


-4

sshd utilise toujours la première ligne, supprimez-la, puis redémarrez sshd.


1
... qui se traduit par une clé d'hôte effrayante a changé d'avertissement. Essayer d'éviter cela, en faisant apprendre aux clients la nouvelle clé (et en supprimant l'ancienne).
derobert

Tu as raison. Vous ne pouvez pas utiliser 2 clés différentes à la fois. ssl n'est pas tls. Il n'y a pas de fonction d'ajout de clé qui change.
Ipor Sircer

4
Ce n'est ni SSL ni TLS. Le protocole prend en charge plusieurs clés d'hôte — par exemple, tout le monde avait à la fois des clés RSA et DSA. Maintenant, il s'agit généralement des clés ED25519, ECDSA et RSA.
derobert
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.