Uwierzytelnianie dwuskładnikowe w Linux

Uwierzytelnianie dwuskładnikowe w Linux

W obecnym świecie hasła stanowią pierwszą linię obrony przed nieautoryzowanym dostępem do Twojego systemu i danych. Jednak same hasła nie są niezawodne i mogą zostać naruszone za pomocą różnych środków, takich jak ataki socjotechniczne, ataki siłowe i próby phishingu. W tym miejscu z pomocą przychodzi uwierzytelnianie dwuskładnikowe.

Uwierzytelnianie dwuskładnikowe dodaje dodatkową warstwę bezpieczeństwa do procesu logowania. Wymaga drugiego elementu oprócz hasła, takiego jak token, odcisk palca lub kod SMS. To znacznie utrudnia atakującym uzyskanie nieautoryzowanego dostępu do systemów Linux i danych w nim zawartych. Implementacja uwierzytelniania dwuskładnikowego może wydawać się zniechęcającym zadaniem. Jednak niesie za sobą spore korzyści w zakresie bezpieczeństwa i własnego spokoju. Dlatego w tym materiale chciałbym pokazać, w jaki sposób używać tej techniki, gdy chcemy połączyć się przy pomocy SSH.

 

Dołącz do Wyzwania "Opanuj Kontenery"!

Do 30 czerwca możesz dołączyć do wyzwania "Opanuj Kontenery". Możesz wziąć udział w pojedynczych kursach, bądź skorzystać z pakietów "Razem taniej". Do odebrania dodatkowo dwa kursy za darmo z kodem "Opanujkontenery2024"!

Chcesz dołączyć do szkolenia! Zapisy na stronie: https://asdevops.pl/kontenery

 

 

Co to jest uwierzytelnianie dwuskładnikowe i jak działa?

Uwierzytelnianie dwuskładnikowe tak jak wspomniałem na wstępie to mechanizm bezpieczeństwa, który wymaga dwóch form identyfikacji przed przyznaniem dostępu do systemu lub usługi. Te dwa czynniki zazwyczaj dzielą się na trzy kategorie: coś, co znasz (np. hasło), coś, co masz (np. token lub smartfon) oraz coś, czym jesteś (np. odcisk palca lub rozpoznawanie twarzy). Ideą tego typu uwierzytelnienia jest to, że nawet jeśli atakującemu uda się zdobyć twoje hasło, nadal nie będzie mógł uzyskać dostępu do twojego systemu bez drugiego czynnika. Na przykład, jeśli włączysz 2FA na swoim koncie Gmail. Będziesz musiał wprowadzić hasło oraz kod wygenerowany przez aplikację lub wysłany na Twój telefon SMS-em, aby się zalogować.

Istnieje kilka rodzajów metod 2FA, w tym tokeny sprzętowe, tokeny programowe, uwierzytelnianie oparte na SMS-ach i uwierzytelnianie biometryczne. Każda metoda ma swoje mocne i słabe strony. Jednak pamiętaj, nie istnieje idealne zabezpieczenie. Nawet klucze YubiKey nie gwarantują 100% bezpieczeństwa pomimo tego, że są obecnie uważane za najbezpieczniejszą metodę uwierzytelniania.

Przegląd różnych typów uwierzytelniania dwuskładnikowego

Tak jak wymieniłem to w poprzednim paragrafie istnieje kilka rodzajów metod uwierzytelniania dwuskładnikowego, których można użyć do zabezpieczenia. Oto ich opis:

Tokeny sprzętowe to fizyczne urządzenie, które generuje unikalny kod, który należy wprowadzić wraz z hasłem, aby się zalogować. Tokeny te mogą mieć postać klucza USB, karty inteligentnej lub breloka. Są wygodne w użyciu i zapewniają doskonałe bezpieczeństwo, ponieważ nie można do nich się dostać zdalnie.

Tokeny programowe działają podobnie do tokenów sprzętowych. Jednak zamiast fizycznego urządzenia aplikacja generuje unikalny kod, który należy wprowadzić wraz z hasłem, aby się zalogować. Tokeny te można zainstalować na smartfonie lub tablecie.

Uwierzytelnianie za pomocą wiadomości SMS obejmuje otrzymanie unikalnego kodu za pośrednictwem wiadomości tekstowej na telefon. Aby się zalogować, musisz wprowadzić ten kod wraz z hasłem. Chociaż ta metoda jest wygodna, jest również mniej bezpieczna niż tokeny sprzętowe lub programowe, ponieważ wiadomości SMS mogą zostać przechwycone lub opóźnione.

