Czy powinienem zezwolić na nieznany klucz hosta podczas korzystania z SFTP?

4

Przełączyłem się z FTP z TLS na SFTP i teraz pojawia się okno dialogowe, gdy próbuję połączyć się z nieznanym kluczem hosta dla www.example.com. Następnie przedstawia dwie opcje Odmów i Zezwól.

Co to znaczy? Czy powinienem wybrać opcję Zezwól lub Odmów?

1.21 gigawatts
źródło
Kiedy raz na stałe zaakceptujesz klucz, a pewnego dnia połączysz się i pojawi się okno dialogowe z informacją „klucz się zmienił i różni się od lokalnego klucza przechowywanego!” - wtedy powinieneś się martwić i być ostrożnym.
DanFromGermany
@ DanFromGermany Right. Używam Cyberduck i pojawia się pytanie za każdym razem, gdy łączę się, aby przesłać lub odświeżyć katalog. Istnieje opcja [] Zawsze akceptuj i właśnie wtedy zastanawiam się, czy zaznaczę tę opcję, czy powie mi, kiedy się zmieniła. Z tego, co mówisz, mogę wybrać zawsze akceptuję i powie mi, czy zmieni się od wartości przechowywanej.
1.21 gigawatts
1
Zazwyczaj są 3 opcje: 1. Zapisz na stałe i ostrzegaj, gdy się zmieni 2. Użyj tylko raz 3. Anuluj. Nie ma opcji „Akceptuj zawsze, nawet jeśli się zmienia”, ponieważ to przeciwdziała całej logice uwierzytelniania za pomocą klucza publicznego, byłoby to bardzo niebezpieczne. Tak, to pokaże duże ostrzeżenie, gdy przechowywany klucz publiczny i klucz publiczny serwera nie będą już pasować.
DanFromGermany

Odpowiedzi:

8

SFTP opiera się na SSH; hosty, z którymi się łączysz, tak jak w przypadku ssh, zapewnią Ci unikalny klucz, który pozwoli Ci je zidentyfikować. Jeśli zaakceptujesz klucz, w dowolnym momencie w przyszłości połączysz się z tym samym hostem, pod warunkiem, że klucz zostanie sprawdzony w stosunku do tego podanego za pierwszym razem (który jest przechowywany w $ HOME / .ssh / known-hosts) i jeśli dwa pasują nie zostaniesz ponownie zapytany; jeśli zamiast dwóch kluczy nie pasują, zostaniesz ostrzeżony o możliwym ataku (atak Man In The Middle, MTIM).

Jest to więc zasadniczo zabezpieczenie. SSH opiera się na TOFU (Trust On First Use). Oznacza to, że będziesz musiał zaakceptować klucz po sprawdzeniu przez administratora systemu, czy przedstawiony klucz jest rzeczywiście ich kluczem, a następnie przystąpić do nawiązania komunikacji.

EDYTOWAĆ:

Jak sprawdzić, czy prezentowany jest właściwy klucz, poza pytaniem (prawdopodobnie nieistniejącego) administratora systemu? Po pierwszym połączeniu z serwerem SSH / SFTP pojawia się coś takiego:

    $ ssh me@remote
      The authenticity of host '[remote]:22 ([192.168.1.72]:22)' can't be established.
      ECDSA key fingerprint is b2:2d:52:1a:40:c2:f9:ca:9a:42:86:76:f4:0b:eb:84.
      Are you sure you want to continue connecting (yes/no)? 

Zapisz rodzaj odcisku palca (ECDSA, powyżej) i sam odcisk palca, b2:2d:52:1a:40:c2:f9:ca:9a:42:86:76:f4:0b:eb:84 powyżej. Teraz przejdź do serwera (fizycznie lub, w przypadku VPS, do konsoli) i bez konieczności sudo su, idź do / etc / ssh. Zobaczysz, że jest ich wiele .pub pliki; jeden to ssh_host_ecdsa_key.pub (typ odcisku palca, który został nam przedstawiony). Teraz wydaj to polecenie:

   $ ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub

Jego wyjście musi dopasuj odcisk palca, który zaoferowano powyżej. Jeśli tak, możesz teraz zaakceptować odcisk palca klucza w sesji ssh i przejść do ssh na serwer.

Nie ma potrzeby importowania czegokolwiek z serwera: ssh zajmie się tym za Ciebie.

MariusMatutiae
źródło
Dziękuję za doskonałe wyjaśnienie. Więc jeśli łączę się z moją firmą hostingową, powinna istnieć lokalizacja, w której mogę znaleźć ten klucz? Następnie pobieram go do mojego katalogu znanych hostów?
1.21 gigawatts
1
@ 1.21gigawatts Zobacz moją edycję.
MariusMatutiae
1

To jest zredagowana wersja mój przewodnik Gdzie mogę uzyskać odcisk palca klucza hosta SSH, aby autoryzować serwer?


Powinieneś otrzymać odcisk klucza hosta SSH wraz z poświadczeniami od administratora serwera. Znajomość odcisku palca klucza hosta, a tym samym możliwość weryfikacji, jest integralną częścią zabezpieczenia połączenia SSH. Zapobiega ataki man-in-the-middle .

W rzeczywistym świecie większość administratorów nie dostarcza odcisku palca klucza hosta.

Jeśli chcesz osiągnąć najlepsze możliwe bezpieczeństwo, musisz połączyć się z serwerem przy użyciu najbardziej bezpiecznego sposobu. Zastosuj wszelkie możliwe środki ostrożności, aby zapewnić bezpieczeństwo lokalnej maszyny i linii do serwera. Na przykład, jeśli potrzebujesz uzyskać klucz hosta, aby zweryfikować połączenie z serwerem z zewnętrznej strony (np. Z domu lub klienta), ale masz fizyczny dostęp do witryny serwera, połącz się z witryny serwera (np. Z miejscem pracy) .

Możesz również poprosić kogokolwiek z fizycznym dostępem do serwera (najlepiej administratora). Klucz hosta jest tylko jeden, a więc taki sam dla wszystkich użytkowników. Należy również zauważyć, że odcisk palca klucza hosta jest generowany tylko z części klucza publicznego klucza hosta. Nie jest więc tajny i można go bezpiecznie przesyłać za pomocą niezaszyfrowanych (ale zaufanych) kanałów komunikacyjnych.

Szczególnym przypadkiem jest uzyskanie klucza hosta serwera, którego jesteś administratorem, ale nie masz bezpośredniej bezpiecznej linii do połączenia. Jest to powszechne w przypadku serwerów wirtualnych lub serwerów w chmurze. W takim przypadku dostawca serwera powinien mieć konkretne rozwiązanie. Na przykład wyspecjalizowany serwer w tej samej sieci prywatnej, co serwer, z publicznie znanymi kluczami hosta. Możesz połączyć się z tym wyspecjalizowanym serwerem iz niego bezpiecznie połączyć się z serwerem (np. Przy użyciu terminala SSH). Podczas łączenia się w sieci prywatnej można bezpiecznie zaufać dowolnemu kluczowi hosta. Po połączeniu się z serwerem zdobądź klucz hosta. Dzięki temu możesz w końcu połączyć się bezpośrednio, ale bezpiecznie przez sieć publiczną. Alternatywnie dostawca serwera może dostarczyć klucz hosta za pośrednictwem pewnego interfejsu administracyjnego.

Na przykład patrz mój przewodniki dla:

Martin Prikryl
źródło