Rozwiązania
Mechanizm haseł jednorazowych
62
styczeń 2010
Rozwiązania
Mechanizm haseł jednorazowych
63
www.lpmagazine.org
lin
ux
@
so
ftw
ar
e.
co
m
.p
l
Mechanizm
haseł jednorazowych
Od wielu lat hasła są najpopularniejszą metodą uwierzytelniania użytkownika w systemach komputerowych.
Metoda ta, z punktu widzenia bezpieczeństwa nie jest pozbawiona wad. Najczęściej najsłabszym ogniwem
jest tutaj czynnik ludzki. Pozyskanie lub odgadnięcie hasła przez nieuprawnioną osobę pozwala niepowołanej
osobie na dostęp do zasobów. Aby zapobiec takim sytuacjom i znacząco zwiększyć bezpieczeństwo,
opracowano mechanizmy haseł jednorazowych. Jak sama nazwa wskazuje, hasło jednorazowe może być
wykorzystanie w procesie uwierzytelniania tylko jeden raz, po czym traci ważność. W artykule przedstawię
jak działają takie mechanizmy od środka oraz jak zaimplementować je w systemie GNU/Linux.
Bartłomiej Bergier
P
omimo ciągłego postępu, klasyczne hasła
(wielokrotnego wykorzystania) posiadają
wiele wad. Często zdarza się, że przechowy-
wane w bazie danych hasła nie są szyfrowa-
ne, skąd mogą być z łatwością odczytane. Sprawę dodat-
kowo ułatwia czynnik ludzki, a więc skłonność ludzi do
posiadania słabych haseł (słownikowych) jak np. imiona
osób najbliższych.
Inna metodą pozyskania haseł jest podsłuchiwanie
sieci w momencie logowania się użytkownika do syste-
mu. Protokoły takie jak FTP, HTTP czy telnet przesy-
łają hasła w czystej postaci. Obecnie praktycznie wszę-
dzie, gdzie dba się o bezpieczeństwo wykorzystuje się
silne mechanizmy szyfrowania (protokoły TLS i SSL dla
usług webowych) oraz SSH (ang. Secure Shell) jako za-
miennik usługi telnet. To uniemożliwia przechwycenie
haseł poprzez podsłuch. Jednak i te mechanizmy moż-
na obejść, wykorzystując np. bezpośrednie podsłuchiwa-
nie klawiatury poprzez złośliwie umieszczone w syste-
mie keyloggery, czy też bardziej przyziemne podgląda-
nie haseł przez ramię podczas wpisywania. Duże znacze-
nie ma tutaj czynnik ludzki. Inną często spotykaną prak-
tyką, szczególnie, gdy ktoś posiada wiele haseł do wielu
usług jest po prostu ich zapisywanie na kartkach gdzieś
w pobliżu miejsca pracy.
W systemie Linux standardowo hasła kont użyt-
kowników przechowywane są w pliku /etc/shadow. Są
one zaszyfrowane, a sam plik ma prawa roota. Jednak,
gdy wpadnie w niepowołane ręce można na nim spró-
bować wcześniej wspomnianych metod słownikowych
czy bruteforce (np. za pomocą narzędzia John The Rip-
per).
Zasada działania
mechanizmu haseł jednorazowych
Uwierzytelnianie za pomocą haseł jednorazowych opie-
ra się na autentykacji dwuczynnikowej (ang. two-factor
authentication). Polega to na tym, iż do poprawnej au-
tentykacji wymagane są dwa elementy:
• to co użytkownik wie (jego sekretne hasło)
• to co użytkownik ma (może to być lista haseł jedno-
razowych na papierze, specjalne urządzenie lub pro-
gram zwane kalkulatorem)
Rozwiązania
Mechanizm haseł jednorazowych
62
styczeń 2010
Rozwiązania
Mechanizm haseł jednorazowych
63
www.lpmagazine.org
Na początku użytkownik musi ustalić sekret-
ne hasło, które pamięta. Hasło to zna również
serwer. W procesie autentykacji użytkownik
otrzymuje od serwera wyzwanie (ang. chal-
lenge). Jest to określony rodzaj ciągu zna-
ków. Wprowadza go wraz ze swoim zapa-
miętanym sekretnym hasłem do kalkulato-
ra (urządzenia sprzętowego lub programu).
Kalkulator, stosując znane sobie algorytmy,
oblicza odpowiedź, którą użytkownik prze-
syła do serwera. Serwer zna sekretne hasło
użytkownika, więc oblicza spodziewaną od-
powiedź i porównuje z tą, którą wprowa-
dził użytkownik. Każdorazowo użytkownik
otrzymuje inne wyzwanie. Dzięki podejściu
dwuczynnikowej autentykacji wejście w po-
siadanie jednego z elementów na nic się nie
zda atakującemu.
Rodzaje systemów
haseł jednorazowych
Przedstawiony powyżej system haseł opie-
ra się o mechanizm wyzwania i odpowiedzi
(ang. challenge-response). Systemy tego ty-
pu zwane są również asynchronicznymi.
W tego typu systemach odpowiedź na we-
zwanie generowana jest przy pomocy kalku-
latora. Kalkulatorem może być albo dedyko-
wane urządzenie (sprzętowy token), który
użytkownik zawsze przy sobie nosi lub też
odpowiednie oprogramowanie, instalowane
na komputerze użytkownika, w jego telefo-
nie komórkowym czy na pendrive'ie. Inny-
mi metodami generowania odpowiedzi, sto-
sowanymi szczególnie w bankach do prze-
prowadzania operacji są pregenerowane li-
sty haseł jednorazowych jak również hasła
dostarczane za pośrednictwem SMSów. Po-
lega to na tym, iż początkowo, po ustaleniu
sekretnego hasła, na jego podstawie specjal-
ny program generuje określoną ilość haseł
jednorazowych. Lista ta zostaje wydruko-
wana i użytkownik cały czas nosi ją przy so-
bie. Z każdą nową operacją czy też logowa-
niem do systemu jako wyzwanie użytkow-
nik otrzymuje numer hasła z listy haseł jed-
norazowych i wprowadza go wraz ze swoim
sekretnym hasłem. Tak się dzieje aż do wy-
czerpania zbioru haseł. Wtedy należy wyge-
nerować nową listę haseł.
Innym rodzajem systemów haseł jedno-
razowych są systemy oparte na synchroniza-
cji czasu serwera i użytkownika (ang. clock-
based), zwane synchronicznymi. W tego ty-
pu rozwiązaniach serwer OTP synchronizu-
je token sprzętowy i zdalną maszynę, do któ-
rej użytkownik chce się zalogować. Nowe ha-
sło generowane jest przez token przeważnie
co 30-60 sekund. Sekretne hasło użytkowni-
ka jest tutaj wykorzystywane albo do aktywa-
cji tokenu, albo do permutowania hasła gene-
rowanego przez token. Wadą systemów syn-
chronicznych jest szybkie wyczerpywanie się
baterii sprzętowych tokenów, gdyż cały czas
muszą pozostać włączone jak również ryzy-
ko rozsynchronizowania się na skutek róż-
nych czynników zewnętrznych (np. pogody)
tokenu i serwera. Można to korygować po-
przez zwiększenie okna ważności hasła, jed-
nak kosztem bezpieczeństwa.
Podatność na ataki
Niestety nie ma rzeczy doskonałych. Ha-
sła jednorazowe również podatne są na kil-
ka rodzajów ataków. Jednym z nich jest po
prostu atak polegający na kradzieży listy ha-
seł lub tokenów sprzętowych. By temu zapo-
biec stosuje się, jak już napisano wcześniej
dodatkowy sekret (hasło), które stanowi dru-
gi element konieczny do poprawnej autenty-
kacji. Nie zapominajmy jednak, że gdy ata-
kujący wejdzie w posiadanie listy haseł, mo-
że próbować zdobyć sekretne hasło użytkow-
nika, używając wcześniej opisanych technik
na zwykłe hasła.
Innym atakiem, na jaki podatne są sys-
temy OTP jest atak Man-in-The-Middle. Jest
to atak polegający na podsłuchu i modyfika-
cji wiadomości przesyłanych przez dwie stro-
ny, bez ich wiedzy, przez osobę trzecią (ata-
kującego). Atakujący przekierowuje ruch
przez swój komputer, co jest możliwe dzię-
ki słabości protokołów DNS czy ARP. Moż-
na się przed tym bronić łącząc jednorazowe
hasła z technologiami bezpiecznej warstwy
gniazdowej (szyfrowanie dzięki protokołom
SSL/TLS), mechanizmu klucza publicznego
czy bezpiecznej powłoki (SSH).
Jeszcze innym atakiem, wymyślonym
specjalnie w celu przechwytywania haseł jest
atak na ostatni znak (ang. LCA – Last Cha-
racter Attack). Polega on na tym, że ataku-
jący podsłuchuje klawiaturę użytkownika do
momentu aż ten wpisze wszystkie znaki ha-
sła oprócz ostatniego. W tym momencie stara
się wykonać atak DoS na stację użytkownika,
uniemożliwiając mu ukończenie wprowadza-
nia hasła. Próbuje wtedy nawiązać wiele jed-
noczesnych połączeń i w każdej sesji wpro-
wadza znaną mu część hasła zakończoną in-
nym znakiem. Przedstawiona później imple-
Rysunek 1.
Generowanie haseł algorytmem S/KEY
������������������������������
����������������
���������
����������������
���������
����������������
���������
���������������������������
����
���������������������������
�������
���������������������������
�
�
���
�������������������������
���������
Listing 1.
Fragment wygenerowanej listy haseł jednorazowych
000 g6Jk bpJk 056 eO%D ZmhZ 112 dG6F PRO3 168 7KE6 x53Q 224 bk5+ 22xk
001 FC%8 MhZq 057 u3SR 84Vf 113 w%wy e9cA 169 rROf LD6c 225 v5Zg uMaQ
002 UeWE mDk% 058 noB7 mKCM 114 Cmxv vLE+ 170 t%mY TLkr 226 %Cz9 74er
003 wMsi rd:b 059 4Gi/ Vk:b
115
=s+v xquF 171 OuCJ EBjy 227 J9o7 UdMG
004 in3% mmGw 060 JZR3 96Pn 116
3H
=L
D
=%r 172 Xr3s cbn+ 228 Gv5q Ofzv
005
SyV
= eWgp 061 DkdH fDzI 117 8Vd7 tBPz 173 59U5 kBBI 229 %HW4 R2uJ
64
styczeń 2010
Rozwiązania
Mechanizm haseł jednorazowych
65
www.lpmagazine.org
Rozwiązania
Mechanizm haseł jednorazowych
mentacja OTPW chroni się przed tym tak, iż
w przypadku wykrycia równoczesnych sesji
prosi o wprowadzenie nie jednego lecz zlep-
ku trzech różnych haseł jednorazowych.
Implementacje
Jedną z pierwszych implementacji haseł jed-
norazowych dla systemów typu Unix był sys-
tem autentykacji S/KEY opracowany pod ko-
niec lat 80-tych przez firmę Bellcore. Korzy-
sta on z algorytmu Leslie Lamporta. Algo-
rytm ten bazuje na pseudolosowym ziarnie
i wielokrotnym wywoływaniu kryptograficz-
nej funkcji skrótu. Na początku sekretne ziar-
no jest dostarczane przez użytkownika lub
generowane przez komputer. Na ziarnie wy-
konywana jest określoną ilość razy funkcja
skrótu, tworząc pewną ilość haseł jednora-
zowych. Ziarno jest odrzucane, a użytkownik
otrzymuje listę haseł, wydrukowanych w od-
wrotnym kierunku niż były generowane. Na
serwerze jest przechowywane tylko pierwsze
hasło z listy haseł użytkownika. Użytkownik,
mając ziarno i odpowiednie oprogramowa-
nie, jest natomiast w stanie obliczyć hasło o
żądanym numerze (lub podać z listy już obli-
czone). Serwer nie prosi o podanie tego hasła,
które pamięta, lecz o poprzednie. Użytkow-
nik przesyła je, a serwer na podanych danych
wykonuje raz jeszcze funkcję skrótu, porów-
nując wynik z zapamiętanym sekretem. Jeśli
rezultaty są zgodne, serwer pozwala się zalo-
gować i zapamiętane rozwinięcie zostaje za-
stąpione przez wartość ostatnio podaną przez
użytkownika. Funkcją skrótu w przypad-
ku S/KEY jest MD4. Wewnętrznie S/KEY
używa liczb 64-bitowych, jednak dla wygo-
dy użytkownika każda liczba jest mapowana
na sześć angielskich słów (każde o długości
od 1 do 4 liter). Bezpieczeństwo systemu ba-
zuje na nieodwracalności funkcji haszującej.
Jednak jest ona podatna na opisywane ataki
man-in-the middle oraz wszelkie ataki oparte
na sytuacji wyścigu (ang. race condition) ta-
kie jak LCA. Jeśli zostanie poznane sekretne
ziarno, cały system zostaje skompromitowa-
ny. Wadą algorytmu jest również to, że znając
dowolne hasło z listy, możemy wygenerować
na jego podstawie wszystkie poprzednie ha-
sła. System S/KEY dokładnie opisany jest w
dokumencie RFC 1760. Mechanizm genero-
wania haseł dla algorytmu S/KEY przedsta-
wia Rysunek 1.
Kontynuacją rozwiązań zastosowanych
w S/KEY jest implementacja o nazwie OPIE
(One Time Password In Everything). Bazuje
ona na funkcji haszującej MD5. Dla systemu
Linux dostępna jest w formie modułów PAM.
Niestety, jako że również opiera się o algo-
rytm Leslie Lamporta, posiada wszystkie wa-
dy swojego poprzednika. System bazuje na
założeniach przedstawionych w dokumen-
cie RFC 2289. Strona projektu jest niestety
martwa, należy liczyć więc jedynie na pacz-
ki dla konkretnych dystrybucji. Jako, że du-
żo lepszą alternatywą z punktu widzenia wy-
gody użytkowania i bezpieczeństwa jest im-
plementacja OTPW, w artykule nie będzie-
my zajmować się integracją systemu OPIE
z usługami systemu GNU/Linux.
OTPW
Projekt OTPW, w przeciwieństwie do OPIE
nie bazuje na algorytmach określonych w do-
kumencie RFC 2289. Jest o wiele prostszym
systemem, a przy tym bardziej bezpiecznym.
Autorem projektu jest Markus Kuhn z Uni-
wersytetu Cambrigde.
Zasada działania
OTPW bazuje na generowanej liście ha-
seł jednorazowych. Pierwszym etapem jest
utworzenie listy haseł jednorazowych za po-
mocą komendy otpw-gen. Program zapyta o
hasło, które będzie podstawą wygenerowania
listy haseł jednorazowych. Fragment listy ha-
seł jednorazowych przedstawia Listing 1.
Domyślnie hasła jednorazowe przed-
stawiane są w postaci ciągów wygenero-
wanych funkcją base64. Spacje są widoczne
tylko dla czytelności i nie należy ich wpro-
wadzać w procesie logowania. Dla wygody
użytkownika znaki, które można łatwo po-
mylić ze sobą są zastępowane innymi (0,1,l
przez :,=,%).
Przełącznik
-p1
programu otpw-gen po-
zwala na wygenerowanie mniej bezpiecz-
nych, ale bardziej czytelnych haseł jedno-
razowych, gdzie każde jest sekwencją pię-
ciu angielskich słów czteroliterowych. Ha-
sła takie szybciej się wpisuje, jednak są bar-
dziej podatne na podglądanie, gdyż o wiele
łatwiej podejrzeć ciąg słów niż przypadko-
we znaki. Każde hasło jednorazowe posiada
unikalny numer porządkowy na liście. Pro-
Rysunek 2.
Generowanie listy haseł jednorazowych z parametrem -p1
64
styczeń 2010
Rozwiązania
Mechanizm haseł jednorazowych
65
www.lpmagazine.org
Rozwiązania
Mechanizm haseł jednorazowych
ces generowania listy widoczny jest na Ry-
sunku 2.
Oto fragment listy haseł wygenerowanej
z parametrem -p1:
Możemy formatować listę haseł za po-
mocą przełączników
-h
oraz
-w
. Przełącz-
nik
-h
określa ilość linii (wraz z nagłówkiem,
który zajmuje 4 linie). Przełącznik
-w
nato-
miast określa liczbę znaków w poziomie.
Innymi przełącznikami są -s, pozwalają-
cy na określenie liczby stron wysyłanych na
wyjście oraz
-e
, określający entropię. Czym
jego wartość większa, tym większa możliwa
liczba kombinacji haseł – dokładnie możliwa
liczba haseł to 2 do potęgi określonej przez
ten parametr.
Lista haseł jest zapisywana w pliku .otpw
znajdującym się w katalogu domowym użyt-
kownika. Skasowanie tego pliku powodu-
je wyłączenie korzystania z OTPW dla da-
nego użytkownika. W momencie logowania
użytkownik po podaniu loginu zamiast stan-
dardowego monitu o hasło otrzymuje monit
o wprowadzenie hasła jednorazowego o da-
nym numerze z listy haseł. Prezentuje to Ry-
sunek 4. Teraz musi wprowadzić swoje se-
kretne hasło sklejone z hasłem z listy haseł
o podanym numerze.
OTPW od środka
Hasła znajdujące się w pliku .otpw są ge-
nerowane przy pomocy funkcji mieszającej
RIPEND160, dającej 160 bitowy skrót. Ge-
nerator haseł jest inicjowany poprzez haszo-
wanie wyniku działania kilku komend shel-
lowych. Pierwsze 72 bity skrótu są prze-
puszczane przez zmodyfikowany algorytm
base64, pozostałe 88 stanowią wewnętrzny
stan losowego generatora. Modyfikacja al-
gorytmu base64 polega na zastąpieniu zna-
ków, które się mylą, innymi. Przykładowy
plik .otpw prezentuje poniższy Listing.
Pierwsza linia określa format pliku. Dru-
ga zawiera po kolei:
• liczbę wygenerowanych haseł
• liczbę cyfr składających się na numer
hasła (3)
• liczbę znaków na zakodowany hash ba-
se64 (12)
• liczbę znaków hasła jednorazowego (8)
Każda kolejna linia zawiera 3 cyfrowy nu-
mer hasła, po którym następuje hasz wygene-
rowany z połączenia sekretnego hasła użyt-
kownika i hasła jednorazowego. Po wykorzy-
staniu danego hasła jest ono zastępowane cią-
giem myślników by nie można go było użyć
powtórnie.
Bezpieczeństwo
System OTPW minimalizuje w znacznym
stopniu ryzyko ataku na ostatni znak (LCA).
W momencie, gdy zostanie wykryta więcej
niż jedna sesja dla danego użytkownika, wy-
zwanie składa się nie z jednego, ale z trzech
numerów haseł jednorazowych. Przypadek
taki przestawiony jest na Rysunku 5. Wyglą-
da to w ten sposób:
berdzi@debian:~$ ssh localhost
Password 180/258/048:
Wtedy użytkownik musi wprowadzić swo-
je sekretne hasło, połączone z trzema skle-
jonymi ze sobą hasłami z listy haseł. To po-
woduje, że wykonanie ataku LCA wymaga-
łoby nawiązania wielu tysięcy połączeń, co
czyni go bardzo trudnym, a w praktyce nie-
wykonalnym.
Jeśli z jakichś względów logowanie zo-
stanie przerwane (np. w wyniku załamania
się systemu), w katalogu domowym użyt-
kownika tworzony jest link symboliczny
o nazwie .otpw.lock wskazujący na numer
hasła jednorazowego, o które pytał system
w momencie, gdy logowanie zostało prze-
rwane. Wygląda on tak:
$ ls -al
lrwxrwxrwx 1 berdzi berdzi 3
paź 8 16:06 .otpw.lock -> 081
OTPW korzysta z dwuczynnikowego uwie-
rzytelniania – do poprawnej autentykacji wy-
magane jest jedno z haseł z listy, poprzedzo-
ne sekretnym hasłem użytkownika (prefik-
sem). To zapewnia, że kradzież samej listy
haseł jednorazowych lub tylko podsłucha-
nie sekretnego hasła nie pozwoli na dostęp
do systemu.
System OTPW , inaczej niż opisywana
implementacja S/KEY, nie bazuje na algoryt-
mie Lamporta, w którym każde hasło jednora-
zowe jest haszem powstałym poprzez haszo-
wanie hasła następnego. Tak więc, podejrzenie
ostatniego hasła na liście, nie umożliwia ata-
kującemu odtworzenia poprzednich haseł.
Jeśli chodzi o podglądanie haseł to
OTPW wykazuje się tutaj większą odporno-
ścią, stosując zmodyfikowany algorytm ba-
se64. To znacznie utrudnia szybkie podejrze-
nie i zapamiętanie hasła.
Instalacja
Źródła możemy pobrać ze strony projektu
http://www.cl.cam.ac.uk/~mgk25/download/
otpw-1.3.tar.gz. Kompilacja sprowadza się
do rozpakowania i zbudowania za pomocą
komendy
make
:
$ wget http://www.cl.cam.ac.uk/
~mgk25/download/otpw-1.3.tar.gz
$ tar zxvf otpw-1.3.tar.gz
$ cd otpw
$ make
W naszym przypadku skorzystamy jed-
nak z gotowych pakietów dystrybucji De-
bian. Pobieramy i instalujemy odpowied-
nie paczki:
• $ wget http://ftp.pl.debian.org/debian/pool/
main/o/otpw/otpw-bin_1.3-2_i386.deb
• $ su -c 'dpkg -i otpw-bin_1.3-2_i386.deb'
• $ wget http://ftp.pl.debian.org/debian/pool/
main/o/otpw/libotpw-dev_1.3-2_i386.deb
• $ su -c 'dpkg -i 'libotpw-dev_1.3-2_i386.deb'
Całość składa się w zasadzie z dwóch ele-
mentów:
• otpw-gen – polecenie służące do genero-
wanie list haseł jednorazowych
• pam_otpw – moduł PAM, pozwalają-
cy wykorzystywać OTPW w połączeniu
Rysunek 3.
Logowanie z użyciem systemu OTPW
66
styczeń 2010
Rozwiązania
Mechanizm haseł jednorazowych
67
www.lpmagazine.org
Rozwiązania
Mechanizm haseł jednorazowych
z usługami, które korzystają z systemu
modułów PAM
W pakiecie znajduje się również przykłado-
wy program demologin – przerobiona ko-
menda login, korzystająca z mechanizmu ha-
seł jednorazowych.
Integracja z usługami
Istnieją dwie metody zintegrowania OTPW
z systemem logowania:
• przerabianie źródeł narzędzi, z który-
mi chcemy zintegrować system haseł
jednorazowych, takich jak login, su,
sshd, ftp
• integracja z systemem poprzez system
modułów PAM (ang. Plugabble Authen-
tication Modules)
Pierwsza z metod jest pracochłonna, ma-
ło elastyczna i niebezpieczna. Konieczne
by było przerabianie wszystkich plików
źródłowych oraz rekompilacja każdorazo-
wo po pojawieniu się nowych wersji. Dużo
wygodniejszym sposobem jest wykorzysta-
nie modułów PAM. System modułów PAM
(ang. Pluggable Authentication Modules)
to zbiór bibliotek, które określają w jaki
sposób przebiega autentykacja użytkowni-
ka dla konkretnych usług w systemie. Dzię-
ki nim można elastycznie przełączać się
między sposobami autentykacji bez ko-
nieczności zmiany samych usług.
Jest to najprostsza metoda integracji sys-
temu haseł jednorazowych z usługami w sys-
temie.
Dzisiaj praktycznie każda dystrybu-
cja korzysta domyślnie z tego mechanizmu
(wyjątkiem jest np. Slackware, aczkolwiek
w nim również można doinstalować odpo-
wiednie pakiety).
Wykorzystywanie haseł jednorazowych
najczęściej ma sens w przypadku, gdy lo-
gujemy się zdalnie na maszynę z innej nie-
zaufanej maszyny. Dlatego też pokażę jak
zintegrować OTPW z usługą SSH. W tym
celu musimy odpowiednio zmienić plik /etc/
pam.d/sshd. W sekcji auth znajduje się wpis
odpowiedzialny za standardową autentyka-
cję w systemie:
# Standard Un*x authentication.
@include common-auth
Mamy dwie możliwości. Możemy albo prze-
łączyć się na korzystanie tylko z haseł jed-
norazowych, albo skonfigurować system
tak, aby najpierw pytał o hasło jednorazowe,
a gdy nie będziemy chcieli go użyć, wciska-
my [Enter] i logujemy się w standardowy
sposób. Sytuację tę przedstawia Rysunek 6.
W pierwszym przypadku musimy wy-
edytować plik w następujący sposób:
# Standard Un*x authentication.
#@include common-auth
auth required pam_
otpw.so
W drugim przypadku natomiast wygląda to
tak:
auth sufficient
pam_otpw.so
# Standard Un*x authentication.
@include common-auth
Wpisy
auth
oraz
session
oznaczają okre-
ślona sekcję. Sekcja
auth
jest odpowiedzial-
na za autentykację, gdzie PAM sprawdza, czy
użytkownik jest tym za kogo się podaje przy
pomocy monitu o hasło lub w tym przypad-
ku monitu o hasło jednorazowe. Sekcja
ses-
sion
jest odpowiedzialna za wykonanie in-
nych czynności przed lub po otrzymaniu do-
stępu do usługi.
Wpisy
required
,
sufficient
oraz
optional
oznaczają sekcję kontroli. Wpis
Rysunek 4.
Zabezpieczenie w przypadku wykrycia kilku sesji
Rysunek 5.
Dwa sposoby logowania się
Listing 2.
Zawartość pliku .otpw
OTPW1
280 3 12 8
081ITXZ
=FYcY+eJ
004ZQfAF3dabMOn
208zn7tTBOso+rM
246W9rzFh9CQ7IX
2773gCIk+yrAyhc
179QPTwum+u3phA
2752Korm/Pq=eYG
213vsiQPezLqZMk
045Ypgyo2
=A2y6F
010zo4JkhF9BRkP
076DCignhz/W%qo
66
styczeń 2010
Rozwiązania
Mechanizm haseł jednorazowych
67
www.lpmagazine.org
Rozwiązania
Mechanizm haseł jednorazowych
required
oznacza, że jeśli autentykacja
nie powiedzie się, PAM zwróci błąd i użyt-
kownik nie zaloguje się do systemu. Wpis
sufficient
oznacza, że jeśli autentyka-
cja nie powiedzie się, to system przejdzie
do kolejnego sposobu autentykacji. Wpis
optional
oznacza, że sukces czy poraż-
ka dla danego modułu PAM ma znaczenie
tylko wtedy, gdy jest to jedyna metoda au-
tentykacji.
Ważna jest tutaj kolejność wpisów, naj-
pierw musi widnieć wpis odpowiedzialny za
autentykację hasłem jednorazowym, a dopie-
ro po nim ten odpowiedzialny za standardo-
wą. W sekcji
session
, niezależnie od wybra-
nej metody dopisujemy:
session optional pam_
otpw.so
Przykładowy plik konfiguracyjny PAM
dla usługi ssh przedstawiony jest na Ry-
sunku 7.
Oprócz tego konieczne jest jeszcze wy-
edytowanie pliku konfiguracyjnego demo-
na sshd, /etc/ssh/sshd_config. Włączamy
opcję autentykacji poprzez wyzwanie-od-
powiedź:
ChallengeResponseAuthentication yes
Teraz musimy zrestartować demona sshd:
# /etc/init.d/ssh restart
Restarting OpenBSD Secure Shell
server: sshd.
Spróbujmy się zalogować do systemu:
berdzi@debian:~$ ssh localhost
Password 193:
Linux debian 2.6.26-2-686 #1 SMP Wed
Aug 19 06:06:52 UTC 2009 i686
Udało się.
Podsumowanie
Wykorzystanie mechanizmu haseł jednora-
zowych, choć z początku może wydawać się
nieco uciążliwe z punktu widzenia użytkow-
nika, ma sens wszędzie tam, gdzie nie mamy
pełnego zaufania co do miejsca, z którego łą-
czymy się z naszą siecią. Integracja z usłu-
gami w systemie nie jest zbyt skomplikowa-
na, więc warto poświęcić parę minut, by spać
spokojniej.
Rysunek 6.
Plik konfiguracyjny /etc/pam.d/sshd dla usługi ssh
Linuxem interesuje się od kilku lat, głów-
nie pod kątem zastosowań serwerowych.
Hobbystycznie administrowałem sieciami
osiedlowymi. Czasami tworzę różne mniej
lub bardziej przydatne programy, pozna-
jąc dzięki temu nowe techniki i języki pro-
gramowania. Dla relaksu śmigam na mo-
im blaszanym rumaku lub eksploruję tere-
ny górskie i nie tylko. Zawodowo zajmu-
ję się tworzeniem aplikacji i portali inter-
netowych.
Kontakt z autorem: e-mail: bbergier@o2.pl
O autorze
• http://www.cl.cam.ac.uk/~mgk25/otpw.html – projekt OTPW
• http://www.freebsd.org/doc/en/books/handbook/one-time-passwords.html
– informacje na temat systemu OPIE
• http://www.heise-online.pl/security/Ale-to-juz-bylo-i-nie-wroci-wiecej--/features/14/0
– artykuł na temat haseł jednorazowych
• http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-introduction.html
– podręcznik administracji modułami PAM
• http://en.wikipedia.org/wiki/S/KEY – informacje na temat systemu S/KEY
• http://tools.ietf.org/html/rfc2289 – dokument RFC opisujący założenia systemu haseł
jednorazowych
• http://tools.ietf.org/html/rfc1760 – dokument RFC opisujący system haseł
jednorazowych S/KEY
W Sieci