Technologie zapewniające bezpieczeństwo w systemach operacyjnych. |
Bez użycia PAM, programy musiałyby bezpośrednio wywoływać określone funkcje służące uwierzytelnieniu, na przykład krb5_get_in_tkt().
Z użyciem PAM programy nie wywołują tych mechanizmów bezpośrednio, korzystają one natomiast z funkcji PAM API.
pam_start() /* inicjalizacja transakcji uwierzytelniania*/
pam_end() /* konczenie transakcji uwierzytelniania*/
pam_authenticate() /*uwierzytelnienie uzytkownika*/
pam_chtok() /*zmiana hasła*/
Z każdą aplikacją związany jest wpis w tablicy konfiguracyjnej PAM, który określa, jakie funkcje należy wywołać przy konkretnej akcji. Na przykład:
Service module_type flag module_path Options
Login Auth required pam_unix_auth.so
Login Auth required pam_kerberos.so use_first_pass
Login Auth optional pam_netware.so use_mapped_pass
Ten przykład przedstawia konfigurację aplikacji login
, która korzysta z trzech mechanizmów uwierzytelniania: UNIX passwd
, Kerberos i Netware.
Flaga required
w wierszu oznacza, że użytkownik musi być uwierzytelniony przez podany w następnej kolumnie mechanizm. Flaga optional
oznacza, że system powinien uwierzytelnić użytkownika przez podany mechanizm, ale użytkownik może zostać zaakceptowany przez program nawet jeżeli uwierzytelnienie nie powiedzie się. W przykładzie program wymaga, by użytkownik pozytywnie przeszedł przez uwierzytelnienie przez UNIX passwd
i Kerberos. Są to warunki konieczne. Poza tym program próbuje uwierzytelnić użytkownika przez Netware, ale ten krok jest opcjonalny.
Zmiana zachowania aplikacji jest bardzo prosta - wystarczy zmienić tablicę konfiguracyjną, poprzez dodanie lub usunięcie jakiejś linii. Modyfikacja może zostać dokonana bez pisania, kompilowania ani instalowania jakiegokolwiek kodu. W ten sposób ukryte zostają niskopoziomowe szczegóły mechanizmów uwierzytelniających. Modyfikacja tablicy konfiguracyjnej nie wpływa na aplikację samą w sobie.
PAM został zaimplementowany w Linuxie, Solarisie, CDE i jest standardem jeżeli chodzi o technologie uwierzytelniajace.
/etc/pam.conf
albo w plikach zawartych w katalogu
/etc/pam.d/
/lib/security
jako
dynamicznie ładowalne pliki obiektowe.
Cztery typy zadań Linux-PAM:
Konfiguracja pliku /etc/pam.conf
ma postać:
nazwa usługi typ modułu flaga kontrolna ścieżka dostępu argumenty
na przykład:
Login Auth Required pam_skey.so Use_first_pass
nazwa usługi to zazwyczaj nazwa aplikacji, która wywołała wejście. Może to być na przykład 'rlogind', 'ftpd', 'su'. Domyślny mechanizm uwierzytelnienia jest uruchamiany dla specjalnej nazwy usługi 'OTHER'.
typ modułu przyjmuje jedną z czterech wartości:
auth
- zadania związane z autentykacją
account
- zazwyczaj używany jest do ograniczenia lub
udostępnienia dostępu do usługi w zależności od daty, dostępnych zasobów,
liczby użytkowników itp..
session
- ten moduł wykonuje czynności, które muszą być
wykonane zanim lub po tym, jak użytkownikowi zostanie udostępniona usługa.
Te zadania, to na przykład logowanie informacji związanych z otwieraniem
lub zamykaniem pewnego przepływu danych z użytkownikiem, instalowanie katalogów.
password
- służy do modyfikowania haseł związanych z
użytkownikiem.
flaga kontrolna ustala, jak biblioteka PAM zareaguje na powodzenie, lub błąd modułu.
Właściwy PAM nie został w systemie Windows zaimplementowany. Został tu natomiast użyty inny mechanizm, który po części mozna uważać za odpowiednik PAM.
Czyli w skrócie GINA, to wymienialny komponent w Windows NT służący
uwierzytelnianiu użytkowników. GINA jest częścią innego komponentu
Winlogon.exe
, odpowiedzialnego za logowanie użytkowników
do systemu. Jeżeli użytkownik chce się zalogować, wylogować lub zamknąć
ekran, Winlogon
wywołuje określoną funkcję z GINA API. Oto
przykładowe funkcje:
WlxInitiliaze() /*inicjalizacja GINA'y*/
WlxLoggedOutSAS() /*wywolywana, gdy SAS zostal dostarczony, a zaden uzytkownik nie jest
zalogowany. Oznacza to, że wykonana była proba zalogowania*/
WlxWkstaLockedSAS() /*wywolywana, gdy SAS zostal dostarczony, a stacja robocza jest
zamknieta */
WlxLogoff() /*wylogowanie*/
GINA jest więc wymienialna, jednak nie ma ona całej funkcjonalności PAM. Mianowicie mechanizmy uwierzytelniania same w sobie nie są w GINA'ie wymienialne.