YubiKey

YubiKey – Autoryzacja w Linuksie

Uwierzytelnianie dwuskładnikowe (w skrócie 2FA – ang. Two Factor Authenticaton) staje się coraz popularniejsze wśród użytkowników świadomych zagrożeń w cyberprzestrzeni. Jednym z lepszych sposobów na stosowanie 2FA jest wykorzystywanie kluczy U2F (ang. Universal 2nd Factor). W niniejszym artykule zobaczysz jak wygląda autoryzacja w Linuksie za pomocą YubiKey, czyli najpopularniejszych kluczy U2F od firmy Yubico.

Klucze U2F to niewielkie urządzenia (wielkości pendrive), które do komunikacji wykorzystują USB lub NFC. Jeżeli w procesie autoryzacji wymagane jest użycie klucza U2F, musi on zostać fizycznie podpięty do portu USB lub komunikować się za pomocą NFC. Dzięki temu atakujący, którzy przejęli dane logowania nie mogą zalogować się do witryn lub usług, gdzie konta używają uwierzytelniania dwuskładnikowego oparte o klucze U2F.

Przewagą kluczy U2F jest to, że są fizycznym zabezpieczeniem. Dane zapisane na nim nie mogą zostać przejęte zdalnie przez atakujących, w przeciwieństwie do SMS-ów czy maili. Same klucze nie zawierają informacji odnośnie danych logowania, a także serwisów w jakich się ich używa. Dzięki czemu sam klucz U2F nie pozwala na dostęp np. do kont w mediach społecznościowych, jeżeli ustawi się go metodą 2FA.

YubiKey

Yubico Security Key NFC, którego używałem.

 

Sprawdź, czego nauczysz się dzięki kursowi Grafany!

Udostępniamy darmowo ponad godzinny materiał z kursu. Przekonaj się, że jest idealny dla Ciebie!

Chcesz wziąć udział w kursie? Kliknij w link i obejrzyj co Cię czeka: https://asdevops.pl/demo-grafana/

 

 

 

 

Jakie dystrybucje Linuksa pozwalają na wykorzystywanie kluczy U2F od Yubico?

YubiKey działa z wieloma różnymi dystrybucjami Linuksa. Na stronie producenta jest dobry opis działania kluczy U2F na systemach opartych na Debianie i Red Hat.

Zależnie od posiadanego klucza i pożądanej dystrybucji Linuksa możemy dobrać sposób instalacji. Przed instalacją należy zobaczyć, czy posiadany przez nas klucz U2F jest kompatybilny z używanym przez nas systemem.

Kompatybilność dla RHEL wygląda następująco:

Źródło: https://support.yubico.com/hc/en-us/articles/360016648999-Red-Hat-Linux-Family-Login-Guide-Challenge-Response

Kompatybilność dla Ubuntu wygląda następująco:

Źródło: https://support.yubico.com/hc/en-us/articles/360013708900-Using-Your-U2F-YubiKey-with-Linux

Moim kluczem U2F jest klucz z serii Security Keys, dlatego przeprowadziłem instalację na Debianie. Początkowo chciałem ją przeprowadzić na RHEL, lecz po przeprowadzeniu całego procesu instalacji używanie klucza okazało się niemożliwe – RHEL do uwierzytelniania wymaga generowania jednorazowych haseł (OTP, ang. – One-time password). Na podstawie kilku „straconych” godzin mojego życia polecam najpierw sprawdzić kompatybilność, a potem zacząć działać J.

Instalacja oprogramowania do logowania za pomocą YubiKey na Red Hat Enterprise Linux

Poradnik od Yubico do instalacji oprogramowania koniecznego do autoryzacji kluczami U2F w RHEL dostępny jest tutaj.

Instalacja oprogramowania do logowania za pomocą YubiKey na Debianie

Instalację przeprowadziłem zgodnie z instrukcjami od producenta, które dostępne są tutaj i tutaj.

Przede wszystkim musimy zacząć od zainstalowania pakietu pcscd. Służy on do zarządzania kartami mikroprocesorowymi w czasie rzeczywistym, dzięki czemu możemy użyć YubiKey’a do uwierzytelniania. Aby to zrobić, należy użyć polecenia:

sudo apt-get install pcscd

YubiKey

Drugim sposobem jest pobranie pcscd za pomocą snapa. Nie polecam tego. Z tą wersją oprogramowania występują problemy, o czym można przeczytać tutaj.

Kolejnym krokiem jest poprawne uruchomienie usługi. Aby tego dokonać, wystarczy użyć poleceń:

sudo systemctl enable pcscd
sudo systemctl start pcscd.service

Sprawdźmy jeszcze poprawność działania usługi za pomocą polecenia:

sudo systemctl status pcscd.service

Jeżeli usługa jest aktywna, czyli w polu Active posiada wartość active (running), możemy przejść dalej.

Następnym krokiem jest dodanie repozytoriów, które pozwolą na doinstalowanie potrzebnych pakietów. Aby dodać repozytoria, należy użyć polecenia:

sudo add-apt-repository ppa:yubico/stable
YubiKey

Po poprawnej instalacji warto jeszcze użyć polecenia sudo apt-get update, aby mieć pewność wykrywania przez system uprzednio dodanych repozytoriów. Następnie możemy przejść do instalacji wymaganych pakietów. Dokonuje się tego za pomocą poleceń:

