W tym materiale chciałbym opisać narzędzie, dzięki któremu możesz przeprowadzać zarządzanie uwierzytelnianiem i tożsamością w systemach Linux. Mowa tutaj o authselect. Jest on odpowiedzią na skomplikowaną obsługę jego poprzednika authconfig. Wielu narzekało na problem związany z jego konfiguracją oraz obsługą. Dlatego w ramach odzewu firma Red Hat stworzyła, wprowadziła i następnie zastąpiła authconfig narzędziem authselect. Program został zaprojektowany, biorąc pod uwagę problemy społeczności. Dlatego jego celem było zapewnienie interfejsu wygodnego dla nas, użytkowników. Został zaprojektowany i udostępniony w dystrybucjach RHEL, dlatego prezentowany materiał opracowuje na podstawie systemu Red Hat Enterprise Linux 8.7.
Zapraszamy na darmowe szkolenie "Grafana dla początkujących".
Widzimy się 17 października o 13:00! . Zapisz się: https://asdevops.pl/s43/
Zarządzanie uwierzytelnianiem i tożsamością w Linuxie – do czego służy authselect?
Authselect jest oprogramowaniem, które umożliwia zarządzanie uwierzytelnianiem i tożsamością. Dzięki niemu w łatwy sposób jesteśmy w stanie przełączać się pomiędzy różnymi profilami. Każdy z nich posiada swój własny zestaw uwierzytelniania oraz zarządzania tożsamością. Do elementów konfigurowalnych przy jego pomocy należą ustawienia dotyczące haseł, sposobów uwierzytelniania użytkowników oraz grup. Pisząc prościej, dzięki niemu wykorzystujemy gotowe lub możemy tworzyć własne, w których są wprowadzone lub wprowadzamy różne konfiguracje dotyczące zarządzania uwierzytelnianiem i tożsamością. Następnie takie konfiguracje profilowe wdrażamy w zależności od wymogów. Jest to o tyle istotne, że wszystko wykonujemy w jednym miejscu.
Instalacja authselect
Authselect został wprowadzony w 2016 roku, dlatego też nie obsługuje starszych wersji niektórych dystrybucji. Aby móc korzystać z tego narzędzia, musisz mieć zainstalowaną minimalną wersję dystrybucji związaną z Red Hat:
- Red Hat Enterprise Linux 7;
- CentOS 7;
- Fedora 22;
Lub oczywiście wersje nowsze. Tak jak wspomniałem na łamach tego artykułu, będę korzystał z Red Hat Enterprise Linux 8, a wersji dokładniej 8.7.
W celu instalacji musimy skorzystać z sudo lub konta root. W moim przypadku korzystam z sudo oraz menadżera pakietów dnf. Natomiast jeżeli chcesz to w większości systemów opartych o RHEL występuje jeszcze yum. Instalacja jest banalnie prosta co przedstawiam w poniższym przykładzie:
sudo dnf install authselect
W posiadanej przeze mnie wersji dystrybucji, pakiet jest automatycznie zainstalowany:
Pakiet authselect-1.2.5-1.el8.x86_64 jest już zainstalowany.
Wydaje mi się, że sama instalacja, poza tym co przedstawiłem, nie ma sensu dalszego opisu. Dlatego przejdźmy do sposobów korzystania z tego oprogramowania.
Wyjaśnienie podstawowych opcji polecenia
Sama składnia polecenia wygląda w następujący sposób:
authselect POLECENIE PARAMETRY-POLECENIA
Nie wyróżnia się od innych, a można nawet powiedzieć, że jest prostsze niż niejedno.
Jak w przypadku każdego polecenia, warto zapoznać się z pomocą, jaką zawierają. Aby się do niej dostać, wystarczy, że wpiszemy nazwę programu, czyli:
sudo authselect
Warto przejrzeć możliwości dostępne w programie, szczególnie że opisy są w języku polskim. Polecenia, które opiszę w tym artykule to:
- sudo authselect current – wyświetlamy identyfikator obecnego profilu;
- sudo authselect list – wyświetla listę dostępnych profilii;
- sudo authselect select – wybiera aktywny profil;
- sudo authselect create-profile – tworzy nowy profil;
Opcji jest bardzo dużo, co zapewne zauważyłeś, wyświetlając listę pomocy u siebie w wierszu poleceń. W tej publikacji omówię sposoby wykorzystania wymienionych.
W celu wyświetlenia bieżącego profilu posługujemy się poleceniem:
sudo authselect current
Identyfikator profilu: sssd
Włączone funkcje:
- with-fingerprint
- with-silent-lastlog
Jest to automatycznie stworzony profil przy instalacji dystrybucji RHEL. Tak jak opis przedstawiał, został wyświetlony identyfikator profilu oraz o czym nie wspomniałem, włączone jego funkcje.
Natomiast, aby wyświetlić listę dostępnych profili w danej dystrybucji, posługujemy się poleceniem:
sudo authselect list
- minimal Local users only for minimal installations
- nis Enable NIS for system authentication
- sssd Enable SSSD for system authentication (also for local users only)
- winbind Enable winbind for system authentication
To, że pojawiła się tak obszerna lista, oznacza, że Red Hat Enterprise Linux w wersji 8.7 tworzy własne profile. Natomiast dla użytkownika tworzonego przy instalacji ustawia wcześniej wyświetlony profil o identyfikatorze sssd.
W związku z tym, że nie na liście znajduje się kilka profili, możemy je zmieniać. Dlatego teraz przejdźmy na profil o identyfikatorze minimal:
sudo authselect select minimal
Wybrano profil „minimal”.
Te mapowania nsswitch zostały zastąpione przez ten profil:
— aliases
— automount
— ethers
— group
— hosts
— initgroups
— netgroup
— networks
— passwd
— protocols
— publickey
— rpc
— services
— shadow
W tej sytuacji sprawdźmy, co zostanie wyświetlone, w przypadku skorzystania z pierwszego poznanego polecenia do wyświetlania identyfikatora obecnego profilu:
sudo authselect current
Identyfikator profilu: minimal
Włączone funkcje: Brak
Potwierdza to jego zmianę. Zostały wyłączone wszystkie wcześniej dostępne funkcje w systemie. Natomiast powróćmy teraz do poprzedniego profilu:
sudo authselect select sssd
Wypiszmy identyfikator obecnego:
sudo authselect current
Identyfikator profilu: sssd
Włączone funkcje: Brak
Tym razem nie wyświetla listy funkcji tak, jak w przypadku pierwszego razu.
Nim jednak wyjaśnimy sobie, dlaczego tak się stało, musimy zrozumieć co dokładnie znajduje się na liście profili. Profil, z którego standardowo korzystamy, noszący identyfikator sssd korzysta z usługi o tej samej nazwie. Przeprowadza przy jej pomocy uwierzytelnienie. Natomiast pozostałe:
profil minimal – obsługuje tylko lokalnych użytkowników i grupy bezpośrednio z plików systemowych, co pozwala administratorom na usługi usuwania uwierzytelniania sieciowego, które nie są już potrzebne;
profil windy – używa usługi winbind do przeprowadzania uwierzytelniania systemu;
nis – jest zawarty w katalogu, aby zachować kompatybilność ze starszymi konfiguracjami.
Tak jak wspomniałem i zapewne zauważyłeś, nie zostały uruchomione funkcje, tak jak to było poprzednim razem. Jest to spowodowane tym, że funkcje obsługiwane przez wymienione profile muszą zostać uruchomione oddzielnie. Listę funkcji wyświetlisz za pomocą:
authselect list-features sssd
Lista:
- with-faillock – blokuje konto po zbyt wielu nieudanych uwierzytelnionych;
- with-mkhomedir – tworzy katalog domowy przy pierwszym logowaniu użytkownika;
- with-ecryptfs – włącza automatyczne ecryptfs dla każdego użytkownika;
- with-smartcard – uwierzytelnia z użyciem kart za pomocą SSSD;
- with-smartcard-lock-on-removal – blokuje ekran po wyjęciu karty, wymaga włączenia poprzedniej funkcji;
- with-smartcard-required – uaktywnia uwierzytelnianie tylko za pomocą kart, pozostałe formy autoryzacji są wyłączone. Wymaga funkcji with with-smartcard;
- with-fingerprint – uwierzytelnienie za pomocą czytnika linii papilarnych;
- with-silent-lastlog – wyłącz generowanie pam_lostlog podczas logowania;
- with-sudo – włącza sudo , aby używał SSSD, /etc/sudoers;
- with-pamaccess – w celu autoryzacji konta odnosić się będzie do pliku /etc/access.conf;
- without-nullock – nie dodaje nullockparametr do pam_unix;
Jednak nie można ich zastosować do profilu minimal, do wszystkich pozostałych wykonujesz to w identyczny sposób jak prezentuję to poniżej.
Analizując powyższą listę, początkowo mieliśmy aktywne funkcje:
- with-fingerprint
- with-silent-lastlog
Uruchomimy teraz drugą z dostępnych na powyższej liście:
sudo authselect select sssd with-silent-lastlog
Wybrano profil „sssd”.
Te mapowania nsswitch zostały zastąpione przez ten profil:
— passwd
— group
— netgroup
— automount
— services
Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.
Sprawdźmy co wyświetli się po wprowadzeniu polecenia o naszym aktualnym profilu:
sudo authselect current
Identyfikator profilu: sssd
Włączone funkcje:
- with-silent-lastlog
Czyli posiadamy już uruchomioną funkcję. Z listy, którą przedstawiłem, zawsze warto jeszcze włączyć pierwszą:
sudo authselect select sssd with-fingerprint
Jednak jeżeli zrobisz to w powyższy sposób, poprzednia funkcja zostanie dezaktywowana. Dlatego, jeżeli chcesz, aby obie zostały uruchomione, musisz polecenie wprowadzić w następujący sposób:
sudo authselect select sssd with-fingerprint with-silent-lastlog
Teraz dla potwierdzenia ponownie sprawdźmy profil:
sudo authselect current
Identyfikator profilu: sssd
Włączone funkcje:
- with-fingerprint
- with-silent-lastlog
W ten sam sposób możesz zrobić z pozostałymi funkcjami, które chcesz uruchomić.
Tworzenie własnego profilu
W celu stworzenia własnego profilu używamy polecenia:
sudo authselect create-profile nowy-profil -b sssd --symlink-meta --symlink-pam
Utworzono nowy profil w /etc/authselect/custom/nowy-profil
Zastanówmy się teraz, co my dokładnie zrobiliśmy? Polecenie na język polski przełożyć możemy jako:
Stwórz profil o nazwie nowy-profil, bazując na istniejącym profilu sssd. Ustalamy, że pliki meta oraz szablony pam, będą dowiązaniami symbolicznymi do plików profilu źródłowego zamiast ich kopii.
Teraz, jeśli wyświetlimy listę, nasz profil znajdzie się na niej:
sudo authselect list
- minimal Local users only for minimal installations
- nis Enable NIS for system authentication
- sssd Enable SSSD for system authentication (also for local users only)
- winbind Enable winbind for system authentication
- custom/nowy-profil Enable SSSD for system authentication (also for local users only)
Utworzony profil znajduje się na samym końcu listy. Aby go aktywować, posługujemy się poleceniem:
sudo authselect select custom/nowy-profil
Jeżeli sprawdzisz aktywny profil, wyświetli się utworzony i wybrany przed chwilą.
Modyfikacja profilu
Ten element zostawiłem na sam koniec ponieważ wymagają modyfikacji plików. Wspomniane pliki z konfiguracjami standardowych profili znajdują się w katalogu:
/etc/authselect/
Natomiast te które my stworzyliśmy:
/etc/authselect/custom/
Jeżeli chodzi o modyfikację standardowych profili, wszelka modyfikacja powinna zostać wprowadzona do pliku znajdującym się w /etc/authselect/user-nsswitch.conf. Natomiast po wykonaniu tych czynności, wszelkie zmiany zostaną przeniesione do pliku znajdującego się w /etc/nsswitch.conf. Ważne jest, abyś nigdy nie modyfikował, pliku znajdującego się w katalogu etc. Jeżeli popełnisz jakieś błędy w konfiguracji pliku /etc/authselect/user-nsswitch.conf to authselect nie dopuści do wprowadzenia zmian i zastąpi konfiguracją standardową. W przypadku bezpośredniej modyfikacji pliku, w katalogu etc, pozbawisz się możliwości weryfikacji błędów.
Podsumowanie – zarządzanie uwierzytelnianiem i tożsamością w systemach Red Hat Enterprise Linux
Pomimo podstawowej wiedzy, jaką przekazałem w tym artykule, myślę, że zauważyłeś możliwości konfiguracyjne dostępne w tym narzędziu. Natomiast profil tworzymy w przypadku, gdy podstawowe funkcje i ustawienia nam nie odpowiadają. Przyznam, że w swojej karierze jeszcze nie miałem przyjemności tworzenia takiego. W związku z brakiem doświadczenia w tym zakresie nie chciałbym wprowadzić błąd. Jednak dokumentacja Red Hat zalicza się do jednej z najlepiej opracowanych i zadbanych. Dlatego, jeżeli zainteresowało Cię to zagadnienie – koniecznie się z nią zapoznaj. Mam nadzieję, że teraz już wies zjak wygląda zarządzanie uwierzytelnianiem i tożsamością w Linuxie.
Chcesz wiedzieć więcej na temat administracji? Przeczytaj nasze artykuły, a także weź udział w kursach!