Uwierzytelnianie biometryczne wykorzystuje cechy fizyczne, takie jak odcisk palca lub rozpoznawanie twarzy, w celu uwierzytelnienia tożsamości. Ta metoda jest bardzo bezpieczna, ale do prawidłowego działania wymaga specjalistycznego sprzętu i oprogramowania.

Niezależnie od tego, czy pisałbym tutaj o poczcie, czy też o kontach na platformach takich jak Allegro, czy też Linkedin, pamiętaj, aby z uwierzytelnienia dwuskładnikowego korzystać. Sama konfiguracja najczęściej w takich portalach polega na włączeniu odpowiedniej opcji oraz sparowaniu z wybraną przez Ciebie metodą. Dlatego poświęć tę chwilę na konfigurację, a na pewno tym sposobem utrudnisz osobom niepowołanym dostęp do twojego konta.

Instalacja i konfiguracja Google Authenticator

Jeżeli uważasz, że włączenie możliwości dwuskładnikowego logowania za pomocą SSH jest czymś bardzo trudnym do wykonania, to jesteś w ogromnym błędzie! Jednak jeżeli jeszcze nie masz zainstalowanej aplikacji od Google w twoim smartfonie lub tablecie, to zainstaluj ją teraz. Nosi nazwę Authenticator, powinieneś znaleźć go bez problemu w sklepie Play w androidzie. Niestety nie korzystam IPhona, dlatego nie pokieruję, jednak aplikacja powinna nosić podobną nazwę.

Po zainstalowaniu aplikacji na nasze urządzenie przenośne możemy przystąpić do instalacji programu na komputerze. Instalację przeprowadzę w systemie Debian 11 Bullseye. Pakiet, który zainstalujemy, znajduje się w repozytorium systemowym, dlatego w celu jego instalacji korzystamy z menadżera pakietów apt w następujący sposób:

sudo apt install -y libpam-google-authenticator

Oczywiście, jeżeli chcemy skonfigurować możliwość połączenia dwuskładnikowego za pomocą SSH, to musimy ten pakiet również mieć zainstalowany:

sudo apt install -y ssh

Po zainstalowaniu pozostało wykonać konfigurację, wprowadzając w terminalu polecenie:

google-authenticator

Pierwsze co pojawi się to kod QR, który możemy zeskanować za pomocą aplikacji lub wprowadzić go ręcznie. W ten sposób połączymy autoryzację z naszym urządzeniem przenośnym. Dzięki temu korzystać będziemy z kodów, jakie będą się wyświetlały w smartfonie.

Po wykonaniu powyższych czynności zostaniesz zapytany o kilka ważnych dla aplikacji ustawień. W większości przypadków na każde z nich odpowiedzieć powinieneś y, czyli yes. Jednak zawsze warto zapoznać się, z tym, co zatwierdzamy. W ramach tego artykułu na każde zadane pytanie odpowiadam, yes. Natomiast Ty zapoznaj się z każdym zadanym pytaniem.

Konfiguracja SSH

Teraz pozostało odpowiednio skonfigurować SSH tak, aby korzystał z zainstalowanego uwierzytelnienia. Pierwsze co musimy zrobić to edytować główny plik konfiguracyjny SSH:

sudo nano /etc/ssh/sshd_config

Po otworzeniu pliku odnajdujemy:

UsePAM yes

Opcja powinna być automatycznie oznaczona jako włączona. Czyli powinna zawierać yes tak jak w powyższym przykładzie. Jednak zawsze warto to zweryfikować. Następnie odszukujemy:

ChallengeResponseAuthentication yes

We wskazanej opcji zmieniamy z no na yes tak jak w powyższym przykładzie.

Jeżeli korzystamy z kluczy SSH do logowania i chcemy dodatkowo używać wspomnianego uwierzytelnienia, to na samym końcu tego pliku musimy dodać następująca linię:

AuthenticationMethods publickey,keyboard-interactive

Dzięki temu włączymy obie możliwości.

Po wprowadzeniu powyższych zmian zapisujemy i zamykamy plik.

Teraz musimy ustawić regułę PAM dla SSH. Dlatego edytujemy plik:

