Czy rozsądne jest posiadanie wielu kluczy SSH?

44

Do tej pory stworzyłem osobny klucz SSH dla każdego serwera, do którego muszę się zalogować (w każdym celu, aby być bardziej dokładnym). Zrobiłem to z poczucia bezpieczeństwa, podobnie jak różne hasła do różnych stron.

Czy posiadanie wielu kluczy SSH faktycznie poprawia bezpieczeństwo? Wszystkie z nich są używane z tej samej maszyny, znajdują się w tym samym ~ / .ssh, większość ma nawet to samo hasło.

Więc ... czy powinienem zrezygnować z całego systemu i po prostu użyć jednego klucza SSH do wszystkiego?

[AKTUALIZACJA 2015-08-05] Github publikuje twój klucz publiczny, a twój klient SSH może wysyłać wszystkie twoje klucze publiczne do każdego serwera, w zależności od konfiguracji , dlatego jeśli martwisz się, że serwer SSH innej firmy zna Twoją tożsamość podczas łączenia , powinieneś użyć wielu kluczy SSH, choć moim zdaniem jest to paranoik.

Leonid Szewcow
źródło
To pytanie może lepiej pasować do bezpieczeństwa informacji .
gerrit

Odpowiedzi:

25

Klucze SSH korzystają z kryptografii klucza publicznego. Oznacza to, że to, co instalujesz na wszystkich tych serwerach, to tylko klucz publiczny , o którym chcesz wiedzieć cały świat. Jedynym prawdziwym sekretem jest Twój klucz prywatny, który trzymasz zamknięty na swoim komputerze. Więc tak, powiedziałbym, że marnujesz swój czas.

Spiff
źródło
20
Myślę, że istnieją uzasadnione powody, aby mieć osobne klucze i nie byłoby to stratą czasu. W przypadku skompromitowanego klucza zmniejsza się ryzyko. Zgadzam się, że hasło powinno być inne dla każdego klucza.
jfmessier
Czy rozsądne jest posiadanie różnych par kluczy na różnych komputerach? Podobnie jak różne wystąpienia systemów VirtualBox?
Santosh Kumar,
1
Ta odpowiedź ignoruje dogłębną koncepcję obrony, ponieważ polega ona na „kluczu prywatnym, który trzymasz zamknięty na własnym komputerze”. Zastanów się na przykład, co się stanie, jeśli twój laptop zostanie skradziony, gdy ssh-agent używa (jednego) twojego klucza prywatnego (-ów). Jeśli masz wiele kluczy, wszystkie nadal szyfrowane są bezpieczne. Nie nazwałbym tego stratą czasu.
Jon Bentley,
34

Ostatecznie to zależy od ciebie. Musisz ocenić swój model zagrożenia. Jak duże jest prawdopodobieństwo, że jeden z twoich kluczy zostanie naruszony? Jeśli jeden klucz zostanie naruszony, jakie jest prawdopodobieństwo, że pozostałe klucze zostaną naruszone? Jakie są konsekwencje naruszenia bezpieczeństwa twoich kluczy? Jaki jest koszt (w tym czas) zarządzania wieloma kluczami?

Wzięcie pod uwagę takich czynników powinno pomóc ci zdecydować, czy naprawdę potrzebujesz osobnych kluczy. Na moich komputerach osobistych w sieci lokalnej zwykle nie zawracam sobie głowy dodatkowymi kosztami w zarządzaniu wieloma kluczami. Jednak poza moją siecią używałbym różnych kluczy, każdy z unikalnym hasłem. Ale to tylko moja osobista opinia.

ciężki
źródło
7
+1 za „ocenę modelu zagrożenia”. To tylko o to chodzi.
śleske
21

Nie, używanie więcej niż jednego klucza nie jest stratą czasu.

Większa różnorodność == mniejsze ryzyko.

To stwierdzenie Spiffa jest nieprawidłowe.

Chodzi o to, że klucz publiczny zapewnia dostęp do posiadacza klucza prywatnego i nikogo innego.

Ryzykiem, o które należy się tutaj martwić, jest uwierzytelnianie. Nieuczciwa witryna przekazuje żądania uwierzytelnienia do zadania agenta. Jeśli używasz tylko jednego klucza, nawet jeśli tylko jeden klucz jest załadowany do agenta, wszystkie witryny są otwarte dla nieuczciwych.

Nie ma to nic wspólnego z hasłami , możesz mieć kilka kluczy z tym samym hasłem, które nie miałyby tutaj znaczenia. Ponieważ to nie hasło jest zagrożone.

