Jak skonfigurować uwierzytelnianie dwuskładnikowe na Raspberry Pi

Raspberry Pi jest teraz wszędzie, dlatego przyciągnęło uwagę aktorów zagrożeń i cyberprzestępców. Pokażemy Ci, jak zabezpieczyć swoje Pi za pomocą uwierzytelniania dwuskładnikowego.

Niesamowite Raspberry Pi

Plik Raspberry Pi to komputer jednopłytkowy. Został uruchomiony w Wielkiej Brytanii w 2012 roku z zamiarem nakłonienia dzieci do majsterkowania, tworzenia i uczenia się kodu. Oryginalna forma była płytą wielkości karty kredytowej, zasilaną przez ładowarkę do telefonu.

Zapewnia wyjście HDMI, porty USB, łączność sieciową i działa w systemie Linux. Późniejsze dodatki do tej linii obejmowały jeszcze mniejsze wersje zaprojektowane do wbudowania w produkty lub do pracy jako systemy bezgłowe. Ceny wahają się od 5 USD za minimalistę Pi Zero, do 75 USD za Pi 4 B / 8 GB.

Jego sukces był niesamowity; ponad 30 milionów tych małych komputerów zostało sprzedanych na całym świecie. Hobbyści zrobili z nimi niesamowite i inspirujące rzeczy, w tym unosząc się na krawędzi kosmosu iz powrotem na balonie.

Niestety, gdy platforma komputerowa stanie się wystarczająco rozpowszechniona, nieuchronnie przyciąga uwagę cyberprzestępców. Strasznie jest myśleć, ile Pi używa domyślnego konta użytkownika i hasła. Jeśli twoje Pi jest publiczne i dostępne z Internetu przez Secure Shell (SSH), musi być bezpieczne.

Nawet jeśli nie masz żadnych cennych danych lub oprogramowania na swoim Pi, musisz je chronić, ponieważ twoje Pi nie jest rzeczywistym celem – to tylko sposób na dostanie się do twojej sieci. Gdy aktor zagrażający znajdzie przyczółek w sieci, przejdzie do innych urządzeń, którymi jest naprawdę zainteresowany.

Uwierzytelnianie dwuskładnikowe

Uwierzytelnianie – czyli uzyskiwanie dostępu do systemu – wymaga co najmniej jednego czynnika. Czynniki są podzielone na następujące kategorie:

Coś, co wiesz: takie jak hasło lub -fraza.
Coś, co masz: jak telefon komórkowy, fizyczny token lub klucz sprzętowy.
Coś, czym jesteś: odczyt biometryczny, taki jak odcisk palca lub skan siatkówki.

Uwierzytelnianie wieloskładnikowe (MFA) wymaga hasła i co najmniej jednego elementu z innych kategorii. W naszym przykładzie użyjemy hasła i telefonu komórkowego. Telefon komórkowy uruchomi aplikację uwierzytelniającą Google, a Pi uruchomi moduł uwierzytelniania Google.

Aplikacja na telefon komórkowy jest połączona z Twoim Pi poprzez zeskanowanie kodu QR. Przekazuje to pewne informacje wstępne do telefonu komórkowego z Pi, zapewniając, że ich algorytmy generowania liczb wytwarzają te same kody jednocześnie. Kody określane są jako hasła jednorazowe oparte na czasie (TOTP).

Kiedy otrzyma żądanie połączenia, twoje Pi generuje kod. Używasz aplikacji uwierzytelniającej na swoim telefonie, aby zobaczyć aktualny kod, a następnie Twoje Pi zapyta Cię o hasło i kod uwierzytelniający. Twoje hasło i TOTP muszą być poprawne, zanim będziesz mógł się połączyć.

Konfigurowanie Pi

Jeśli zwykle korzystasz z SSH na swoim Pi, prawdopodobnie jest to system bezgłowy, więc skonfigurujemy go przez połączenie SSH.

Najbezpieczniej jest wykonać dwa połączenia SSH: jedno do konfiguracji i testowania, a drugie do działania jako siatka bezpieczeństwa. W ten sposób, jeśli zablokujesz sobie dostęp do swojego Pi, nadal będziesz mieć aktywne drugie połączenie SSH. Zmiana ustawień SSH nie wpłynie na trwające połączenie, więc możesz użyć drugiego, aby cofnąć wszelkie zmiany i naprawić sytuację.

Jeśli wydarzy się najgorsze i zostaniesz całkowicie zablokowany przez SSH, nadal będziesz mógł podłączyć Pi do monitora, klawiatury i myszy, a następnie zalogować się do zwykłej sesji. Oznacza to, że nadal możesz się zalogować, o ile Twoje Pi może sterować monitorem. Jeśli jednak nie może, naprawdę musisz pozostawić otwarte połączenie SSH sieci bezpieczeństwa, dopóki nie zweryfikujesz, że uwierzytelnianie dwuskładnikowe działa.

