Dlaczego Google zaleca usunięcie kluczy SSH z GCE ze względów bezpieczeństwa?

15

Poniższe odniesienie do dokumentacji Google nie jest już prawdziwe.

Google zaleca usunięcie kluczy SSH z instancji GCE w celu zabezpieczenia SSH. To nie ma dla mnie żadnego sensu. Klucze są dla bezpieczeństwa, prawda? Po usunięciu kluczy dysk SSHD przestaje działać. Prawdopodobnie brakuje mi ich sensu. Czy ktoś może wyjaśnić, co to znaczy:

Usuń klucze hosta ssh

Nie używaj kluczy hosta ssh w swoim wystąpieniu. Usuń je w następujący sposób:

rm /etc/ssh/ssh_host_key
rm /etc/ssh/ssh_host_rsa_key*
rm /etc/ssh/ssh_host_dsa_key*
rm /etc/ssh/ssh_host_ecdsa_key*
Martin Prikryl
źródło
2
Dokument zaleca włączenie, StrictHostKeyCheckinga później zaleca wyłączenie. Podejrzewam, że nie jest to dokument starannie zredagowany. Radzę ufać własnemu osądowi i używać kluczy hosta, chyba że istnieje dobry powód, aby tego nie robić.
aecolley
@ aecolley Też to zauważyłem. Przesłałem im opinię. Zobaczę, czy do mnie wrócą.
Martin Prikryl
1
Opracowałem poniżej, ale sprowadza się to do kontekstu - strona, na którą patrzysz, zawiera porady dotyczące tworzenia nowych obrazów, a nie ogólnego zabezpieczenia komputera. Zaktualizuję dokumenty, aby zawierały więcej szczegółów na temat tego, kiedy i dlaczego chcesz usunąć klucze hosta, ponieważ przyczyny nie są jasne.
Benson

Odpowiedzi:

12

Najważniejszym szczegółem jest to, że strona, do której się odwołujesz, dotyczy tworzenia nowego obrazu maszyny Compute Engine. W szczególności, gdy tworzysz nowy obraz maszyny wirtualnej, chcesz upewnić się, że NIE zawiera on żadnych kluczy hosta. W ten sposób, kiedy obraz zostanie sklonowany i odtworzony w rzeczywistej maszynie wirtualnej, skrypt startowy sshd rozpozna, że ​​nie ma kluczy hosta i automatycznie wygeneruje nowe. Jest to pożądane, ponieważ posiadanie wielu komputerów przy użyciu tego samego klucza hosta jest bardzo złym pomysłem.

Tak więc, w ogólnym przypadku, nie usuwaj kluczy hosta, ale jeśli tworzysz nowy obraz, jest to ważny krok, aby upewnić się, że istnieje relacja jeden-do-jednego między kluczami hosta a komputerami.

Benson
źródło
1
Dzięki. To ma sens. Chociaż pomocne byłoby jakieś wyjaśnienie. „Nie używaj kluczy hosta ssh w swoim wystąpieniu.” jest naprawdę mylącym sformułowaniem.
Martin Prikryl,
Zgadzam się całkowicie - dziękuję bardzo za zwrócenie na to uwagi. W rzeczywistości przesłałem aktualizację dokumentów, aby wyjaśnić sformułowania, które, jak podejrzewam, zostaną wkrótce wyparte.
Benson
1
Zaktualizowane dokumenty są już dostępne: developers.google.com/compute/docs/images#removesshkeys
Benson
13

Jedynym możliwym powodem, dla którego mogę wymyślić, jest to, że chcą zmusić cię do ponownego wygenerowania nowych kluczy.
Ponieważ klucze te zostały wygenerowane przed uzyskaniem dostępu, mogą nie być zaufane.
Usunięcie ich i ponowne uruchomienie sshdspowoduje ponowne wygenerowanie kluczy.
Jednak dokument tak naprawdę nie wyjaśnia tego.

To czysta spekulacja i lepiej byłoby się z nimi skontaktować i uzyskać wyjaśnienia na ten temat.

oszust
źródło
4
Dzięki za twoją odpowiedź. Muszę ssh do serwera, aby zrestartować sshd. Ale aby się połączyć, muszę zaakceptować klucz hosta „niezaufanego” serwera. Więc cokolwiek robię podczas tej sesji, nie można ufać. Nawet ponowne uruchomienie sshd. Dobrze?
Martin Prikryl
1
Myślę, że głównym problemem byłoby to, że z jakiegoś powodu inny klient dostaje te same klucze, co ty (uwaga: to nie umożliwia im dostępu do twojej instancji, ale ułatwia ci atak w środku człowieka). Jeśli nie ufasz dostawcy obrazu, nie powinieneś niczego tam uruchamiać (praktycznie mają fizyczny dostęp).
faker
1
IIRC przeprowadzono badania, które pokazują, że jakość entropii w niektórych systemach, szczególnie osadzonych, ale która może również obejmować niektóre kategorie świeżo uruchomionych maszyn wirtualnych, nie jest bardzo wysoka. Gdy klucze publiczne są generowane przy pierwszym uruchomieniu, takie jak klucze hosta SSH, mogą one być przewidywalne.
HBruijn,
@HBruijn Dzięki za komentarz. Ale usunięcie ich i umożliwienie sshd odtworzenia ich przy ponownym uruchomieniu nie poprawi ich. Będziesz musiał wgrać własny. Ale nie zostało to uwzględnione w dokumencie.
Martin Prikryl
1
Przesłałem opinię do Google. Zobaczę, czy do mnie wrócą.
Martin Prikryl