Logowanie do pulpitu i uwierzytelnianie użytkowników systemu Linux#
Wstęp#
This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f
and 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#
W lewym dolnym rogu kliknij przycisk
Show Applications
i wpisz w pasku wyszukiwania następujące ustawienia:.Przewiń w dół na prawym pasku do
Users
.w lewym rogu kliknij przycisk
Unlock
i pojawi się monit o podanie hasła.Wybierz
Administrator
i wprowadź wybraną nazwę użytkownika i hasło.Po ukończeniu kroku 4 powinieneś być gotowy.
Metoda CLI#
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>`__.
Skonfiguruj
rules
do rozpoznawania Nitrokey FIDO2.Under
/etc/udev/rules.d
download41-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
Instalacja
libpam-u2f
Na Ubuntu 20.04 możliwe jest pobranie 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
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
.Generowanie pliku konfiguracyjnego U2F.
Do wygenerowania pliku konfiguracyjnego użyjemy narzędzia
pamu2fcfg
, które jest dołączone dolibpam-u2f
. Dla wygody, zapiszemy wyjście narzędzia bezpośrednio do plikuu2f_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 dou2f_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 katalogetc/
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.
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
Modyfikuj Pluggable Authentication Module
PAM
.Ostatnim krokiem jest skonfigurowanie plików modułu PAM pod
/etc/pam.d/
. W tym przewodniku zmodyfikujemy plikcommon-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 na górze pliku:
#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, żepam_u2f
drukujeInsert 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, żepam_u2f
wydrukujePlease touch the device.
wiadomość.nouserok zapewni, że nadal będziesz mógł się zalogować 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ł regularnych logowań opartych 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ć komunikatPlease 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:
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 isudo
. 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 poleceniasudo
.
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 dorequired
, 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. Flagasufficient
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. Flagaoptional
jest uważana za bezpieczną do użycia w celach testowych.
Ostrzeżenie
Jeśli ustawiono
required
lubrequisite
, 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
lubrequisite
.Utracisz również możliwość używania
sudo
, jeśli ustawiłeś Central Authentication Mapping i użyto flagrequired
lubrequisite
.