„Secure Shell” SSH to protokół sieciowy służący do ustanawiania bezpiecznego połączenia między hostami, standardowo przez port 22 (który lepiej zmienić). Klienci i serwery SSH są dostępne dla większości systemów operacyjnych. Prawie każdy inny protokół sieciowy działa w ramach SSH, to znaczy można pracować zdalnie na innym komputerze, przesyłać strumień audio lub wideo zaszyfrowanym kanałem itp. Oprócz,
Uwierzytelnianie odbywa się za pomocą hasła, ale programiści i administratorzy systemów tradycyjnie używają kluczy SSH. Problem w tym, że klucz prywatny może zostać skradziony. Dodanie hasła teoretycznie chroni przed kradzieżą klucza prywatnego, ale w praktyce przy przekazywaniu i buforowaniu kluczy
Jak wdrożyć uwierzytelnianie dwuskładnikowe
Niedawno opublikowali programiści z Honeycomb
W instrukcji założono, że masz określony podstawowy host otwarty do Internetu (bastion). Chcesz połączyć się z tym hostem z laptopów lub komputerów przez Internet i uzyskać dostęp do wszystkich innych urządzeń znajdujących się za nim. 2FA gwarantuje, że osoba atakująca nie będzie mogła zrobić tego samego, nawet jeśli uzyska dostęp do Twojego laptopa, na przykład instalując złośliwe oprogramowanie.
Pierwsza opcja to OTP
OTP – jednorazowe hasła cyfrowe, które w tym przypadku wraz z kluczem posłużą do uwierzytelnienia SSH. Twórcy piszą, że nie jest to idealna opcja, ponieważ osoba atakująca może podnieść fałszywy bastion, przechwycić Twoje OTP i wykorzystać je. Ale lepsze to niż nic.
W tym przypadku po stronie serwera w konfiguracji Chef zapisywane są następujące linie:
metadata.rb
attributes/default.rb
(odattributes.rb
)files/sshd
recipes/default.rb
(skopiuj zrecipe.rb
)templates/default/users.oath.erb
Po stronie klienta instalowana jest dowolna aplikacja OTP: zainstalowany Google Authenticator, Authy, Duo, Lastpass brew install oath-toolkit
lub apt install oathtool openssl
, następnie generowany jest losowy ciąg znaków (klucz) base16. Jest on konwertowany do formatu Base32 używanego przez mobilne uwierzytelniacze i importowany bezpośrednio do aplikacji.
W rezultacie możesz połączyć się z Bastionem i zobaczyć, że wymaga on teraz nie tylko hasła, ale także kodu OTP do uwierzytelnienia:
➜ ssh -A bastion
Enter passphrase for key '[snip]':
One-time password (OATH) for '[user]':
Welcome to Ubuntu 18.04.1 LTS...
Drugą opcją jest uwierzytelnianie sprzętowe
W takim przypadku użytkownik nie musi za każdym razem wpisywać kodu OTP, ponieważ drugim czynnikiem jest urządzenie sprzętowe lub dane biometryczne.
Tutaj konfiguracja Chefa jest nieco bardziej skomplikowana, a konfiguracja klienta zależy od systemu operacyjnego. Jednak po wykonaniu wszystkich kroków klienci korzystający z systemu MacOS mogą potwierdzić uwierzytelnienie w SSH za pomocą hasła i przykładając palec do czujnika (drugi czynnik).
Właściciele iOS i Androida potwierdzają logowanie
W systemie Linux/ChromeOS istnieje możliwość pracy z tokenami USB YubiKey. Oczywiście atakujący może ukraść Twój token, ale nadal nie zna hasła.
Źródło: www.habr.com