Poprzednia Spis treści Następna

Technologie zapewniające bezpieczeństwo w systemach operacyjnych.


Pluggable Authentication Modules

Rola w bezpieczeństwie

Cechy i cele PAM

PAM API

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.

Funkcjonalność modułów PAM

PAM został zaimplementowany w Linuxie, Solarisie, CDE i jest standardem jeżeli chodzi o technologie uwierzytelniajace.

Przykład: Linux-PAM

Szczegóły

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:

flaga kontrolna ustala, jak biblioteka PAM zareaguje na powodzenie, lub błąd modułu.

Windows

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.

Graphical Identification and Authentication

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.


Poprzednia Spis treści Następna