Jak mogę bezpiecznie dodać klucz hosta do known_hosts
pliku SSH ?
Konfiguruję maszynę programistyczną i chcę (np.) Uniemożliwić git
monitowanie podczas klonowania repozytorium github.com
przy użyciu protokołu SSH.
Wiem, że mogę użyć StrictHostKeyChecking=no
(np. Tej odpowiedzi ), ale to nie jest bezpieczne.
Jak dotąd znalazłem ...
GitHub publikuje swoje odciski palców kluczy SSH na https://help.github.com/articles/github-s-ssh-key-fingerprints/
Mogę użyć,
ssh-keyscan
aby uzyskać klucz hostagithub.com
.
Jak połączyć te fakty? Biorąc pod uwagę wstępnie wypełnioną listę odcisków palców, jak sprawdzić, czy dane wyjściowe ssh-keyscan
można dodać do known_hosts
pliku?
Chyba pytam o:
Jak uzyskać odcisk palca dla klucza zwróconego przez ssh-keyscan
?
Załóżmy, że mam już edycję MITM dla SSH, ale mogę zaufać stronie GitHub HTTPS (ponieważ ma prawidłowy łańcuch certyfikatów).
Oznacza to, że mam pewne (podejrzane) klucze hosta SSH (od ssh-keyscan
) i niektóre (zaufane) odciski palców. Jak zweryfikować jedno z drugim?
Powiązane: w jaki sposób mieszam część wyjściową hosta ssh-keyscan
? Czy mogę mieszać hosty z hashami / hashami known_hosts
?
StrictHostKeyChecking=no
jest podatny na MITM. Czy jestssh-keyscan
zabezpieczony przed MITM?Odpowiedzi:
Najważniejszą częścią „bezpiecznego” dodania klucza do
known_hosts
pliku jest pobranie odcisku klucza od administratora serwera. Kluczowy odcisk palca powinien wyglądać mniej więcej tak:W przypadku GitHub zwykle nie możemy rozmawiać bezpośrednio z administratorem. Jednak umieszczają klucz na swoich stronach internetowych, abyśmy mogli odzyskać informacje z tego miejsca.
Ręczna instalacja klucza
1) Weź kopię klucza z serwera i pobierz jego odcisk palca. NB: Zrób to przed sprawdzeniem odcisku palca.
2) Uzyskaj kopię klucza linii papilarnych od administratora serwera - w takim przypadku przejdź do strony z informacjami na github.com
3) Porównaj klucze z dwóch źródeł
Umieszczając je bezpośrednio jeden nad drugim w edytorze tekstu, łatwo sprawdzić, czy coś się zmieniło
(Zauważ, że drugi klucz został zmanipulowany, ale wygląda dość podobnie do oryginału - jeśli coś takiego się zdarzy, jesteś poważnie atakowany i powinieneś skontaktować się z zaufanym ekspertem ds. Bezpieczeństwa.)
Jeśli klucze są różne, przerwij procedurę i skontaktuj się z ekspertem ds. Bezpieczeństwa
4) Jeśli klucze są poprawnie porównywane, zainstaluj klucz, który już pobrałeś
Lub zainstalować dla wszystkich użytkowników w systemie (jako root):
Zautomatyzowana instalacja klucza
Jeśli musisz dodać klucz podczas procesu kompilacji, wykonaj kroki 1-3 powyższej procedury ręcznej.
Po wykonaniu tej czynności sprawdź zawartość
github-key-temp
pliku i utwórz skrypt, aby dodać tę zawartość do pliku znanego hosta.Powinieneś teraz pozbyć się wszelkich
ssh
poleceń, które zostałyStrictHostKeyChecking
wyłączone.źródło
Możesz mieszać hash / unhashed wpisy w swoim pliku znane_hosty.
Więc jeśli chcesz dodać klucz github, możesz po prostu:
ssh-keyscan github.com >> ~/.ssh/known_hosts
Jeśli chcesz to mieszać, dodaj -H
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
źródło
Najłatwiej jest ręcznie pobrać klucze za pomocą
ssh-keyscan
, zweryfikować je ręcznie:I dodaj je do skryptu, który będzie nosił „autorytatywny” klucz publiczny.
źródło