Jak przerzucić klucze hosta ssh?

17

Próbuję uaktualnić mój serwer ssh z 2048-bitowych kluczy RSA do większych kluczy, ponieważ zalecenia mają wkrótce wycofać 2048-bitowe klucze.

Wygenerowałem nowy klucz, a następnie dodałem go do konfiguracji sshd w następujący sposób:

HostKey / etc / ssh / ssh_host_rsa_key ( najpierw             stary klucz 2k-bitowy) 
HostKey / etc / ssh / ssh_host_rsa4096_key         (nowy większy klucz 2. )

Po ponownym uruchomieniu sshdssh'd do hosta, nie otrzymuję ostrzeżenia o zmianie identyfikacji, jednak nowy również nie jest buforowany ~/.ssh/known_hosts. Jeśli ustawię wiersze w odwrotnej kolejności, otrzymam ostrzeżenie o zmianie identyfikacji. Podobnie, gdy dodam klucz ed25519, bez względu na kolejność, w jakiej go wprowadzę, klient nie dodaje nowego klucza do znanego pliku hosts.

Wydaje się, że uniemożliwia to przechodzenie klucza hosta SSH - trudno w to uwierzyć, ale tak naprawdę biorąc pod uwagę, że bezpieczeństwo wymaga rutynowej aktualizacji kluczy.

Wiem, że możesz po prostu wymienić klucz, a następnie każdy klient musi uruchomić, ssh-keygen -Raby usunąć stary klucz, a następnie ręcznie zweryfikować i zaakceptować nowy klucz - ale to prawdziwy ból, szczególnie jeśli masz wielu klientów łączących się lub nie administrujących wszyscy klienci. Nie wspominając o tym, że jeśli nie administrujesz klientami, istnieje duża szansa, że ​​tak naprawdę nie sprawdzą klucza hosta, a zamiast tego po prostu uderzą w Y - więc próba poprawy bezpieczeństwa prawdopodobnie otworzy cię na man-in zamiast tego środkowe ataki.

Czy jest jakiś sposób, aby uaktualnienia klucza hosta SSH działały? Oznacza to, że klienci powinni nauczyć się nowego, bezpieczniejszego klucza (a także, mam nadzieję, odinstalować przestarzały klucz). I bez podania klucza hosta zmieniono ostrzeżenie „człowiek w środku”.

derobert
źródło
Proszę spojrzeć na to . Chociaż obecnie nie zapewnia rozwiązania tego, czego chcesz, może pomóc w osiągnięciu celów końcowych w przyszłości.
rda

Odpowiedzi:

14

Rotacja klucza hosta jest obsługiwana od OpenSSH 6.8 (zarówno klient, jak i serwer dodają obsługę w tej wersji).

Proces powinien więc działać w ten sposób:

  • Wygeneruj i dodaj nowe klucze z opcją HostKey newkey(po istniejących) do/etc/ssh/sshd_config
  • Uruchom ponownie sshd
  • Klienci muszą skonfigurować UpdateHostKeys yesw swojej konfiguracji (globalnie lub dla jednego hosta)
  • Łączący się klienci wybiorą wszystkie nowe klucze
  • Po pewnym czasie (miesiącach?) Możesz usunąć stare klucze z sshd_configi uruchomić ponowniesshd
  • Klienci (połączeni w okresie przejściowym) będą już mieli nowe klucze (stare nie zostaną usunięte, co jest jedynym problemem tutaj) i nie będą wyświetlać ostrzeżenia o ataku MitM.

Nowi klienci będą mogli odebrać nowe klucze. Ta funkcja nie jest domyślnie włączona, prawdopodobnie dlatego, że jest całkiem nowa i wkrótce pojawiła się kwestia bezpieczeństwa. Ale w dzisiejszych czasach korzystanie z niego powinno być w porządku.

Jakuje
źródło
-4

sshd zawsze używa pierwszego wiersza, więc usuń go, a następnie uruchom ponownie sshd.

Ipor Sircer
źródło
1
... co powoduje, że straszny klucz hosta zmienił ostrzeżenie. Próbując tego uniknąć, ucząc się nowego klucza (i wycofując stary).
derobert
Masz rację. Nie można używać jednocześnie dwóch różnych kluczy. ssl nie jest tls. Nie ma zmiany funkcji dodawania klucza.
Ipor Sircer
4
To nie jest SSL ani TLS. Protokół obsługuje wiele kluczy hosta - na przykład kiedyś wszyscy mieli zarówno klucze RSA, jak i DSA. Teraz są to zwykle klucze ED25519, ECDSA i RSA.
derobert