Jak skonfigurować i używać PAM w Linux

Jak skonfigurować i używać PAM w Linux

Linux-Pam (Krótkie dla Moduły uwierzytelniania wtyczki który ewoluował z architektury UNIX-PAM) to potężny pakiet wspólnych bibliotek używanych do dynamicznego uwierzytelniania użytkownika do aplikacji (lub usług) w systemie Linux.

Integruje wiele modułów uwierzytelniania niskiego poziomu z interfejsem API na wysokim poziomie, który zapewnia dynamiczne obsługę uwierzytelniania dla aplikacji. Pozwala to programistom pisać aplikacje wymagające uwierzytelnienia, niezależnie od podstawowego systemu uwierzytelniania.

Wiele nowoczesnych dystrybucji Linux obsługuje Linux-Pam (dalej zwane "Pam") domyślnie. W tym artykule wyjaśnimy, jak skonfigurować Advanced Pam W Ubuntu I Centos systemy.

Zanim przejdziemy dalej, zauważ, że:

  • Jako administrator systemu najważniejsze jest opanowanie sposobu, w jaki pliki konfiguracyjne PAM definiuje połączenie między aplikacjami (usługi) a modułami uwierzytelniania wtyczki (PAM), które wykonują rzeczywiste zadania uwierzytelniania. Niekoniecznie musisz zrozumieć wewnętrzne działanie PAM.
  • PAM może poważnie zmienić bezpieczeństwo systemu Linux. Błędna konfiguracja może częściowo wyłączyć dostęp do systemu lub całkowicie. Na przykład przypadkowe usunięcie plików konfiguracyjnych w ramach /etc/pam.D/* i/lub /etc/pam.conf może cię zablokować z własnego systemu!

Jak sprawdzić program, jest świadomy pam

Zatrudnić Pam, Aplikacja/program musi być „Pam świadomy„;; Musi zostać napisany i skompilowany specjalnie w celu użycia PAM. Aby dowiedzieć się, czy program jest „Pam-Aware”Lub nie, sprawdź, czy został skompilowany z biblioteką PAM za pomocą polecenie ldd.

Na przykład SSHD:

$ sudo ldd/usr/sbin/sshd | Grep Libpam.Więc Libpam.Więc.0 =>/lib/x86_64-linux-gnU/libpam.Więc.0 (0x00007EffdDBe2000) 

Jak skonfigurować Pam w Linux

Główny plik konfiguracyjny dla Pam Jest /etc/pam.conf i /etc/pam.D/ Directory zawiera pliki konfiguracyjne PAM dla każdej aplikacji/usług PAM-Aware. PAM zignoruje plik, jeśli katalog istnieje.

Składnia głównego pliku konfiguracyjnego jest następująca. Plik składa się z listy reguł zapisanych na jednym wierszu (możesz rozszerzyć reguły za pomocą „\” charakter ucieczki) i komentarze są poprzedzone „#” Znaki i rozciągnij do następnego końca linii.

Format każdej reguły to oddzielona przestrzeń kolekcja tokenów (pierwsze trzy są wrażliwe na przypadek). Wyjaśnimy te tokeny w kolejnych sekcjach.

Typ usługi moduł modułów Control-Flag 

Gdzie:

  • praca: rzeczywista nazwa aplikacji.
  • typ: typ modułu/kontekst/interfejs.
  • Flag kontrolny: Wskazuje zachowanie PAM-API, jeśli moduł nie odniesie sukcesu w zadaniu uwierzytelniania.
  • moduł: absolutna nazwa pliku lub względna nazwa PAM.
  • argumenty modułów: oddzielona przestrzeń lista tokenów do kontrolowania zachowania modułów.

Składnia każdego pliku w /etc/pam.D/ jest podobny do pliku głównego i składa się z linii następującego formularza:

Wpisz argumenty modułu modułów Control-Flag 

Jest to przykład definicji reguły (bez argumentów modułów) znalezionych w /etc/pam.D/sshd plik, który zabezpiecza loginów innych niż root, kiedy /etc/nologin istnieje:

Wymagane konto pam_nologin.Więc 

Zrozumienie grup zarządzania PAM i flagi kontrolne

Pam Zadania uwierzytelniania są podzielone na cztery niezależne grupy zarządzania. Grupy te zarządzają różnymi aspektami typowego żądania użytkownika o ograniczoną usługę.

Moduł jest powiązany z jednym typy grup zarządzania:

  • konto: świadczyć usługi do weryfikacji konta: ma wygasa hasła użytkownika?; Czy ten użytkownik dozwolony dostęp do żądanej usługi?.
  • uwierzytelnianie: Uwierzytelnij użytkownika i skonfiguruj poświadczenia użytkownika.
  • hasło: są odpowiedzialne za aktualizację haseł użytkownika i współpraca z modułami uwierzytelniania.
  • sesja: Zarządzaj działaniami wykonywanymi na początku sesji i końca sesji.

Pam Pliki obiektów ładowania (moduły) mają być zlokalizowane w następującym katalogu: /lib/bezpieczeństwo/ Lub /lib64/bezpieczeństwo w zależności od architektury.

Wspierane Flagi kontrolne Czy:

  • wymagany: Awaria natychmiast zwraca kontrolę do aplikacji wskazującej na charakter awarii pierwszego modułu.
  • wymagany: Wszystkie te moduły muszą odnieść sukces Libpam Aby zwrócić sukces do aplikacji.
  • wystarczający: Biorąc pod uwagę, że wszystkie poprzednie moduły się powiodły, sukces tego modułu prowadzi do natychmiastowego i udanego powrotu do aplikacji (awaria tego modułu jest ignorowana).
  • opcjonalny: Sukces lub porażka tego modułu jest na ogół nie rejestrowana.

Oprócz powyższych słów kluczowych istnieją dwie inne prawidłowe flagi kontrolne:

  • obejmują i suback: Dołącz wszystkie wiersze danego typu z pliku konfiguracyjnego określonego jako argument tej kontroli.

Jak ograniczyć dostęp do korzenia do usługi SSH za pośrednictwem PAM

Jako przykład skonfigurujemy, jak używać PAM, aby wyłączyć dostęp użytkownika root do systemu za pośrednictwem programów SSH i logowania. Tutaj chcemy wyłączyć dostęp użytkownika root do systemu, ograniczając dostęp do usług logowania i SSHD.

Możemy użyć /lib/bezpieczeństwo/pam_listFile.Więc Moduł, który oferuje dużą elastyczność w ograniczaniu przywilejów określonych kont. Otwórz i edytuj plik dla usługi docelowej w /etc/pam.D/ katalog, jak pokazano.

$ sudo vim /etc /pam.d/sshd lub $ sudo vim/etc/pam.D/login 

Dodaj tę regułę w obu plikach.

Wymagane autorytety pam_listFile.więc \ onerr = Sedcess item = user Sense = DEY PLIK =/etc/ssh/DEMNIEDUSERS 

Wyjaśnienie tokenów w powyższej zasadzie:

  • Auth: jest typem modułu (lub kontekstem).
  • wymagany: jest flagą kontrolną, która oznacza, że ​​jeśli moduł jest używany, musi przejść lub ogólny wynik będzie niepowodzenia, niezależnie od statusu innych modułów.
  • pam_listFile.Więc: jest modułem, który zapewnia sposób na zaprzeczenie lub zezwolenie na usługi na podstawie dowolnego pliku.
  • Oneerr = SUKCE SUCCES: Argument modułu.
  • pozycja = użytkownik: Argument modułu, który określa, co jest wymienione w pliku i należy go sprawdzić.
  • sens = odmów: Argument modułu, który określa działanie, które należy podjąć, jeśli zostanie znalezione w pliku, jeśli element nie zostanie znaleziony w pliku, wówczas wymagane jest przeciwne działanie.
  • plik =/etc/ssh/deniedusers: Argument modułu, który określa plik zawierający jeden element na wiersz.

Następnie musimy utworzyć plik /etc/ssh/deniedusers i dodaj nazwę źródło w tym:

$ sudo vim/etc/ssh/deniedusers 

Zapisz zmiany i zamknij plik, a następnie ustaw na nim wymagane uprawnienia:

$ sudo chmod 600/etc/ssh/DEMNIEDUSERS 

Odtąd powyższa zasada poinformuje Pam, aby skonsultował /etc/ssh/deniedusers złożyć i odmówić dostępu do usług SSH i logowania dla dowolnego wymienionego użytkownika.

Jak skonfigurować zaawansowane PAM w Linux

Aby napisać bardziej złożone reguły PAM, możesz użyć prawidłowego Flagi kontrolne W następującej formie:

Typ [wartość1 = Action1 value2 = Action2…] Module-argumenty modułu 

Gdzie valuen odpowiada kodowi powrotu z funkcji wywołanej w module, dla którego linia jest zdefiniowana. Możesz znaleźć obsługiwane wartości z przewodnika administratora PAM On-line. Specjalna wartość jest domyślna, co implikuje wszystkie Valuen nie wspomniane jawnie.

Actionn może przyjąć jedną z następujących formularzy:

  • ignorować: Jeśli ta akcja jest używana ze stosem modułów, status powrotu modułu nie przyczyni się do kodu powrotu, który otrzymuje aplikacja.
  • zły: wskazuje, że kod powrotu należy traktować jako wskazujący na niepowodzenie modułu. Jeśli ten moduł jest pierwszym na niepowodzeniu stosu, jego wartość statusu zostanie użyta do wartości całego stosu.
  • umierać: równoważny złemu, ale może zakończyć stos modułu i PAM natychmiast powracający do aplikacji.
  • OK: To instruuje PAM, że administrator systemu uważa, że ​​ten kod powrotu powinien wnieść wkład bezpośrednio do kodu powrotu pełnego stosu modułów.
  • zrobione: równoważny OK ale może zakończyć stos modułu i PAM natychmiast powracający do aplikacji.
  • N (niezgonowana liczba całkowita): równoważny OK ale może przeskoczyć nad następnym N moduły w stosie.
  • Resetowanie: To działanie usuwa całą pamięć o stanie stosu modułu i uruchom ponownie za pomocą następnego ułożonego modułu.

Każde z czterech słów kluczowych: wymagane; wymagany; wystarczający; i opcjonalnie, mają równoważne wyrażenie w kategoriach […] Składnia, która pozwala napisać bardziej skomplikowane reguły i są one:

  • wymagany: ”
  • wymagany: ”
  • wystarczający: [Success = DODE NEW_AUTHTOK_REQD = DODODNIE DECAULT = IGNORE]
  • opcjonalny: [Success = OK new_authtok_reqd = OK default = ignor]

Poniżej znajduje się przykład współczesnego Centos 7 system. Rozważmy te zasady z /etc/pam.D/Postlogin Plik PAM:

#%PAM-1.0 # Ten plik jest automatycznie generowany. # Zmiany użytkownika zostaną zniszczone przy następnym uruchomieniu Authconfig. sesja [sukces = 1 default = ignor] pam_succed_if.Więc służba !~ usługa GDM* !~ Su* Sesja cicha [domyślna = 1] PAM_LASTLOG.więc sesja sesji sesji nowtmp opcjonalna PAM_LASTLOG.Tak cichy NoupDate Showfailed 

Oto kolejna przykładowa konfiguracja z /etc/pam.D/SmartCard-Auth Plik PAM:

#%PAM-1.0 # Ten plik jest automatycznie generowany. # Zmiany użytkownika zostaną zniszczone przy następnym uruchomieniu Authconfig. Wymagane autoryzm PAM_ENV.Tak więc auth [Success = Done Ignor = ignor default = die] pam_pkcs11.Więc Nodebug Wait_For_Card Auth Wymagane pam_deny.Tak więc konto wymagane Pam_Unix.Więc rozlicz wystarczającą ilość pam_localuser.Więc rozlicz wystarczającą ilość pam_succed_if.Więc uid < 1000 quiet account required pam_permit.so password required pam_pkcs11.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so 

Aby uzyskać więcej informacji, zobacz Pam.D Strona Man:

$ man pam.D 

Na koniec kompleksowy opis składni plików konfiguracyjnych i wszystkich modułów PAM można znaleźć w dokumentacji dla Linux-PAM.

Streszczenie

Pam to potężny interfejs API na wysokim poziomie, który umożliwia programy, które opierają się na uwierzytelnianiu dla autentycznych użytkowników do aplikacji w systemie Linux. To potężne, ale bardzo trudne do zrozumienia i użycia.

W tym artykule wyjaśniliśmy, jak skonfigurować zaawansowane funkcje PAM w Ubuntu i Centos. Jeśli masz jakieś pytania lub komentarze do udostępnienia, użyj poniższego formularza opinii.