Ostateczną sankcją jest oczywiście ponowne zainstalowanie systemu operacyjnego na karcie micro SD Pi, ale spróbujmy tego uniknąć.

Najpierw musimy wykonać nasze dwa połączenia z Pi. Oba polecenia mają następującą postać:

ssh [email protected]

ssh pi@watchdog.local w oknie terminala.

Nazwa tego Pi to „watchdog”, ale zamiast tego wpisz swoją nazwę. Jeśli zmieniłeś domyślną nazwę użytkownika, użyj jej również; nasze to „pi”.

Pamiętaj, ze względów bezpieczeństwa wpisz to polecenie dwukrotnie w różnych oknach terminala, aby mieć dwa połączenia z twoim Pi. Następnie zminimalizuj jeden z nich, aby nie przeszkadzał i nie został przypadkowo zamknięty.

Po nawiązaniu połączenia zobaczysz powitanie. Monit pokaże nazwę użytkownika (w tym przypadku „pi”) i nazwę Pi (w tym przypadku „watchdog”).

Połączenie SSH z Raspberry Pi w oknie terminala.

Musisz edytować plik „sshd_config”. Zrobimy to w edytorze tekstu nano:

sudo nano /etc/ssh/sshd_config

sudo nano / etc / ssh / sshd_config w oknie terminala.

Przewiń plik, aż zobaczysz następujący wiersz:

ChallengeResponseAuthentication no

Zastąp „nie” słowem „tak”.

Plik sshd_config otwarty w edytorze nano z podświetloną linią ChallengeResponseAuthentication w oknie terminala.

Naciśnij Ctrl + O, aby zapisać zmiany w nano, a następnie naciśnij Ctrl + X, aby zamknąć plik. Użyj następującego polecenia, aby zrestartować demona SSH:

sudo systemctl restart ssh

sudo systemctl zrestartuj ssh w oknie terminala.

Musisz zainstalować Google Authenticator, czyli plik Wtykowy moduł uwierzytelniania (PAM) biblioteka. Aplikacja (SSH) wywoła interfejs Linux PAM, a interfejs znajdzie odpowiedni moduł PAM do obsługi żądanego typu uwierzytelnienia.

Wpisz następujące informacje:

sudo apt-get install libpam-google-authenticator

sudo apt-get install libpam-google-authenticationator w oknie terminala.

Instalowanie aplikacji

Aplikacja Google Authenticator jest dostępna dla iPhone i Android, więc po prostu zainstaluj odpowiednią wersję dla swojego telefonu komórkowego. Możesz także użyć Authy i innych aplikacji, które obsługują ten typ kodu uwierzytelniającego.

Ikona aplikacji Google Authenticator na telefonie komórkowym z systemem Android.

Konfigurowanie uwierzytelniania dwuskładnikowego

Na koncie, którego będziesz używać podczas łączenia się z Pi przez SSH, uruchom następujące polecenie (nie dołączaj przedrostka sudo):

google-authenticator

Zostaniesz zapytany, czy chcesz, aby tokeny uwierzytelniania były oparte na czasie; naciśnij Y, a następnie naciśnij Enter.

ZA Szybka odpowiedź Generowany jest kod (QR), ale jest on zaszyfrowany, ponieważ jest szerszy niż 80-kolumnowe okno terminala. Przeciągnij okno szerzej, aby zobaczyć kod.

Pod kodem QR zobaczysz także kilka kodów bezpieczeństwa. Są one zapisywane w pliku o nazwie „.google_authenticator”, ale możesz teraz utworzyć ich kopię. Jeśli kiedykolwiek stracisz możliwość uzyskania TOTP (na przykład w przypadku utraty telefonu komórkowego), możesz użyć tych kodów do uwierzytelnienia.

Musisz odpowiedzieć na cztery pytania, z których pierwsze to:

Do you want me to update your "/home/pi/.google_authenticator" file? (y/n)

Naciśnij Y, a następnie naciśnij Enter.

Chcesz, żebym zaktualizował twój

Następne pytanie dotyczy tego, czy chcesz zapobiec wielokrotnemu używaniu tego samego kodu w ciągu 30-sekundowego okna.

Naciśnij Y, a następnie naciśnij Enter.

Czy chcesz zabronić wielokrotnego używania tego samego tokena uwierzytelniania?  (t / n) w oknie terminala.

Trzecie pytanie dotyczy tego, czy chcesz poszerzyć okno akceptacji tokenów TOTP.