sudo nano -w /etc/pam.d/sshd

Dodajemy do pliku następującą linię:

# Authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Następnie zapisujemy i zamykamy plik.

Pozostało zrestartować usługę ssh:

sudo systemctl restart ssh

Po wykonaniu powyższych czynności powinniśmy mieć możliwość korzystania z uwierzytelnienia dwuskładnikowego, gdy chcemy połączyć się z systemem za pomocą ssh. Sprawdźmy to:

ssh user@10.0.2.15
(user@10.0.2.15) Password:
(user@10.0.2.15) Verification code:

Jesteśmy proszeni o podanie dodatkowego kodu weryfikującego, który uzyskamy dzięki aplikacji na naszym przenośnym urządzeniu.

Jak widzisz, nie jest to nic mocno skomplikowanego. Jeżeli korzystasz z systemu Linux na co dzień, to co wykonałem do tej pory, można powiedzieć, że wykonuje się często przy konfiguracji aplikacji uruchamianych z wiersza poleceń.

Dobre praktyki uwierzytelniania dwuskładnikowego

Choć mógłbym w tym miejscu zakończyć ten artykuł, to jednak chciałbym, abyś poświęcił jeszcze chwilę, na przeczytanie zaleceń dotyczących wspomnianych uwierzytelnień. To, co opisuję w tym paragrafie, nie dotyczy tylko metody opisanej powyżej, dlatego tym bardziej uważam, że warto się z tym zapoznać. Poniżej opisuję kilka dobrych moim zdaniem praktyk, do których powinniśmy się stosować, gdy chcemy korzystać z tego typu uwierzytelnienia:

Użyj zaufanej metody 2FA – wybierając metodę uwierzytelnienia, wybierz taką, która jest bezpieczna i godna zaufania. Niektóre popularne tego typu metody obejmują tokeny sprzętowe, tokeny programowe, uwierzytelnianie oparte na SMS-ach i uwierzytelnianie biometryczne. Ważne jest, aby zbadać i wybrać metodę zgodną z systemem Linux i spełniającą potrzeby w zakresie bezpieczeństwa.

Regularnie zmieniaj hasła – nawet przy włączonym dwuskładnikowym uwierzytelnianiu nadal ważna jest regularna zmiana haseł, aby zapewnić bezpieczeństwo systemu. Ustaw zasady wygasania haseł i wymuszaj regularne ich zmiany.

Zapewnij szkolenie użytkowników – aby upewnić się, że wdrożenie uwierzytelnianie jest skuteczne, ważne jest przeprowadzenie szkolenia dla użytkowników. Może to obejmować informacje o tym, jak skonfigurować i korzystać z tego, a także najlepsze praktyki tworzenia haseł i zarządzania nimi.

Monitoruj dzienniki systemowe – regularne monitorowanie dzienników systemowych może pomóc zidentyfikować potencjalne zagrożenia bezpieczeństwa lub problemy ze wdrożeniem wybranego uwierzytelnienia. Przejrzyj dzienniki pod kątem nieudanych prób logowania, nieautoryzowanych prób dostępu i innych podejrzanych działań.

Stosując się do powyższych praktyk, zapewniasz solidne podłoże bezpieczeństwa dla twojego systemu.

Podsumowanie – Uwierzytelnianie dwuskładnikowe w Linux

Tak jak zaprezentowałem to w powyższym artykule, wdrożenie dwuskładnikowego logowania do SSH nie jest czynnością skomplikowaną, a może znacznie zwiększyć bezpieczeństwo twojego na przykład serwera. Mam nadzieję, że w ten sposób zachęciłem was do korzystania z tej metody czy też służbowo, czy też prywatnie.

Chcesz wiedzieć więcej na temat administracji? Przeczytaj nasze artykuły, a także weź udział w kursach!

Dołącz Do Wyzwania "Opanuj Kontenery"!

Do 30 czerwca możesz dołączyć do wyzwania "Opanuj Kontenery". Możesz wziąć udział w pojedynczych kursach, bądź skorzystać z pakietów "Razem taniej". Do odebrania dodatkowo dwa kursy za darmo z kodem "Opanujkontenery2024"!

Chcesz dołączyć do szkolenia! Zapisy na stronie: https://asdevops.pl/kontenery

 
 

Dołącz do wakacyjnego wyzwania "Opanuj Kontenery"!

X