Łotrzyk przekazuje wyzwania swojemu agentowi i może łączyć się ze wszystkimi stronami, do których załadowano klucze . Z różnymi kluczami, jeden klucz załadowany -> jedna strona zagrożona .

Mówię wam dobrze, wybraliście prywatność innych ludzi nad własne lenistwo.

PS morał tej historii jest ostrożny wobec przekazywania agentów

pbernatchez
źródło
Załóżmy, że generuję trzy klucze SSH, po jednym dla każdego z trzech serwerów, do których loguję się regularnie. Pewnego dnia, po tym jak już zalogowałem się do wszystkich trzech (co oznacza, że ​​ssh-agent buforował hasła dla wszystkich trzech kluczy), a następnie przez twój argument, jeśli mój ssh-agent zostanie przejęty, wszystkie trzy logowania są zagrożone. W takim przypadku posiadanie wielu kluczy SSH nie chroniło mnie. Czy dobrze cię zrozumiałem?
sampablokuper,
9

Myślę, że istnieje jeden dobry przypadek użycia dla wielu kluczy publicznych, i to jest, jeśli masz klucze prywatne przechowywane na komputerach w różnych obszarach zaufania. Tak więc na ogół trzymam jeden klucz, który jest moim kluczem „roboczym”, a drugi kluczem „domowym”, po prostu dlatego, że klucz prywatny do moich „domowych” rzeczy nie jest przechowywany na moim komputerze służbowym i odwrotnie.

krosenvold
źródło
Świetna odpowiedź, jeśli masz różne maszyny z różnymi kluczami, idealnie. Jeśli wszystkie maszyny (lub wiele) mają takie same klucze, to nie chronisz się przed niczym dodatkowym, a nie tylko posiadasz jeden klucz. Jeśli ktoś jest zagrożony, cała reszta na tym komputerze również.
xref
3

Myślę, że rozsądne można rozpatrywać z dwóch różnych perspektyw: bezpieczeństwa i wygody .

Podczas tworzenia pary kluczy SSH jesteśmy proszeni o podanie hasła, aby dodać więcej warstwy w celu ochrony klucza prywatnego, jak następuje:

$ ssh-keygen -t rsa -b 4096 -C 'With_OR_Without_Passwd'
Generating public/private rsa key pair.
Enter file in which to save the key (/Your/HomeDir/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

Chociaż pojawia się wyraźna prośba o podanie hasła, ale niektóre (lub wiele) osób nadal skupia się bardziej na informacjach w nawiasach: (puste dla braku hasła) i postępując zgodnie z tą sugestią.

Łącząc, czy korzystamy z wielu par kluczy SSH i czy wprowadzamy dodatkowe hasło , mamy co najmniej cztery sposoby. Załóżmy, że wszystkie pary kluczy i configplik są przechowywane ~/.ssh/.

Teraz nie rozważmy najpierw bezpieczeństwa .

Poniższa tabela podaje prostą rangę dotyczącą bezpieczeństwa (większa liczba oznacza większe bezpieczeństwo):

Security     Ways to go
   1         One   SSH key-pair  (NO passwd)
   1         Multi SSH key-pairs (NO passwd)
   2         One   SSH key-pair  (WITH passwd)
   2         Multi SSH key-pairs (WITH passwd) (SAME passwd)
   3         Multi SSH key-pairs (WITH passwd) (DIFF passwds)

Bez passwd , jeśli nasz system zostanie przez kogoś włamany, wyłącznik może uzyskać wszystkie nasze klucze prywatne i konfigurację, a także uwierzytelnienie zdalnych serwerów. W tej sytuacji jedna para kluczy i para kluczy są takie same. Najbezpieczniejszym sposobem jest użycie różnych haseł dla różnych par kluczy ssh.

Więc nie myślmy o wygodzie .

Ale więcej par kluczy i więcej haseł sprawia, że ​​nasze życie jest mniej wygodne, w poniższej tabeli podano prostą rangę dotyczącą bezpieczeństwa (większa liczba oznacza większe bezpieczeństwo):

Convenient  Security  Ways to go
   5           1      One   SSH key-pair  (NO passwd)
   4           2      One   SSH key-pair  (WITH passwd)
   3           1      Multi SSH key-pairs (NO passwd)
   2           2      Multi SSH key-pairs (WITH passwd) (SAME passwd)
   1           3      Multi SSH key-pairs (WITH passwd) (DIFF passwds)

Tak więc, w ogólnej sytuacji, jeśli musimy jednocześnie rezygnować z bezpieczeństwa i wygody , możemy pomnożyć te dwa wyniki, i być może jedna para kluczy SSH (Z passwd) jest dobra do wyboru.

YaOzI
źródło