Logowanie do pulpitu i uwierzytelnianie użytkowników systemu Linux#

(Nitrokey FIDO U2F - Linux)

Wstęp#

Ten przewodnik przeprowadzi Cię przez konfigurację Linuksa, aby użyć FIDO Universal 2nd Factor, czyli FIDO U2F z libpam-u2f i Nitrokey FIDO2.

Jeśli chcesz zalogować się do komputera za pomocą Nitrokey Pro 2, Nitrokey Storage 2 i Nitrokey Start możesz odwiedzić instrukcje dostępne tutaj.

Wymagania#

  • Ubuntu 20.04 z Gnome Display Manager.

  • Nitrokey FIDO2 skonfigurowany według tych instrukcji.

Instrukcje#

Metoda GUI#

  1. W lewym dolnym rogu kliknij przycisk Show Applications i wpisz w pasku wyszukiwania następujące ustawienia:.

img1
  1. Przewiń w dół na prawym pasku do Users.

img2
  1. w lewym rogu kliknij przycisk Unlock i pojawi się monit o podanie hasła.

img3
  1. Wybierz Administrator i wprowadź wybraną nazwę użytkownika i hasło.

img4
  1. Po ukończeniu kroku 4 powinieneś być gotowy.

img5

Metoda CLI#

  1. Utwórz użytkownika backupu i nadaj mu uprawnienia roota.

Można to zrobić za pomocą tych poleceń:

$ sudo adduser <backup_user>
$ sudo usermod -aG sudo <backup_user>

Jeśli wolisz skonfigurować U2F dla pojedynczego użytkownika i zostaniesz zablokowany w swojej sesji użytkownika, nadal będziesz mógł się zalogować za pomocą <backup_user> i kontynuować konserwację.

Ostrzeżenie

Poniższa instrukcja może potencjalnie zablokować dostęp do komputera. Należy być świadomym tego ryzyka, ponieważ zaleca się, aby najpierw skorzystać z poniższych instrukcji na komputerze pomocniczym lub po wykonaniu pełnej kopii zapasowej.

Możesz stracić dostęp do swoich danych po skonfigurowaniu ` modułów PAM <https://www.man7.org/linux/man-pages/man8/pam.8.html>`__.

  1. Skonfiguruj rules do rozpoznawania Nitrokey FIDO2.

Under /etc/udev/rules.d download 41-nitrokey.rules

$ cd /etc/udev/rules.d/
$ sudo wget https://raw.githubusercontent.com/Nitrokey/libnitrokey/master/data/41-nitrokey.rules

I uruchom ponownie udev usługę

$ sudo systemctl restart udev
  1. Instalacja libpam-u2f

W Ubuntu 20.04 można pobrać bezpośrednio libpam-u2f z oficjalnych repozytoriów

$ sudo apt install libpam-u2f

Informacja

Kliknij, aby zobaczyć więcej opcji

  • Alternatywnie możesz zbudować libpam-u2f z Git.

  • Aby sprawdzić, czy biblioteka została poprawnie zainstalowana, wpisz następujące polecenie:

$ file /lib/x86_64-linux-gnu/security/pam_u2f.so

Wyjście powinno wyglądać jak poniżej:

/lib/x86_64-linux-gnu/security/pam_u2f.so: \ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),\ dynamically linked, BuildID[sha1]=1d55e1b11a97be2038c6a139579f6c0d91caedb1, stripped
  1. Przygotowanie katalogu

Utwórz .config/Nitrokey/ w swoim katalogu domowym.

$ mkdir ~/.config/Nitrokey

I podłącz swój Nitrokey FIDO2.

Po zakończeniu przygotowań, możemy rozpocząć konfigurację komputera, aby używać Nitrokey FIDO2 do uwierzytelniania 2-go czynnika przy logowaniu i sudo.

  1. Generowanie pliku konfiguracyjnego U2F.