Naciśnij klawisz N w odpowiedzi na to, a następnie naciśnij klawisz Enter.

Chcesz to zrobić?  (t / n) w oknie terminala.

Ostatnie pytanie brzmi: „Czy chcesz włączyć ograniczanie prędkości?”

Wpisz Y, a następnie naciśnij Enter.

Czy chcesz włączyć ograniczanie prędkości?  (t / n) w oknie terminala.

Wróciłeś do wiersza poleceń. Jeśli to konieczne, przeciągnij okno terminala szerzej i / lub przewiń w górę w oknie terminala, aby zobaczyć cały kod QR.

W telefonie komórkowym otwórz aplikację uwierzytelniającą, a następnie naciśnij znak plus (+) w prawym dolnym rogu ekranu. Wybierz „Zeskanuj kod QR”, a następnie zeskanuj kod QR w oknie terminala.

Nowy wpis pojawi się w aplikacji uwierzytelniającej, której nazwa pochodzi od nazwy hosta Pi, a pod nim zostanie wyświetlony sześciocyfrowy kod TOTP. Jest wyświetlany jako dwie grupy po trzy cyfry, aby ułatwić czytanie, ale musisz wpisać go jako jedną, sześciocyfrową liczbę.

Animowane kółko obok kodu wskazuje, jak długo kod będzie ważny: pełne kółko oznacza 30 sekund, półkole oznacza 15 sekund i tak dalej.

Łącząc to wszystko razem

Mamy jeszcze jeden plik do edycji. Musimy powiedzieć SSH, którego modułu uwierzytelniania PAM użyć:

sudo nano /etc/pam.d/sshd

sudo nano /etc/pam.d/sshd w oknie terminala.

Wpisz następujące wiersze w górnej części pliku:

#2FA

auth required pam_google_authenticator.so

wymagane uwierzytelnianie pam_google_authenticator.so dodane do pliku sshd w edytorze, w oknie terminala.

Możesz także wybrać, kiedy chcesz otrzymywać pytania o TOTP:

Po wprowadzeniu hasła: wpisz poprzednie wiersze poniżej „@include common-auth”, jak pokazano na powyższym obrazku.
Zanim zostaniesz poproszony o podanie hasła: wpisz poprzednie wiersze powyżej „@include common-auth”.

Zwróć uwagę na podkreślenia (_) użyte w „pam_google_authenticator.so” zamiast myślników (-), których używaliśmy wcześniej w poleceniu apt-get do zainstalowania modułu.

Naciśnij klawisze Ctrl + O, aby zapisać zmiany w pliku, a następnie naciśnij klawisze Ctrl + X, aby zamknąć edytor. Musimy ponownie uruchomić SSH po raz ostatni i gotowe:

sudo systemctl restart ssh

sudo systemctl zrestartuj ssh w oknie terminala.

Zamknij to połączenie SSH, ale pozostaw inne aktywne połączenie SSH z siecią bezpieczeństwa, dopóki nie zweryfikujemy tego następnego kroku.

Upewnij się, że aplikacja uwierzytelniająca jest otwarta i gotowa na telefonie komórkowym, a następnie otwórz nowe połączenie SSH z Pi:

ssh [email protected]

ssh pi@watchdog.local w oknie terminala.

Powinieneś zostać poproszony o podanie hasła, a następnie o kod. Wpisz kod z telefonu komórkowego bez spacji między cyframi. Podobnie jak twoje hasło, nie jest wyświetlane na ekranie.

Jeśli wszystko pójdzie zgodnie z planem, powinieneś mieć możliwość połączenia się z Pi; jeśli nie, skorzystaj z połączenia SSH z siecią bezpieczeństwa, aby przejrzeć poprzednie kroki.

Lepiej bezpieczniej niż przepraszam

Czy zauważyłeś powyżej „r” w słowie „bezpieczniejsze”?

Rzeczywiście, jesteś teraz bezpieczniejszy niż wcześniej podczas łączenia się z Raspberry Pi, ale nic nie jest w 100% bezpieczne. Istnieją sposoby na obejście uwierzytelniania dwuskładnikowego. Opierają się one na inżynierii społecznej, atakach typu man-in-the-middle i man-at-the-endpoint, zamianie kart SIM i innych zaawansowanych technikach, których oczywiście nie będziemy tutaj opisywać.

Po co więc zawracać sobie głowę tym wszystkim, jeśli nie jest to idealne? Cóż, z tego samego powodu, dla którego zamykasz drzwi wejściowe, kiedy wychodzisz, nawet jeśli są ludzie, którzy potrafią otwierać zamki – większość nie.