sudo apt install yubikey-manager
sudo apt install yubikey-personalization-gui
sudo apt install libpam-yubico
sudo apt install libpam-u2f
YubiKey

Po zainstalowaniu czterech powyższych pakietów można przejść do skonfigurowania uwierzytelniania z wykorzystaniem klucza U2F.

Konfigurowanie logowania za pomocą YubiKey na Debianie

Po zainstalowaniu koniecznych pakietów można przejść do dodania klucza U2F jako wymaganego składnika w procesie autoryzacji.

W katalogu domowym /home/ (oznaczanym przez system jako ~) należy utworzyć katalog /Yubico/ wewnątrz katalogu /.config/. Aby to zrobić, należy użyć polecenia:

mkdir –p ~/.config/Yubico

–p to flaga, która pozwala na stworzenie nadrzędnego katalogu, jeżeli takowy nie istniał – w naszym przypadku jest to wymagane, ponieważ do utworzenia katalogu /Yubico/ musimy najpierw stworzyć ukryty katalog /.config/.

Źródło: https://man7.org/linux/man-pages/man1/mkdir.1.html

Po utworzeniu wspomnianego katalogu możemy przejść do dodania Yubikey’a do naszego konta. Aby zacząć ten proces, należy użyć polecenia:

pamu2fcfg > ~/.config/Yubico/u2f_keys
YubiKey

Jeżeli klucz prywatny posiada nadany PIN, zostaniemy poproszeni o jego wpisanie. Następnie YubiKey zacznie charakterystycznie mrugać. To sygnał, że należy go dotknąć, aby dokończyć proces.

Świecący Yubikey, który należy dotknąć.

Dla bezpieczeństwa warto również przenieść uprzednio utworzony plik do miejsca, które wymaga uprawnień roota do edycji. Przykładowo, można przenieść taki plik do katalogu /etc/. Można to zrobić za pomocą polecenia:

sudo mv  ~/.config/Yubico/u2f_keys /etc/Yubico/u2f_keys

Zobaczmy z ciekawości co zawiera plik, który właśnie przenieśliśmy do katalogu /etc/. Można to zrobić za pomocą polecenia:

cat /etc/Yubico/u2f_keys

Jak widać – plik zawiera ciąg znaków, które są praktycznie niemożliwe do odgadnięcia

Kolejnym krokiem jest ustawienie logowania za pomocą YubiKey’a. Sposób uwierzytelniania przez system możemy zmienić edytując plik sudo w katalogu /etc/pam.d/.

Polecenie, które pozwala nam to zrobić, wygląda następująco:

sudo nano /etc/pam.d/sudo
YubiKey

Oczywiście, można do tego celu użyć innego edytora tekstu niż nano J.

Po otwarciu pliku w edytorze tekstu, pod linijką @include common-auth należy dopisać:

auth      required               pam_u2f.so authfile=/etc/Yubico/u2f_keys

Ważne – auth, required i pam_u2f.so są oddzielone od siebie tabulacjami (za pomocą klawisza TAB), zaś authfile=/etc/Yubico/u2f_keys jest oddzielone spacją od pam_u2f.so. Jeżeli plik nie został przeniesiony do innego katalogu, dopisek authfile=[ścieżka] nie jest konieczny.

Tak powinien wyglądać plik /etc/pam.d/sudo.

Po zapisaniu pliku (w nano domyślnie jest to skrót Ctrl+O i Enter) możemy przetestować konfigurację. Nie wyłączaj jeszcze terminala, dzięki któremu zostały wprowadzone zmiany w pliku /etc/pam.d/sudo. W przypadku popełnienia jakiegoś błędu możemy wrócić do poprzedniej konfiguracji. Jeżeli zamkniemy terminal, a uwierzytelnianie nie będzie działać prawidłowo, to możemy zostać odcięci od dostępu do konta.

Aby przetestować konfigurację, należy odpiąć klucz U2F. Wykonajmy teraz testowe polecenie, jakim może być sudo echo test.

Pomimo wpisywania dobrego hasła do konta stefan, nie zostaniemy uwierzytelnieni, ponieważ do tego wymagane jest wykorzystanie uprzednio dodanego do konta klucza U2F. Teraz spróbujmy zrobić to samo z YubiKey’em podpiętym do USB.

YubiKey

YubiKey w porcie USB

Zostaniemy poproszeni o wpisanie hasła, następnie zaś o dotknięcie świecącego się YubiKey’a.

YubiKey ponownie świeci się i wymaga dotknięcia do uwierzytelnienia.

Dzięki temu YubiKey jest wymagany do uwierzytelnienia jako super użytkownik (sudoer).

Podsumowanie

Autoryzacja w wykorzystaniem kluczy U2F zdecydowanie zwiększa bezpieczeństwo i utrudnia ataki mające na celu uzyskanie dostępu do konta. Warto rozważyć korzystanie z YubiKey’a jako metody dwuetapowej weryfikacji, ponieważ używanie fizycznego zabezpieczenia chroni np. przed atakami phishingowymi i nie tylko.

Pisał dla Was Oskar Klimczuk.

 

 

 

Sprawdź, czego nauczysz się dzięki kursowi Grafany!

Udostępniamy darmowo ponad godzinny materiał z kursu. Przekonaj się, że jest idealny dla Ciebie!

Chcesz wziąć udział w kursie? Kliknij w link i obejrzyj co Cię czeka: https://asdevops.pl/demo-grafana/

 
 
 

Lekcja demo kursu Grafany!

X