Do wygenerowania pliku konfiguracyjnego użyjemy narzędzia pamu2fcfg, które jest dołączone do libpam-u2f. Dla wygody, zapiszemy wyjście narzędzia bezpośrednio do pliku u2f_keys pod .config/Nitrokey. Najpierw podłącz swój Nitrokey FIDO2 (jeśli jeszcze tego nie zrobiłeś) i wprowadź następującą komendę:

$ pamu2fcfg > ~/.config/Nitrokey/u2f_keys

Po uruchomieniu powyższej komendy należy dotknąć klawisza, gdy będzie on migał. Gdy to zrobimy, pamu2fcfg dołączy swoje dane wyjściowe do u2f_keys w następującym formacie:

<username>:Zx...mw,04...0a

Uwaga, wyjście będzie znacznie dłuższe, ale wrażliwe części zostały tutaj usunięte. Dla lepszego bezpieczeństwa i po wygenerowaniu pliku konfiguracyjnego, przeniesiemy katalog .config/Nitrokey pod katalog etc/ za pomocą tej komendy:

$ sudo mv ~/.config/Nitrokey /etc

Wskazówka

  • Plik pod .config/Nitrokey musi mieć nazwę u2f_keys.

  • Zaleca się, aby najpierw przetestować instrukcje z pojedynczym użytkownikiem. W tym celu poprzednie polecenie przyjmuje opcję -u, aby określić użytkownika, jak w poniższym przykładzie:

$ pamu2fcfg -u <username> > ~/.config/Nitrokey/u2f_keys
  • Dla indywidualnej konfiguracji użytkownika należy w następnym kroku wskazać na katalog domowy, lub nie włączać opcji authfile w konfiguracji PAM.

  1. Backup

Ten krok jest opcjonalny, jednak zaleca się posiadanie zapasowego Nitrokey w przypadku utraty, kradzieży lub zniszczenia Twojego Nitrokey FIDO.

Aby skonfigurować klucz zapasowy, powtórz powyższą procedurę i użyj pola pamu2fcfg -n. Spowoduje to pominięcie pola <username>, a dane wyjściowe można dołączyć do wiersza z twoim <username> w ten sposób:

<username>:Zx...mw,04...0a:xB...fw,04...3f
  1. Modyfikuj Pluggable Authentication Module PAM.

Ostatnim krokiem jest skonfigurowanie plików modułu PAM pod /etc/pam.d/. W tym przewodniku zmodyfikujemy plik common-auth, ponieważ obsługuje on ustawienia uwierzytelniania, które są wspólne dla wszystkich usług, ale możliwe są też inne opcje. Możesz zmodyfikować ten plik za pomocą następującego polecenia:

$ cd /etc/pam.d
$ sudo $editor common-auth

I dodaj następujące linie:

#Nitrokey FIDO2 config
auth    sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue prompt nouserok

Wskazówka

  • Ponieważ używamy Central Authentication Mapping, musimy podać pam_u2f lokalizację pliku do użycia z opcją authfile.

  • Jeśli często zapominasz włożyć klucz, prompt opcja sprawia, że pam_u2f drukuje Insert your U2F device, then press ENTER. i daje Ci szansę włożyć Nitrokey.

  • Jeśli chcesz, aby był wyświetlany monit o dotknięcie Nitrokey, cue opcja spowoduje, że pam_u2f wydrukuje Please touch the device. wiadomość.

  • nouserok zapewni, że nadal będziesz mógł się logować używając nazwy użytkownika i hasła, możesz chcieć to usunąć w pewnym momencie, gdy konfiguracja będzie działać i nie będziesz chciał regularnego logowania opartego na nazwie użytkownika i haśle.

Gdy już zmodyfikowaliśmy common-auth, możemy zapisać i wyjść z pliku.

Możesz przetestować konfigurację wpisując sudo ls w terminalu. Powinieneś otrzymać komunikat Please touch the device. i mieć podobne wyjście w terminalu:

nitrouser@nitrouser:~$ sudo ls
[sudo] password for nitrouser:  Please touch the device.

Możesz również przetestować swoją konfigurację, wylogowując się z sesji użytkownika i logując się ponownie. Podobny ekran powinien zostać wyświetlony po odłączeniu/ponownym podłączeniu Nitrokey FIDO2 i wpisaniu hasła:

img6

Zastosowanie#

Po modyfikacji modułu PAM, będziesz mógł od razu przetestować swoją konfigurację, ale zalecane jest ponowne uruchomienie komputera i odłączenie/wyłączenie Nitrokey FIDO2.

Po prawidłowym przetestowaniu instrukcji zawartych w tym przewodniku (i utworzeniu kopii zapasowej), zalecane jest użycie flagi kontrolnej required lub requisite zamiast sufficient.

Flagi required i requisite zapewniają ściślejszą kontrolę dostępu i sprawią, że Nitrokey FIDO2 będzie niezbędny do zalogowania się i/lub korzystania ze skonfigurowanej usługi.

Jeśli potrzebujesz więcej informacji o Control Flags w linii konfiguracyjnej PAM, możesz zobaczyć ostatnią sekcję tego przewodnika, aby zrozumieć różnicę i implikacje używania każdego z nich.

Moduły PAM#

Istnieje kilka plików modułów PAM, które mogą być modyfikowane zgodnie z Twoimi potrzebami:

  • Modyfikując plik /etc/pam.d/common-auth, będziesz mógł użyć Nitrokey FIDO do uwierzytelniania drugiego czynnika dla logowania graficznego i sudo. Uwaga: common-auth powinien być zmodyfikowany przez dodanie dodatkowej linii konfiguracyjnej na końcu pliku.

  • Jeśli chcesz używać uwierzytelniania FIDO U2F wyłącznie do logowania graficznego w Gnome, możesz zmodyfikować /etc/pam.d/gdm-password.

  • Alternatywnie możesz po prostu zmodyfikować plik /etc/pam.d/sudo, jeśli chcesz używać FIDO U2F podczas korzystania z polecenia sudo.

Flagi kontrolne#

W kroku 7 użyliśmy flagi kontrolnej sufficient aby określić zachowanie modułu PAM gdy Nitrokey jest podłączony lub nie. Jednakże możliwa jest zmiana tego zachowania poprzez użycie następujących flag kontrolnych:

  • required: To jest najbardziej krytyczna flaga. Wynik modułu musi być pomyślny, aby uwierzytelnianie mogło być kontynuowane. Ta flaga może zablokować Twój komputer, jeśli nie masz dostępu do Nitrokey.

  • requisite: Podobne do required, jednak w przypadku, gdy określony moduł zwraca błąd, kontrola jest zwracana bezpośrednio do aplikacji, lub do nadrzędnego stosu PAM. Ta flaga może także zablokować Cię z Twojego komputera, jeśli nie masz dostępu do Nitrokey.

  • sufficient: Wynik modułu jest ignorowany, jeśli się nie powiedzie. Flaga sufficient uważana za bezpieczną do celów testowych.

  • optional: Sukces lub porażka tego modułu jest ważna tylko wtedy, gdy jest to jedyny moduł w stosie związany z tym service+type. Flaga optional jest uważana za bezpieczną do użycia w celach testowych.

Ostrzeżenie

  • Jeśli ustawiono required lub requisite, niepowodzenie uwierzytelnienia U2F spowoduje niepowodzenie całego uwierzytelnienia. Niepowodzenie nastąpi, gdy skonfigurowany Nitrokey FIDO nie zostanie podłączony, zgubiony lub zniszczony.

  • Stracisz dostęp do swojego komputera, jeśli źle skonfigurowałeś moduł PAM i użyłeś flag required lub requisite.

  • Utracisz również możliwość używania sudo, jeśli ustawiłeś Central Authentication Mapping i użyto flag required lub requisite.