Przes�anianie hase� (Shadow Password) Autor: Michael H. Jackson, mhjack@tscnet.com v1.3, 3 Kwietnia 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.02, 26 Lipca 1997 Dokument ten opisuje jak zdoby�, zainstalowa� i skonfigurowa� pakiet _S_h_a_d_o_w _P_a_s_s_w_o_r_d dla Linux-a. Om�wione zosta�o tutaj tak�e zdobywanie i (ponowna) instalacja oprogramowania oraz demon�w sieciowych, kt�re potrzebuj� dost�pu do hase� u�ytkownika. Oprogramowanie to nie jest w�a�ciw� cz�ci� pakietu _S_h_a_d_o_w _S_u_i_t_e, ale b�d� one musia�y zosta� przekompilowane, aby m�c korzysta� z hase�. Jest tutaj tak�e zawarty przyk�ad dla programist�w, jak dodawa� obs�ug� przes�anianych hase� w swoich programach. Pod koniec dokumentu zawarte zosta�y odpowiedzi na cz�sto zadawane pytania. Dokument ten zosta� napisany w standardzie ISO-8859-2. Orygina� mo�na znale�� pod adresem ftp.icm.edu.pl w kata� logu /pub/Linux/sunsite/docs/HOWTO. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie. 1.1. Zmiany w stosunku do poprzedniej wersji. 1.2. Nowe wersje tego dokumentu. 1.3. Komentarze. 2. Po co przes�ania� plik passwd ? 2.1. Czemu mo�esz nie chcie� przes�ania� swojego pliku z has�ami ? 2.2. Format pliku /etc/passwd. 2.3. Format pliku przes�aniaj�cego. 2.4. Przegl�d funkcji crypt(3). 3. Zdobywanie pakietu Shadow Suite. 3.1. Historia pakietu Shadow Suite dla Linux-a. 3.2. Gdzie znale�� pakiet Shadow Suite. 3.3. Co jest zawarte w pakiecie Shadow Suite. 4. Kompilacja program�w. 4.1. Rozpakowywanie archiw�w. 4.2. Konfiguracja w pliku config.h 4.3. Kopie zapasowe twoich oryginalnych program�w. 4.4. Polecenie make 5. Instalacja 5.1. Zaopatrz si� w dyskietk� startow� w razie gdyby� co� popsu�. 5.2. Usuwanie zduplikowanych stron podr�cznika systemowego. 5.3. Polecenie make install 5.4. Polecenie pwconv 5.5. Zmiany nazw plik�w npasswd i nshadow 6. Inne programy, kt�re mo�e musisz uaktualni� albo "za�ata�". 6.1. Program adduser z dystrybucji Slackware. 6.2. Serwer wu_ftpd. 6.3. Standardowy ftpd. 6.4. pop3d (Post Office Protocol 3) 6.5. xlock 6.6. xdm 6.7. sudo 6.8. imapd (E-Mail 6.9. pppd (Serwer Protoko�u Point-to-Point) 7. Wprowadzanie pakietu Shadow Suite do u�ycia. 7.1. Dodawanie, Modyfikacja i usuwanie u�ytkownik�w. 7.1.1. useradd. 7.1.2. usermod. 7.1.3. userdel. 7.2. Polecenie passwd i "termin wa�no�ci" has�a. 7.3. Plik login.defs 7.4. Has�a dla grup. 7.5. Programy do sprawdzania poprawno�ci. 7.5.1. pwck 7.5.2. grpck 7.6. Has�a przez telefon. (Dial-up) 8. Obs�uga przes�anianych hase� w programach w C. 8.1. Pliki nag��wkowe. 8.2. Biblioteka libshadow.a 8.3. Struktura Shadow. 8.4. Funkcje pakietu Shadow Suite. 8.5. Przyk�ad. 9. Cz�sto zadawane pytania. 10. Prawa autorskie podzi�kowania i r�ne. 10.1. Prawa autorskie 10.2. Podzi�kowania i r�ne. 10.3. Od t�umacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Jest to dokument z serii HOWTO (czyli Jak To Zrobi�). Opisuje on jak i dlaczego instalowa� obs�ug� "shadow password" na swoim Linux-ie. Zawarte jest tak�e kilka przyk�ad�w na u�ywanie pewnych w�a�ciwo�ci pakietu _S_h_a_d_o_w _S_u_i_t_e. Podczas instalacji pakietu oraz u�ywania jego narz�dzi musisz by� zalogowany jako _"_r_o_o_t_". Podczas instalacji b�dziesz dokonywa� pewnych zmian do oprogramowania systemowego i zalecane jest, aby� zrobi� kopi� tego oprogramowania. Zalecam te�, aby� przeczyta� i zrozumia� wszystkie instrukcje zawarte tutaj zanim zaczniesz. 11..11.. ZZmmiiaannyy ww ssttoossuunnkkuu ddoo ppoopprrzzeeddnniieejj wweerrssjjii.. Dodane sekcje: Doda�em sekcj� na temat dlaczego m�g�by� niechcie� instalowa� pakietu Shadow Suite. Doda�em sekcj� jak uaktualni� xdm-a. Doda�em sekcj� jak zmusi� do dzia�ania specjalne w�a�ciwo�ci pakietu Shadow Suite. Doda�em sekcj� zawieraj�c� cz�sto zadawane pytania. Poprawki/Uaktualnienia: Poprawi�em odwo�ania html do sunsite-a. Poprawi�em sekcj� na temat wu-ftpd, aby odzwierciedla�a dodawanie -lshadow do pliku Makefile. Poprawi�em kilka liter�wek. Zmieni�em sekcj� na temat wu-ftpd, aby obs�ugiwa� ELF. Uaktualni�em ca�y dokument, aby odzwierciedla� problemy bezpiecze�stwa w r�nych programach. Doda�em rekomendacj� pakietu Linux Shadow Suite napisanego przez Marka Micha�kiewicza 11..22.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu.. Najnowsz� wersj� orygina�u tego dokumentu mo�na �ci�gn�� z ftp.icm.edu.pl z katalogu /pub/Linux/sunsite/docs/HOWTO. Inne formaty znajduj� si� w katalogu other-formats. Albo poprzez sie� WWW z sunsite.icm.edu.pl . Mo�na te� bezpo�rednio od autora . Autor b�dzie te� wysy�a� nowe wersje na grup� dyskusyjn� comp.os.linux.answers Dokument ten jest tak�e rozprowadzany wraz z dystrybucj� pakietu Shadow-YYDDMM. Na temat nowych wersji t�umaczenia zobacz sekcj� ``Od t�umacza''. 11..33.. KKoommeennttaarrzzee.. Prosz� wszelkie komentarze, uaktualnienia czy sugestie wysy�a� do mnie . Im szybciej otrzymam poczt� tym szybciej mog� poprawi� ten dokument. Je�li masz jakie� uwagi na jego temat, to wy�lij je bezpo�rednio do mnie, poniewa� bardzo rzadko odwiedzam grupy dyskusyjne. 22.. PPoo ccoo pprrzzeess��aanniiaa�� pplliikk ppaasssswwdd ?? W chwili obecnej wi�kszo�� dystrybucji Linux-a nie instaluje domy�lnie pakietu Shadow Suite. Dotyczy to Slackware 2.3, Slackware 3.0 i innych popularnych dystrybucji. Jednym z powod�w tego jest to, �e je�li zap�acono jak�� kwot� za Shadow Suite to prawa co do redystrybucji nie by�y do ko�ca jasne. Linux u�ywa licencji GNU, kt�ra pozwala na umieszczanie go w dowolnych pakietach (jak np. dystrybucje CD-ROM) i pobieranie za nie op�aty. Obecny opiekun pakietu Shadow Suite, Marek Micha�kiewicz otrzyma� �r�d�a orygina�u na licencji w stylu BSD, kt�ra pozwala na dystrybucj�. Teraz, kiedy ju� sprawy praw kopiowania s� rozwi�zane, spodziewane jest, �e przysz�e dystrybucje b�d� zawiera� domy�lnie przes�anianie hase�. Jednak do tego czasu, b�dziesz musia� je samemu instalowa�. Je�li instalowa�e� swoj� dystrybucj� z CD-ROM-u, to pomimo, �e dystrybucja nie zainstalowa�a Shadow Suite niekt�re pliki, kt�rych potrzebujesz mog� si� znajdowa� na CD-ROM-ie. _W_e_r_s_j_e _p_a_k_i_e_t_u _3_._3_._1_, _3_._3_._1_-_2 _i _s_h_a_d_o_w_-_m_k _m_a_j_� _p_r_o_b_l_e_m_y _d_o_t_y_c_z_�_c_e _b_e_z_p_i_e_c_z_e_�_s_t_w_a _z_e _s_w_o_i_m _p_r_o_g_r_a_m_e_m _l_o_g_i_n _i _k_i_l_k_o_m_a _i_n_n_y_m_i _p_r_o_g_r_a_m_a_m_i _t_y_p_u _s_u_i_d _r_o_o_t _i _n_i_e _p_o_w_i_n_n_y _b_y_� _j_u_� _u_�_y_w_a_n_e_. Wszystkie potrzebne pliki s� dost�pne poprzez anonimowane ftp oraz WWW. W Linux-ie bez zainstalowanego pakietu Shadow Suite informacje o u�ytkowniku wraz z has�em trzymane s� w pliku /etc/passwd. Has�o znajduje si� tam w formie zakodowanej (encrypted). Jednak je�li spytasz jakiego� eksperta od kryptografii, to powie ci on/ona, �e has�o jest w postaci "encoded", a nie "encrypted" poniewa� u�ywaj�c funkcji crypt(3), tekstowi jest przypisywany �a�cuch pusty a has�o jest kluczem. Dlatego, od tego momentu b�d� u�ywa� okre�lenia "encoded". Algorytm u�ywany do kodowania has�a jest technicznie okre�lany jako algorytm dzia�aj�cy w jedn� stron�. Jest to algorytm, kt�ry jest �atwy do zastosowania w jedn� stron�, ale bardzo trudny do z�amania. Wi�cej na ten temat znajdziesz w sekcji ``2.4'' albo na stronie podr�cznika systemowego dotycz�cej funkcji crypt(3). Kiedy u�ytkownik wybiera has�o, albo jest mu ono przydzielone, jest ono kodowane losowo generowan� warto�ci� zwan� salt (s�l). Oznacza to, �e ka�de has�o mo�e zosta� zakodowane na 4096 sposob�w. Warto�� salt jest potem zapisywana razem z zakodowanym has�em. Kiedy u�ytkownik si� wlogowuje i podaje has�o, najpierw pobierana jest warto�� salt z zakodowanego has�a. Nast�pnie pobrane has�o zostaje zakodowane pobran� warto�ci�, i por�wnane z zapisanym zakodowanym has�em. Je�li �a�cuchy te s� identyczne, to u�ytkownik zostaje "wpuszczony" do systemu. Jest bardzo trudno (ale nie jest to niemo�liwe) wzi�� losowo zakodowane has�o i otrzyma� has�o rozkodowane. Chocia�, w ka�dym systemie z wi�ksz� liczb� u�ytkownik�w, przynajmniej kilka hase� b�dzie zwyk�ymi s�owami albo jak�� wariacj� zwyk�ych s��w. W�amywacze wi�dz� o tym wszystkim i po prostu koduj� s�ownik ze s�owami i popularnymi has�ami wszytkimi mo�liwymi warto�ciami salt. Potem por�wnaj� wyniki z zawarto�ci� twojego pliku /etc/passwd. Jak znajd� jaki� identyczny �a�cuch, to maj� has�o na nast�pne konto. Nazywane jest to atakiem s�ownikowym i jest to jeden z najpopularniejszych sposob�w na pozyskiwanie dost�pu do systemu przez osoby nieuprawnione. Je�li si� nad tym zastanowisz, to zobaczysz, �e 8-znakowe has�o mo�e zosta� zakodowane na 4096 * 13 sposob�w. Tak wi�c s�ownik sk�adaj�cy si� powiedzmy z 400.000 popularnych s��w, nazw, imion, hase� i ich prostych wariacji zmie�ci�by si� z �atwo�ci� na dysku o pojemno�ci 4GB. W�amywacz musi go tylko posortowa� i sprawdzi� czy kt�ry� z �a�cuch�w nie jest has�em. Dysk o pojemno�ci 4GB mo�na kupi� za ok. 1000 dolar�w, tak wi�c mie�ci si� to w mo�liwo�ciach wi�kszo�ci w�amywaczy systemowych. Je�li w�amywacz zdob�dzie tw�j plik /etc/passwd, to musi on zakodowa� sw�j s�ownik kluczem, kt�ry znajduje si� w tym pliku. Metoda ta mo�e by� wykorzystana przez przeci�tnego nastolatka z kilkoma megabajtami na dysku i komputerem klasy 486. Nawet bez du�ej ilo�ci wolnego miejsca na dysku, narz�dzia takie jak crack(1) mog� zwykle z�ama� przynajmniej kilka hase� z systemu z dostatecznie du�� ilo�ci� u�ytkownik�w (zak�adaj�c, �e u�ytkownicy maj� mo�liwo�� samemu wybiera� sobie has�a). Plik /etc/passwd zawiera tak�e takie informacje jak ID u�ytkownika i ID grupy, kt�re s� u�ywane przez wi�kszo�� program�w. Dlatego plik /etc/passwd mmuussii pozosta� odczytywalny dla ka�dego. Je�li chcia�e� w�a�nie zmieni� prawa dost�pu do pliku /etc/passwd tak, �eby nikt nie m�g� go czyta� (opr�cz "root-a"), to pierwszym symptomem jaki by� zauwa�y�, to to, �e przy wydaniu polecenia ls -l pojawi�yby si� numery zamiast nazw u�ytkownik�w. Pakiet Shadow Suite rozwi�zuje ten problem poprzez umieszczenie hase� w innym pliku (z regu�y jest to /etc/shadow). Plik /etc/shadow ma tak ustawione prawa dost�pu, �e nie mo�e go czyta� nikt, opr�cz "root-a". Niekt�re programy jak np. xlock, nie musz� mie� mo�liwo�ci zmiany hase�, ale tylko ich odczytu. Programy te mog� albo by� uruchamiane z prawem "suid root", albo mo�esz doda� grup� shadow, kt�ra mia�aby tylko prawo odczytu pliku /etc/shadow. Program ten mo�e wtedy nale�e� do grupy "shadow" i by� uruchamiany z prawem "sgid". Przenosz�c zakodowane has�a do innego pliku, efektywnie zabraniamy w�amywaczom dost�pu do nich, co uniemo�liwia ataki s�ownikowe. Dodatkowo pakiet Shadow Suite posiada wiele innych zalet: � Plik konfiguracyjny, w kt�rym mo�na ustawic warto�ci domy�lne podczas logowania (/etc/login.defs) � Narz�dzia do dodawania, modyfikacji i usuwania kont i grup. � Ustalanie "daty wa�no�ci" konta i jego wygasanie (expiration). � Przes�anianie hase� dla grup. (opcjonalnie) � Has�a o podw�jnej d�ugo�ci (16 znak�w) [NIE ZALECANE] � Lepsza kontrola nad wybieraniem hase� przez u�ytkownik�w. � Has�a przez telefon. � Programy do dodatkowej autentykacji [NIE ZALECANE] Instalacja pakietu Shadow Suite przyczynia si� do zwi�kszenia bezpiecze�stwa sieci opartej na Linux-ie, ale pozostaje jeszcze wiele innych rzeczy do zrobienia, aby zwi�kszy� bezpiecze�stwo takiej sieci. Z czasem pojawi si� seria HOWTO po�wi�cona bezpiecze�stwu. Na stronie po�wi�conej bezpiecze�stwu w Linux-ie zawarte s� r�ne informacje na ten temat jak r�wnie� ostrze�enia o znanych dziurach w systemie. 22..11.. CCzzeemmuu mmoo��eesszz nniiee cchhcciiee�� pprrzzeess��aanniiaa�� sswwoojjeeggoo pplliikkuu zz hhaass��aammii ?? Jest kilka okoliczno�ci i konfiguracji, w kt�rych instalacja pakietu Shadow Suite nniiee bbyy��aabbyy dobrym pomys�em: � Maszyna nie zawiera kont u�ytkownik�w. � Twoja maszyna jest w sieci LAN i u�ywa NIS (Network Information Services), aby obs�ugiwa� nazwy u�ytkownik�w i has�a na innych maszynach w tej samej sieci. (W�a�ciwie mog�oby to by� zrobione, ale wykracza poza ramy tego dokumentu i nie zwi�kszy�oby bezpiecze�stwa w znacznym stopniu.) � Twoja maszyna jest u�ywana przez serwery terminali, aby weryfikowa� u�ytkownik�w poprzez NFS (Network File System), NIS albo jak�� inn� metod�. � Na twojej maszynie znajduje si� inne oprogramowanie, kt�re autentykuje u�ytkownik�w, a nie ma wersji tego oprogramowania dla shadow i nie masz �r�de�. 22..22.. FFoorrmmaatt pplliikkuu //eettcc//ppaasssswwdd.. Nieprzes�oni�ty plik /etc/passwd ma nast�puj�cy format: identyfikator:has�o:UID:GID:imie_nazw:katalog:pow�oka Gdzie: iiddeennttyyffiikkaattoorr Nazwa (login) u�ytkownika hhaass��oo Zakodowane has�o UUIIDD Numer u�ytkownika GGIIDD Numer domy�lnej grupy dla u�ytkownika iimmiiee__nnaazzww Imi� i nazwisko u�ytkownika - W�a�ciwie pole to nazywa si� GECOS (General Electric Comprehensive Operating System) i mog� tam by� zapisane inne dane ni� tylko imi� i nazwisko Polecenia Shadow i strony podr�cznika systemowego nazywaj� to pole polem komentarza. kkaattaalloogg Katalog domowy u�ytkownika (pe�na �cie�ka) ppooww��ookkaa Pow�oka dla danego u�ytkownika (pe�na �cie�ka) Na przyk�ad: login:Nkjg97jh7yff8:503:100:Imi� Nazwisko:/home/login:/bin/bash Gdzie Nk jest wartoci� salt a jg97jh7yff8 jest zakodowanym has�em. Zakodowane has�o z kluczem mog�oby r�wnie dobrze wygl�da� tak: ghHFgj75fR8iP a te dwa �a�cuchy to dok�anie te same has�a. Jest 4096 mo�liwo�ci zakodowania pojedynczego has�a. {Przyk�adowym has�em jest tutaj Jak ju� pakiet Shadow Suite jest zainstalowany, to plik /etc/passwd zawiera: login:x:503:100:Imi� Nazwisko:/home/login:/bin/bash Znaczek "x" w tym przypadku jest po prostu czym� co wype�nia miejsce has�a. Format pliku /etc/passwd si� nie zmieni�, zmieni�o si� tylko miejsce przechowywania zakodowanego has�a. Oznacza to, �e ka�dy program, kt�ry tylko czyta plik /etc/passwd,a nie zapisuje w nim has�a, b�dzie nadal dzia�a� poprawnie. Has�a znajduj� si� obecnie w pliku /etc/shadow. (jest to domy�lna nazwa) 22..33.. FFoorrmmaatt pplliikkuu pprrzzeess��aanniiaajj��cceeggoo.. Plik /etc/shadow zawiera nast�puj�ce informacje: login:has�o:ostatnio_1970:mo�e:musi:ostrz:dni:dni_1970:zarez Gdzie: llooggiinn patrz /etc/passwd hhaass��oo Zakodowane has�o oossttaattnniioo__11997700 Ilo�� dni od 1 Stycznia 1970, kiedy has�o by�o ostatnio modyfikowane mmoo��ee Ilo�� dni w przeci�gu, kt�rych has�o mo�e by� zmienione mmuussii Ilo�� dni, po kt�rej has�o musi zosta� zmienione oossttrrzz Ilo�� dni przed wyga�ni�ciem has�a od jakiej nale�y zacz�� informowa� u�ytkownika o wyga�ni�ciu has�a. ddnnii Ilo�� dni, po kt�rej has�o wygasa i konto jest blokowane ddnnii__11997700 Ilo�� dni od 1 Stycznia 1970, po kt�rej konto jest blokowane zzaarreezz Pole zarezerwowane Poprzedni przyk�ad m�g� wi�c wygl�da� tak: login:Nkjg97jh7yff8:9479:0:10000:::: 22..44.. PPrrzzeeggll��dd ffuunnkkccjjii ccrryypptt((33)).. Ze strony podr�cznika systemowego "man": "crypt jest funkcj� koduj�c� has�o. Oparta jest na algorytmie DES (Data Encryption Standard) z dozwolonymi wariacjami (mi�dzy innymi), aby zniech�ci� do sprz�towych rozwi�za� poszukiwania klucza. Kluczem jest podane przez u�ytkownika has�o. [Zakodowany �a�cuch jest warto�ciami NULL] Salt jest �a�cuchem 2-znakowym wybranym ze zbioru [a-zA-Z0-9]. �a�uch ten jest u�yty po to, aby zaburzy� algorytm w jeden z 4096 sposob�w. Bior�c 7 najmniej znacz�cych bit�w ka�dego znaku z klucza otrzymujemy 56-bitowy klucz. Ten 56-bitowy klucz jest u�ywany, do powt�rnego kodowania sta�ego �a�cucha (zwykle s� to znaki NULL). Zwr�cona warto�� wskazuje na zakodowane has�o - seri� 13 drukowalnych znak�w ASCII (dwa pierwsze znaki reprezentuj� warto�� salt). Warto�� zwracana wskazuje na sta�e dane, kt�rych zawarto�� jest zmieniana przy ka�dym wywo�aniu. UUwwaaggaa:: Liczba mo�liwych warto�ci klucza to 2^56 = 7,2E16 (oko�o 72 biliard�w). Wyczerpuj�ce poszukiwania tego klucza ss�� mmoo��lliiwwee przy wykorzystaniu wielu r�wnolegle wsp�pracuj�cych komputer�w. Oprogramowanie, takie jak crack(1), jest dost�pne i szuka ono takich kluczy, kt�re z regu�y u�ywane s� przez ludzi. Dlatego w�a�nie przy wybieraniu has�a powinno si� unika� przynajmniej zwyk�ych s��w. Zaleca si�, u�ywanie programu passwd(1), kt�re podczas zmiany has�a sprawdza czy nowe has�o nie jest przesadnie proste. Algorytm DES ma w sobie pewne kruczki, kt�re czyni� u�ycie interfejsu crypt(3) bezu�ytecznym w przypadku innym ni� autentykacja hase�. Je�li masz zamiar u�ywa� interfejsu crypt(3) do kryptografii nie r�b tego: zdob�d� dobr� ksi��k� na temat kodowania (encryption) i jedn� z szeroko dost�pnych bibliotek DES." Wi�kszo�� pakiet�w Shadow Suite zawiera kod zwi�kszaj�cy ilo�� znak�w w ha�le do 16. Eksperci od DES-a s� temu przeciwni, poniewa� w takim przypadku kodowanie najpierw odbywa si� dla lewej strony d�u�szego has�a, a potem dla prawej strony. Z powodu tego jak dzia�a crypt, mo�e to stworzy� mniej bezpiecznie zakodowane has�o ni� wtedy, gdy u�yte zosta�oby has�o kr�tsze. Dodatkowo, jest ma�o prawdopodobne, �eby u�ytkownik by� w stanie zapami�ta� has�o 16-znakowe. Trwaj� w tej chwili prace, kt�re maj� na celu zast�pienie dotychczasowego algorytmu autentykacji czym� bardziej bezpiecznym oraz z obs�ug� d�u�szych hase� (szczeg�lnie algorytmem MD5) oraz pozostawienie kompatybilno�ci z metod� wykorzystuj�c� crypt. Je�li szukasz dobrej ksi��ki na temat kodowania polecam: "Applied Cryptography: Protocols, Algorithms, and Source Code in C" by Bruce Schneier ISBN: 0-471-59756-2 33.. ZZddoobbyywwaanniiee ppaakkiieettuu SShhaaddooww SSuuiittee.. 33..11.. HHiissttoorriiaa ppaakkiieettuu SShhaaddooww SSuuiittee ddllaa LLiinnuuxx--aa.. NNIIEE UU��YYWWAAJJ PPAAKKIIEETT��WW WWYYMMIIEENNIIOONNYYCCHH WW TTEEJJ SSEEKKCCJJII,, SS�� WW NNIICCHH PPRROOBBLLEEMMYY ZZ BBEEZZPPIIEECCZZEE��SSTTWWEEMM.. Orygina� pakietu Shadow Suite zosta� napisany przez John F. Haugh II. Jest kilka wersji, kt�re by�y u�ywane na Linux-ie: � Orygina� to shadow-3.3.1 � shadow-3.3.1-2 to �ata przeznaczona specjalnie na Linux-a zrobiona przez Florian La Roche . Zawiera ona tak�e dalsze ulepszenia. � Pakiet shadow-mk zosta� skomponowany specjalnie dla Linux-a. Pakiet shadow-mk zawiera pakiet shadow-3.3.1 dystrybuowany przez John F. Haugh II wraz z �at� shadow-3.3.1-2 patch, kilka poprawek zrobionych przez Mohan Kokal , kt�re uczyni�y instalacj� o wiele �atwiejsz�, �at� zrobion� przez Joseph R.M. Zbiciak, kt�ra eliminuje dziury w programie /bin/login zwi�zane z opcjami -f, -h oraz kilka innych �at. Pakiet shadow-mk by� pakietem ppoopprrzzeeddnniioo rekomendowanym, ale powinien zosta� zamieniony z powodu pprroobblleemm��ww z bezpiecze�stwem zwi�zanych z programem login. W pakietach 3.3.1, 3.3.1-2 oraz shadow-mk s� problemy zwi�zane z programem login. B��d ten to niesprawdzanie d�ugo�ci podawanego identyfikatora. Powoduje to przepe�nienie bufora, co z kolei powoduje za�amania (crashes) programu albo gorzej. Podobno to przepe�nienie bufora mo�e by� wykorzystane przez kogo�, kto posiada konto w systemie w po��czeniu z bibliotekami dzielonymi, aby uzyska� przywileje rroooott--aa. Nie b�d� opisywa� jak dok�adnie dzia�a ten b��d poniewa� jest du�o system�w Linux-owych, kt�re s� zara�one, ale systemy z zainstalowanymi tymi pakietami Shadow Suite oraz wi�kszo�� system�w w wersji przed-ELF bbeezz pakietu Shadow Suite s� podatne na atak! Wi�cej informacji na ten temat znajdziesz na stronie po�wi�conej bezpiecze�stwu w Linux-ie . (Shared Libraries and login Program Vulnerability) 33..22.. GGddzziiee zznnaallee���� ppaakkiieett SShhaaddooww SSuuiittee.. Jedyny polecany pakiet Shadow Suite jest wci�� w wersji BETA, chocia� najnowsze wersje s� bezpieczne w �rodowisku produkcji i nie zawieraj� podatnego na ataki programu login. W pakiecie u�ywane jest nast�puj�ce nazewnictwo: shadow-RRMMDD.tar.gz gdzie RRMMDD oznacza dat� wprowadzenia pakietu w obieg. Wersja ta ostatecznie b�dzie wersj� 3.3.3, kiedy zako�czone zostan� testy w wersji BETA, a obs�ugiwana jest przez Marka Micha�kiewicza . Dost�pna jest jako shadow-current.tar.gz . Dost�pna jest tak�e pod adresem ftp.icm.edu.pl . Powiniene� u�y� najnowszej dost�pnej wersji. NNIIEE powiniene� u�ywa� wersji ssttaarrsszzeejj ni� shadow-960129 poniewa� wyst�puje tam opisany powy�ej problem z programem login. Je�li pisz� o pakiecie Shadow Suite, to mam na my�li ten w�a�nie plik. Zak�ada si� te�, �e tej w�a�nie wersji u�ywasz. Aby napisa� ten dokument u�y�em tej w�a�nie wersji pakietu. Je�li wcze�niej u�ywa�e� pakietu shadow-mk, powiniene� zaktualizowa� go do tej wersji i ponownie skompilowa� wszystko to, co pierwotnie przekompilowa�e�, 33..33.. CCoo jjeesstt zzaawwaarrttee ww ppaakkiieecciiee SShhaaddooww SSuuiittee.. Pakiet ten zawiera zast�pcze wersje dla program�w: su, login, passwd, newgrp, chfn, chsh, id Pakiet ten zawiera tak�e nowe programy: chage, newusers, dpasswd, gpasswd, useradd, userdel, usermod, groupadd, groupdel, groupmod, groups, pwck, grpck, lastlog, pwconv, pwunconv. Dodatkowo znajduje si� tam tak�e biblioteka libshadow.a przeznaczona do pisania i kompilowania program�w, kt�re potrzebuj� dost�pu do hase� u�ytkownik�w. Zawarte s� tak�e strony podr�cznika systemowego do wszystkich program�w. Znajduje si� tam tak�e plik konfiguracyjny dla programu login, kt�ry zostanie zainstalowany jako /etc/login.defs. 44.. KKoommppiillaaccjjaa pprrooggrraamm��ww.. 44..11.. RRoozzppaakkoowwyywwaanniiee aarrcchhiiww��ww.. Pierwszym krokiem po �ci�gni�ciu programu jest rozpakowanie go. Pakiet jest w formie starowanej i skompresowany programem gzip, tak wi�c najpierw przenie� go do /usr/src, a potem napisz: tar -xzvf shadow-current.tar.gz Powstanie katalog /usr/src/shadow-RRMMDD, w kt�rym znajd� si� �r�d�a pakietu. 44..22.. KKoonnffiigguurraaccjjaa ww pplliikkuu ccoonnffiigg..hh Pierwsz� rzecz� jak� musisz zrobi�, to skopiowa� odpowiednie pliki Makefile i config.h: cd /usr/src/shadow-RRMMDD cp Makefile.linux Makefile cp config.h.linux config.h Potem powiniene� przejrze� plik config.h. Zawiera on definicje dla niekt�rych opcji konfiguracyjnych. Je�li u�ywasz _z_a_l_e_c_a_n_e_g_o pakietu, to polecam wy��czenie na pocz�tek przes�anianie hase� grup. Domy�lnie opcja ta jest w��czona. Aby to wy��czy�, wyedytuj plik config.h i zmie� #define SHADOWGRP na #undef SHADOWGRP. Na pocz�tek proponuje to wy�aczy�, a p�niej jak b�dziesz chcia� hase� dla grup i administrator�w grup, to mo�esz przekompilowa� pakiet. Je�li zostawisz t� opcj� w��czon� mmuussiisszz stworzy� plik /etc/gshadow. W��czanie opcji pozwalaj�cej na d�u�sze has�a nniiee jest zalecane - patrz wy�ej. Opcja AUTOSHADOW zosta�a zaprojektowana, aby umo�liwi� dzia�anie programom, kt�re ignoruj� przes�anianie hase�. Teoretycznie brzmi to dobrze, ale niestety nie dzia�a poprawnie. Je�li w�aczysz t� opcj� i program zostanie uruchomiony z przywilejami "root-a", mo�e on wywo�a� funkcj� getpwnam() jako "root", a p�niej zapisa� zmienion� pozycj� spowrotem do pliku /etc/passwd (ii hhaass��oo nniiee jjeesstt jjuu�� pprrzzeess��oonnii��ttee). Do takich program�w zaliczaj� si� chfn i chsh. (Nie mo�esz obej�� tego przez zamian� rzeczywistego uid z efektywnym uid przed wywo�aniem funkcji getpwnam() poniewa� root tak�e mo�e u�ywa� chfn i chsh.) To samo ostrze�enie jest s�uszne je�li kompilujesz bibliotek� libc, kt�ra posiada opcj� SHADOW_COMPAT, kt�ra robi to samo. NNiiee ppoowwiinnnnaa ona by� u�ywana! Je�li zakodowane has�a zaczn� si� pojawia� spowrotem w pliku /etc/passwd, to to w�a�nie jest przyczyn�. Je�li u�ywasz wcze�niejszej wersji biblioteki ni� 4.6.27, b�dziesz musia� zrobi� troch� wi�cej zmian w pliku config.h i Makefile. W pliku config.h zmie�: #define HAVE_BASENAME na: #undef HAVE_BASENAME A nast�pnie w pliku Makefile zmie�: SOBJS = smain.o env.o entry.o susetup.o shell.o \ sub.o mail.o motd.o sulog.o age.o tz.o hushed.o SSRCS = smain.c env.c entry.c setup.c shell.c \ pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \ tz.c hushed.c na: SOBJS = smain.o env.o entry.o susetup.o shell.o \ sub.o mail.o motd.o sulog.o age.o tz.o hushed.o basename.o SSRCS = smain.c env.c entry.c setup.c shell.c \ pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \ tz.c hushed.c basename.c Zmiany te powoduj� zawarcie kodu z basename.c, kt�ry zawiera si� w libc 4.6.27 i p�niejszych. 44..33.. KKooppiiee zzaappaassoowwee ttwwooiicchh oorryyggiinnaallnnyycchh pprrooggrraamm��ww.. Dobrym pomys�em b�dzie zrobienie kopii zapasowych program�w, kt�re zostan� zamienione przez Shadow Suite. W dystrybucji Slackware 3.0 s� to: � /bin/su � /bin/login � /usr/bin/passwd � /usr/bin/newgrp � /usr/bin/chfn � /usr/bin/chsh � /usr/bin/id Pakiet w wersji BETA ma mo�liwo�� wykonania tego poprzez program make, ale jest to w komentarzu w pliku Makefile, poniewa� r�ne dystrybucje umieszczaj� te programy w r�nych miejscach. Mo�na to zrobi� pisz�c: make save, ale najpierw trzeba skasowa� znaki # z pliku Makefile od linii: save: Powiniene� tak�e zrobi� kopi� zapasow� pliku /etc/passwd, ale b�d� ostro�ny, �eby� nie zmaza� programu passwd w katalogu /etc. 44..44.. PPoolleecceenniiee mmaakkee _A_b_y _z_a_i_n_s_t_a_l_o_w_a_� _p_a_k_i_e_t _m_u_s_i_s_z _b_y_� _z_a_l_o_g_o_w_a_n_y _j_a_k_o _"_r_o_o_t_". Uruchom make, aby skompilowa� programy wykonywalne: make all Mo�esz zobaczy� ostrze�enie: rcsid defined but not used. Wszystko jest w porz�dku, poniewa� autor u�ywa wersji kontrolnej pakietu. 55.. IInnssttaallaaccjjaa 55..11.. ZZaaooppaattrrzz ssii�� ww ddyysskkiieettkk�� ssttaarrttooww�� ww rraazziiee ggddyybbyy�� ccoo�� ppooppssuu��.. Je�li co� powa�nie p�jdzie nie tak, by�oby dobrze, gdyby� mia� dyskietk� startow�. Je�li masz dyskietki boot/root z czas�w instalacji, to w porz�dku, w innym przypadku przeczytaj Bootdisk-HOWTO , kt�re opisuje jak zrobi� dyskietk� startow�. 55..22.. UUssuuwwaanniiee zzdduupplliikkoowwaannyycchh ssttrroonn ppooddrr��cczznniikkaa ssyysstteemmoowweeggoo.. Powiniene� tak�e przenie�� strony podr�cznika systemowego, kt�re zostan� zast�pione. Nawet je�li jeste� na tyle odwa�ny, �e instalujesz Shadow Suite bez kopii zapasowej, to i tak b�dziesz chcia� przenie�� stare strony podr�cznika systemowego. Nowe strony normalnie nie usun�yby starych, poniewa� te drugie s� przypuszczalnie skompresowane. Mo�esz u�y� takiej kombinacji polece�: man -aW polecenie i locate polecenie, aby zlokalizowa� strony, kt�re maj� by� usuni�te czy przeniesione. Raczej �atwiej zrobi� to przed poleceniem make install. Je�li u�ywasz dystrybucji Slackware 3.0, to oto strony, kt�re powiniene� usun��/przesun��: � /usr/man/man1/chfn.1.gz � /usr/man/man1/chsh.1.gz � /usr/man/man1/id.1.gz � /usr/man/man1/login.1.gz � /usr/man/man1/passwd.1.gz � /usr/man/man1/su.1.gz � /usr/man/man5/passwd.5.gz W katalogu /var/man/cat[1-9] mog� znajdowa� si� strony o tych samych nazwach, kt�re tak�e powinny zosta� usuni�te/przeniesione. 55..33.. PPoolleecceenniiee mmaakkee iinnssttaallll Jeste� got�w, aby napisa� (zr�b to jako "root"): make install Zainstaluje to nowe programy i programy zast�pcze oraz ustawi odpowiednie prawa dost�pu do plik�w. Zostan� tak�e zainstalowane strony podr�cznika systemowego. S� tu tak�e instalowane pliki nag��wkowe w odpowiednich miejscach w /usr/include/shadow. Je�li u�ywasz wersji BETA tego pakietu, to musisz r�cznie skopiowa� plik login.defs do katalogu /etc i upewni� si�, �e ttyyllkkoo ""rroooott"" mo�e go modyfikowa�. cp login.defs /etc chmod 600 /etc/login.defs Plik ten jest plikiem konfiguracyjnym dla programu login. Powiniene� go przejrze� i odpowiednio zmodyfikowa� jego zawarto�� zgodnie z twoimi wymaganiami. To tutaj decydujesz, z kt�rych terminalli (tty) mo�e zalogowa� si� "root" oraz ustawiasz inne opcje bezpiecze�stwa (np. domy�lne wygasanie hase�). 55..44.. PPoolleecceenniiee ppwwccoonnvv Nast�pnym krokiem jest polecenie pwconv. Musi ono tak�e by� wykonane jako "root" i najlepiej w katalogu /etc: cd /etc /usr/sbin/pwconv Program pwconv tworzy z pliku /etc/passwd dwa pliki: /etc/npasswd i /etc/nshadow. Dost�pny jest tak�e program pwunconv je�li musisz zrobi� normalny plik /etc/passwd z plik�w /etc/passwd i /etc/shadow. 55..55.. ZZmmiiaannyy nnaazzww pplliikk��ww nnppaasssswwdd ii nnsshhaaddooww Teraz, kiedy ju� wykona�e� polecenie pwconv, stworzy�e� dwa pliki - /etc/npasswd i /etc/nshadow. Ich nazwy musz� zosta� zmienione odpowiednio na /etc/passwd i /etc/shadow. Chcemy tak�e zrobi� kopi� oryginalnego pliku /etc/passwd i upewni� si�, �e tylko "root" mo�e go czyta�. Kopi� zapasow� umie�cimy w katalogu domowym "root-a": cd /etc cp passwd ~/passwd chmod 600 ~/passwd mv npasswd passwd mv nshadow shadow Powiniene� si� tak�e upewni�, czy w�a�ciciel plik�w i prawa dost�pu s� poprawne. Je�li masz zamiar u�ywa� _X_W_i_n_d_o_w_s, to programy xlock i xdm musz� mie� mo�liwo�� odczytu pliku shadow, ale nie zapisu. S� dwa sposoby na zrobienie tego. Mo�esz ustawi� bit "SUID" dla programu xlock (chmod u+s xlock); xdm ma z regu�y ten bit ustawiony. Albo mo�esz przydzieli� plik /etc/shadow do grupy shadow, ale zanim to zrobisz, sprawd� czy masz grup� shadow w pliku /etc/group. W�a�ciwie �aden z u�ytkownik�w systemu nie powinien by� w tej grupie. cd /etc chown root.root passwd chown root.shadow shadow chmod 0644 passwd chmod 0640 shadow Tw�j system ma teraz przes�oni�te has�a. Powiniene� teraz przej�� na inny wirtualny terminal i sprawdzi� czy mo�esz si� zalogowa� ZZrr��bb ttoo tteerraazz -- nnaapprraawwdd�� !! Je�li nie mo�esz, to co� jest nie tak ! Aby powr�ci� do stanu sprzed instalacji _S_h_a_d_o_w _S_u_i_t_e zr�b to: cd /etc cp ~/passwd passwd chmod 644 passwd Przywracasz w ten spos�b stare pliki, kt�re wcze�niej zachowa�e�, na ich w�a�ciwe miejsce. 66.. IInnnnee pprrooggrraammyy,, kktt��rree mmoo��ee mmuussiisszz uuaakkttuuaallnnii�� aallbboo ""zzaa��aattaa��"".. Pomimo, i� pakiet _S_h_a_d_o_w _S_u_i_t_e posiada zast�pcze programy dla wi�kszo�ci program�w, kt�re potrzebuj� dostepu do hase�, to prawie w ka�dym systemie s� jeszcze dodatkowe programy, kt�re potrzebuj� dost�pu do hase�. Je�li masz dystrybucj� _D_e_b_i_a_n (a nawet je�li nie masz), mo�esz znale�� �r�d�a program�w, kt�re musz� by� przerobione pod tym adresem . Reszta tej sekcji opisuje jak uaktualni� programy: adduser, wu_ftpd, ftpd, pop3d, xlock, xdm i sudo tak, aby obs�ugiwa�y przes�oni�te has�a. Aby dowiedzie� si� jak zrobi� obs�ug� przes�oni�tych hase� w jakimkolwiek innym programie zobacz sekcj� ``Obs�uga przes�anianych hase� w programach w C''. (Programy te i tak musz� by� uruchomione z bitem "SUID" dla "root-a" albo grupy shadow, aby rzeczywi�cie mie� dost�p do hase�.) 66..11.. PPrrooggrraamm aadddduusseerr zz ddyyssttrryybbuuccjjii SSllaacckkwwaarree.. Dystrybucja Slackware (i pewnie inne) zawiera interaktywny program s�u��cy do dodawania nowych u�ytkownik�w - /sbin/adduser. Wersj� tego programu obs�uguj�c� przes�oni�te has�a mo�na pobra� np. z ftp.icm.edu.pl z katalogu /pub/Linux/sunsite/system/admin/accounts/. Ja zalecam u�ywanie program�w, kt�re s� dostarczane wraz z pakietem _S_h_a_d_o_w _S_u_i_t_e (useradd, usermod, i userdel) zamiast adduser z dystrybucji Slackware. Co prawda nauczenie si� jak si� nimi pos�ugiwa� zabiera troch� czasu, ale op�aca si� to poniewa� masz o wiele wi�ksz� kontrol� i maj� one poprawne blokowanie plik�w (file locking) /etc/passwd i /etc/shadow - adduser tego nie robi. Wi�cej informacji w nast�pnej sekcji - ``Wprowadzanie pakietu Shadow Suite do u�ycia.''. Ale je�li ju� musisz go mie�, oto co musisz zrobi�: tar -xzvf adduser.shadow-1.4.tar.gz cd adduser make clean make adduser chmod 700 adduser cp adduser /sbin 66..22.. SSeerrwweerr wwuu__ffttppdd.. Wraz z wi�kszo�ci� dystrybucji Linux-a przychodzi serwer wu_ftpd. Je�li twoja dystrybucja nie instaluje domy�lnie pakietu _S_h_a_d_o_w _S_u_i_t_e, to tw�j serwer wu_ftpd nie b�dzie skompilowany z obs�ug� przes�oni�tych hase�. wu_ftpd jest odpalany z inetd/tcpd jako proces _"_r_o_o_t_-_a_". Je�li tw�j demon wu_ftpd jest star� wersj�, to b�dziesz chcia� j� uaktualni� tak czy inaczej poniewa� stare wersje maj� pewien b��d, kt�ry kompromituje konto _"_r_o_o_t_". (Wi�cej informacji znajdziesz na Stronie Domowej Bezpiecze�stwa na Linuxie ). Na szcz�cie musisz tylko zdoby� �r�d�a tego programu i skompilowa� go z w��czon� obs�ug� "Shadow password". Je�li nie masz systemu ELF, to serwer wu_ftpd mo�esz znale�� na SUNSite Polska - nazywa si� wu_ftpd-2.4-fixed.tar.gz Jak ju� �ci�gniesz te �r�d�a, to wtedy napisz: cd /usr/src tar -xzvf wu-ftpd-2.4-fixed.tar.gz cd wu-ftpd-2.4-fixed cp ./src/config/config.lnx.shadow ./src/config/config.lnx Potem zmie� w pliku ./src/makefiles/Makefile.lnx lini�: LIBES = -lbsd -support na: LIBES = -lbsd -support -lshadow Teraz mo�esz uruchomi� skrypt kompiluj�cy i zainstalowa� pakiet: cd /usr/src/wu-ftpd-2.4-fixed /usr/src/wu-ftp-2.4.fixed/build lnx cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old cp ./bin/ftpd /usr/sbin/wu.ftpd Polecenia te powoduj� u�ycie pliku konfiguracyjnego z obs�ug� hase� przes�anianych dla Linux-a, skompilowanie i instalacj� serwera. U siebie na Slackware 2.3 musia�em dodatkowo przed kompilacj� zrobi� co� takiego: cd /usr/include/netinet ln -s in_systm.h in_system.h cd - Zg�aszane by�y problemy z kompilacj� na systemie binarnym ELF, ale wersja BETA nast�pnej wersji dzia�a dobrze. Mo�na j� znale�� pod adresem ftp.icm.edu.pl pod nazw� wu-ftp-2.4.2-beta-10.tar.gz. Jak ju� �ci�gniesz serwer umie�� go w /usr/src i napisz: cd /usr/src tar -xzvf wu-ftpd-2.4.2-beta-9.tar.gz cd wu-ftpd-beta-9 cd ./src/config Potem zmie� w pliku config.lnx: #undef SHADOW.PASSWORD na: #define SHADOW.PASSWORD Potem: cd ../Makefiles i zmie� w pliku Makefile.lnx LIBES = -lsupport -lbsd # -lshadow na: LIBES = -lsupport -lbsd -lshadow Nast�pnie skompiluj i zainstaluj: cd .. build lnx cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old cp ./bin/ftpd /usr/sbin/wu.ftpd Zauwa�, �e powiniene� sprawdzi� w /etc/inetd.conf katalog, w kt�rym tw�j serwer rzeczywi�cie si� znajduje. Powiadomiono mnie, �e niekt�re dystrybucje umieszczaj� demony serwer�w w innych miejscach, a wtedy wu_ftpd mo�e si� znajdowa� gdzie indziej. 66..33.. SSttaannddaarrddoowwyy ffttppdd.. Je�li masz u siebie standardowy serwer ftpd, zaleca�bym zmian� na wu_ftpd. Poza znan� dziur� om�wion� wcze�niej, wu_ftpd jest uznany za bardziej bezpieczny. Je�li nalegasz na standardowy, albo potrzebujesz obs�ugi _N_I_S, to na SUNSite Polska znajdziesz ftpd-shadow-nis.tgz. 66..44.. ppoopp33dd ((PPoosstt OOffffiiccee PPrroottooccooll 33)) Je�li potrzebujesz obs�ugi _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l _3, b�dziesz musia� skompilowa� ponownie program pop3d. Normalnie jest on uruchamiany przez inetd/tcpd jako "root". Na SUNSite Polska dost�pne s� dwie wersje: � pop3d-1.00.4.linux.shadow.tar.gz � pop3d+shadow+elf.tar.gz Obie s� raczej proste do zainstalowania. 66..55.. xxlloocckk Je�li zainstalujesz pakiet Shadow Suite i uruchomisz _X_W_i_n_d_o_w_s, a nast�pnie zablokujesz (lock) ekran nie uaktualniaj�c programu xlock, b�dziesz musia� u�y� CTRL+ALT+Fx, aby prze��czy� si� na wirtualn� konsol� tekstow� (je�li masz jak��), zalogowa� si� i zlikwidowa� proces xlock (albo u�y� CTRL+ALT+BACKSPACE �eby zamkn�� XWindows). Na szcz�cie uaktualnienie programu xlock jest do�� proste. Je�li masz XFree86 wersja 3.x.x, przypuszczalnie u�ywasz xlockmore (kt�ry jest wspania�ym "screensaver-em" w po�aczeniu z "lock"). Nast�puj�cy pakiet obs�uguje przes�oni�te has�a - xlockmore-3.5.tgz a dost�pny jest z SUNSite Polska . Je�li masz starsz� wersj� zalecam uaktualnienie do tej. Oto "z grubsza" to, co musisz zrobi�: � �ci�gnij xlockmore i umie�� w /usr/src � rozpakuj: tar -xzvf xlockmore-3.7.tgz � zmie� w pliku /usr/X11R6/lib/X11/config/linux.cf lini� #define HasShadowPasswd NO na: #define HasShadowPasswd YES � skompiluj pliki wykonywalne: cd /usr/src/xlockmore xmkmf make depend make � potem przenie� wszystko w odpowiednie miejsce i uaktulanij prawa dost�pu i w�a�cicieli plik�w cp xlock /usr/X11R6/bin/ cp XLock /var/X11R6/lib/app-defaults/ chown root.shadow /usr/X11R6/bin/xlock chmod 2755 /usr/X11R6/bin/xlock chown root.shadow /etc/shadow chmod 640 /etc/shadow Tw�j xlock b�dzie teraz dzia�a� poprawnie. 66..66.. xxddmm xdm jest programem, kt�ry prezentuje ekran "loguj�cy" dla XWindows. Niekt�re systemy startuj� ten program kiedy system ma si� uruchomi� w odpowiednim "runlevel-u" (zobacz /etc/inittab). Je�li zainstalowa�e� przes�aniane has�a, musisz uaktulani� ten program. Na szcz�cie jest to do�� proste: xdm.tar.gz mo�na �ci�gn�� z SUNSite Polska . �ci�gnij ten plik i umie�� go w /usr/src, potem go rozpakuj: tar -xzvf xdm.tar.gz. Zmie� w pliku /usr/X11R6/lib/X11/config/linux.cf lini� #define HasShadowPasswd NO na: #define HasShadowPasswd YES Skompiluj pliki wykonywalne: cd /usr/src/xdm xmkmf make depend make Potem umie�� wszystko na swoim miejscu cp xdm /usr/X11R6/bin/. xdm jest uruchamiany jako "root" tak wi�c nie musisz zmienia� jego praw dost�pu. 66..77.. ssuuddoo Program sudo pozwala administratorowi na udost�pnianie zwyk�ym u�ytkownikom program�w, kt�re wymagaj� uprawnie� "root-a". Jest to po�yteczne poniewa� mo�na ogranicza� dost�p do konta "root" i jednocze�nie pozwala� u�ytkownikom np. montowa� urz�dzenia. sudo musi przeczyta� has�o poniewa� weryfikuje u�ytkownika kiedy jest uruchamiane. sudo jest uruchamiane z bitem SUID "root" tak wi�c nie ma problemu z dost�pem do pliku /etc/shadow. Program ten z obs�ug� hase� przes�anianych dost�pny jest na SUNSite Polska pod nazw� sudo-1.2-shadow.tgz. UUwwaaggaa:: Podczas instalacji tego programu usuni�ty zostanie plik /etc/sudoerrs i zast�piony domy�lnym przychodz�cym razem z pakietem. Tak wi�c zr�b sobie kopi� zapasow� je�li robi�e� tam jakie� zmiany. Albo mo�esz usun�� linijk� kasuj�c� ten plik z pliku Makefile. Obs�uga przes�anianych hase� jest ju� ustawiona w pakiecie, tak wi�c wszystko co trzeba zrobi�, to przekompilowa� go. Po umieszczeniu go w /usr/src napisz: cd /usr/src tar -xzvf sudo-1.2-shadow.tgz cd sudo-1.2-shadow make all make install 66..88.. iimmaappdd ((EE--MMaaiill ppaakkiieett ppiinnee)).. imapd jest serwerem poczty elektronicznej podobnym do pop3d. imapd przychodzi wraz z pakietem _P_i_n_e _E_-_M_a_i_l. Dokumentacja dostarczana wraz z tym pkaietem twierdzi, �e domy�lnym dla system�w Linux jest w��czenie obs�ugi przes�anianych hase�. Ja jednak przekona�em si�, �e nie jest to prawda. Id�c dalej, kombinacja skrypt tworz�cy - Makefile bardzo utrudnia dodanie biblioteki libshadow.a podczas kompilacji, wi�c nie by�em w stanie doda� obs�ugi hase� przes�anianych do imapd. Je�li komu� si� to uda�o, to prosz� o opis a ja umieszcz� go w tym punkcie. 66..99.. ppppppdd ((SSeerrwweerr PPrroottookkoo��uu PPooiinntt--ttoo--PPooiinntt)) Serwer pppd mo�e zosta� tak ustawiony, aby u�ywa� r�nych typ�w autentykacji: _P_a_s_s_w_o_r_d _A_u_t_h_e_n_t_i_c_a_t_i_o_n _P_r_o_t_o_c_o_l (PAP) i _C_r_y_p_t_o_g_r_a_p_h_i_c _H_a_n_d_s_h_a_k_e _A_u_t_h_e_n_t_i_c_a_t_i_o_n _P_r_o_t_o_c_o_l (CHAP). Serwer pppd zwykle czyta �a�uchy hase� z /etc/ppp/chap-secrets i/albo z /etc/ppp/pap-secrets. Je�li u�ywasz tego domy�lnego zachowania serwera pppd, to przeinstalowywanie go nie jest konieczne. pppd pozwala tak�e na u�ycie parametr�w _l_o_g_i_n_-_u (albo z wiersza polece�, albo z pliku konfiguracyjnego, albo z pliku z opcjami). Je�li jest podana jaka� opcja _l_o_g_i_n_-_u, to pppd u�yje pliku /etc/passwd, �eby zweryfikowa� identyfikator i has�o dla PAP. To oczywi�cie nie zadzia�a odk�d nasz plik z has�ami jest przes�aniany. Je�li u�ywasz pppd-1.2.1d, to b�dziesz musia� doda� kod do obs�ugi hase� przes�anianych. Podany w dalszej cz�ci przyk�ad dodaje obs�ug� dla tej w�a�nie wersji. Wersja pppd-2.2.0 ma ju� w sobie obs�ug� przes�anianych hase�. 77.. WWpprroowwaaddzzaanniiee ppaakkiieettuu SShhaaddooww SSuuiittee ddoo uu��yycciiaa.. Sekcja ta opisuje kilka rzeczy kt�re b�dziesz chcia� wiedzie� jak ju� zainstalowa�e� pakiet _S_h_a_d_o_w _S_u_i_t_e. Dalsze informacje zawarte s� na stronach podr�cznika systemowego na temat ka�dego polecenia. 77..11.. DDooddaawwaanniiee,, MMooddyyffiikkaaccjjaa ii uussuuwwaanniiee uu��yyttkkoowwnniikk��ww.. Pakiet _S_h_a_d_o_w _S_u_i_t_e doda� nast�puj�ce polecenia do dodawania, modyfikacji i usuwania u�ytkownik�w. S� one obs�ugiwane z wiersza polece� przez parametry (mog�e� tak�e zainstalowa� program adduser). 77..11..11.. uusseerraadddd.. Polecenie useradd mo�e zosta� u�yte, aby doda� u�ytkownika do systemu. Wykonujesz je tak�e, �eby zmieni� domy�lne ustawienia. Pierwsz� rzecz� jak� powiniene� zrobi�, to sprawdzi� ustawienia domy�lne na twoim systemie i odpowiednio je zmieni�: useradd -D ______________________________________________________________________ GROUP=1 HOME=/home INACTIVE=0 EXPIRE=0 SHELL= SKEL=/etc/skel ______________________________________________________________________ Warto�ci domy�lne to pewnie nie s� te, kt�re chcesz u�ywa�, tak wi�c je�li zacz��by� dodawa� u�ytkownik�w teraz, to musia�by� podawa� informacje dla ka�dego u�ytkownika. Jednak mo�emy i powinni�my zmieni� warto�ci domy�lne: � Niech domy�ln� grup� b�dzie 100 � Niech has�a wygasaj� po 60 dniach � Niech konta nie b�d� blokowane po wyga�ni�ciu has�a � Niech domy�ln� pow�ok� b�dzie /bin/bash Aby zrobi� takie zmiany napisa�bym: useradd -D -g100 -e60 -f0 -s/bin/bash Teraz uruchomienie useradd -D poka�e: ______________________________________________________________________ GROUP=100 HOME=/home INACTIVE=0 EXPIRE=60 SHELL=/bin/bash SKEL=/etc/skel ______________________________________________________________________ W razie gdyby� chcia� wiedzie�, to warto�ci te s� zapisywane w /etc/default/useradd. Teraz mo�esz u�y� polecenia useradd, aby doda� u�ytkownik�w do systemu. Na przyk�ad, aby doda� u�ytkownika fred u�ywaj�c warto�ci domy�lnych napisa�by�: useradd -m -c "Fred Flintstone" fred Stworzy to nast�puj�c� pozycj� w /etc/passwd: fred:*:505:100:Fred Flinstone:/home/fred:/bin/bash oraz nast�puj�c� pozycj� w /etc/shadow: fred:!:0:0:60:0:0:0:0 Utworzony zostanie katalog domowy freda oraz skopiowana zostanie tam zawarto�� katalogu /etc/skel z powodu opcji -m. Poniewa� nie podali�my UID-u u�yty zostanie nast�pny wolny. Konto freda b�dzie utworzone, ale nie b�dzie on si� m�g� zalogowa� dop�ki go nie odblokujemy. Zrobimy to przez zmian� has�a: passwd fred ______________________________________________________________________ Changing password for fred Enter the new password (minimum of 5 characters) Please use a combination of upper and lower case letters and numbers. New Password: ******* Re-enter new password: ******* ______________________________________________________________________ Teraz w /etc/shadow b�dzie: fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0 A fred b�dzie m�g� si� teraz zalogowa� i korzysta� z systemu. Najlepsze w u�yciu program�w, kt�re przychodz� razem z pakietem _S_h_a_d_o_w _S_u_i_t_e jest to, �e wszelkie zmiany plik�w /etc/passwd i /etc/shadow s� wykonywane z tzw. blokowaniem. Ta wi�c je�li dodajesz u�ytkownika do systemu a inny u�ytkownik w�a�nie sobie zmienia has�o, to obie operacje zostan� wykonane poprawnie. Powiniene� u�ywa� raczej dostarczonych program�w ni� edytowa� r�cznie pliki /etc/passwd i /etc/shadow. Je�li edytowa�e� plik /etc/shadow i jaki� u�ytkownik zmienia� sobie w tym samym czasie has�o, to po zapisaniu zmian dokonanych przez ciebie nowe has�o u�ytkownika zginie. Oto ma�y interaktywny skrypt, kt�ry dodaje nowego u�ytkownika u�ywaj�c useradd i passwd: ______________________________________________________________________ #!/bin/bash # # /sbin/newuser - Skrypt dodaj�cy u�ytkownik�w do systemu u�ywaj�cego # program�w useradd z pakietu Shadow Suite i passwd. # # Napisany przez Mike'a Jacksona jako przyk�ad do # Shadow-Password-HOWTO. Pozwolenie na u�ywanie i modyfikacje wyra�nie dane. # # Mo�naby ten skrypt zmodyfikowa� tak, �eby pokazywa� warto�ci domy�lne # oraz pozwala� na modyfikacj� podobnie jak program adduser ze Slackware. # Mo�naby te� sprawdza� b��dy, czy g�upie warto�ci. # # ## # Warto�ci domy�lne dla polecenia useradd ## GROUP=100 # Domy�lna grupa HOME=/home # Katalog domowy (/home/identyfikator) SKEL=/etc/skel # Katalog szkieletowy INACTIVE=0 # Ilo�� dni, po kt�rych wygasa has�o. EXPIRE=60 # Ilo�� dni, przez kt�r� ma istnie� has�o SHELL=/bin/bash # Domy�lna pow�oka (pe�na �cie�ka) ## # Warto�ci domy�lne dla polecenia passwd ## PASSMIN=0 # Ilo�� dni mi�dzy kt�r� zmienia si� has�o PASSWARN=14 # Ilo�� dni przed wyga�ni�ciem has�a kiedy jest # wysy�ana wiadomo�� ostrzegaj�ca. ## # Upewnij si�, �e "root" uruchomi� ten skrypt ## WHOAMI=`/usr/bin/whoami` if [ $WHOAMI != "root" ]; then echo "You must be root to add news users!" exit 1 fi ## # Zapytaj o identyfikator i imi� i nazwisko ## echo "" echo -n "Username: " read USERNAME echo -n "Full name: " read FULLNAME # echo "Adding user: $USERNAME." # # Zauwa�, �e wymagane s� "" przy $FULLNAME poniewa� pole to b�dzie # prawie zawsze zawiera�o przynajmniej jedn� spacj�, a bez " polecenie # useradd "pomy�la�oby", �e jest to nast�pny parametr kiedy dosz�oby # do spacji. # /usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \ -f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME ## # Ustaw domy�lne warto�ci dla has�a ## /bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1 ## # Niech polecenie passwd zapyta poprawnie (dwa razy) o has�o ## /bin/passwd $USERNAME ## # Poka�, co zosta�o zrobione ## echo "" echo "Entry from /etc/passwd:" echo -n " " grep "$USERNAME:" /etc/passwd echo "Entry from /etc/shadow:" echo -n " " grep "$USERNAME:" /etc/shadow echo "Summary output of the passwd command:" echo -n " " passwd -S $USERNAME echo "" ______________________________________________________________________ U�ycie skryptu do dodawania u�ytkownik�w do systemu jest na prawd� bardziej preferowane ni� r�czna edycja plik�w /etc/passwd czy /etc/shadow czy te� u�ywanie programu adduser ze Slackware. Mo�esz �mia�o modyfikowa� ten skrypt dla swoich potrzeb. Wi�cej informacji na temat useradd znajdziesz w podr�czniku systemowym. 77..11..22.. uusseerrmmoodd.. Program usermod u�ywany jest do modyfikowania informacji na temat danego u�ytkownika. Opcje tego programu s� podobne do opcji programu useradd. Powiedzmy, �e chcesz zmieni� pow�ok� dla freda; zrobi�by� to tak: usermod -s /bin/tcsh fred Teraz pozycja dotycz�ca freda w /etc/passwd zmieni�aby si� na: fred:*:505:100:Fred Flinstone:/home/fred:/bin/tcsh Za��my, �e chcemy, �eby konto freda wygas�o 15.09.1997: usermod -e 09/15/97 fred <-- data w stylu angielskim-ameryka�skim (mmddrr) Teraz pozycja dotycz�ca freda w /etc/shadow zmieni�aby si� na: fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0 Wi�cej informacji na temat usermod znajdziesz w podr�czniku systemowym. 77..11..33.. uusseerrddeell.. userdel robi dok�adnie to czego si� spodziewa�e� - kasuje konto podanego u�ytkownika. U�ycie jest proste: userdel -r Opcja -r powoduje skasowanie wszystkich plik�w z katalogu domowego u�ytkownika. Plik�w zlokalizowanych w innym systemie plik�w trzeba poszuka� i skasowa� je r�cznie. Je�li chcesz tylko zablokowa� dane konto, a nie skasowa� to u�yj polecenia passwd. 77..22.. PPoolleecceenniiee ppaasssswwdd ii ""tteerrmmiinn wwaa��nnoo��ccii"" hhaass��aa.. Polecenie passwd u�ywane jest do zmiany has�a. Opr�cz tego u�ywane jest przez "root-a" do: � Blokowania i odblokowywania kont (-l i -u) � Ustawiania maksymalnej ilo�ci dni przez jak� has�o jest wa�ne (-x) � Ustawiania minimalnej ilo�ci dni mi�dzy zmianami has�a (-n) � Ustawiania ilo�ci dni, po kt�rych wysy�ane jest ostrze�enie o wyga�ni�ciu has�a (-w) � Ustawiania ilo�ci dni, po kt�rej has�o wygasa przed zablokowaniem konta (-i) � Pozwalania na przegl�danie informacji o koncie w czytelniejszym formacie (-S) Na przyk�ad, sp�jrzmy jeszcze raz na freda: passwd -S fred fred P 03/04/96 0 60 0 0 Oznacza to, �e has�o freda jest wa�ne, ostatnio by�o zmieniane 04.03.1996, mo�e by� zmienione w ka�dej chwili, wygasa po 60 dniach, fred nie zostanie ostrze�ony oraz konto nie zostanie zablokowane po wyga�ni�ciu has�a. Oznacza to po prostu tyle, �e kiedy fred zaloguje si� po wyga�ni�ciu has�a zostanie zaraz na pocz�tku poproszony o podanie nowego has�a. Je�li zdecydujemy si�, �e chcemy ostrzec freda na 14 dni przed wyga�ni�ciem jego has�a i zablokowa� jego konto 14 dni po wyga�ni�ciu has�a trzebaby napisa� tak: passwd -w14 -i14 fred Teraz dane o fredzie zmiani�y si� na: fred P 03/04/96 0 60 14 14 Wi�cej informacji na temat passwd znajdziesz w podr�czniku systemowym. 77..33.. PPlliikk llooggiinn..ddeeffss Plik /etc/login jest plikiem konfiguracyjnym dla programu login oraz dla ca�ego pakietu _S_h_a_d_o_w _S_u_i_t_e. /etc/login zawiera ustawienia od tego jak b�d� wygl�da� znaki zach�ty do tego jakie domy�lne warto�ci b�d� dla wygasania has�a kiedy u�ytkownik je sobie zmieni. Plik /etc/login.defs jest do�� dobrze udokumentowany ju� przez same komentarze w nim zawarte. Chocia� jest kilka rzeczy do odnotowania: � Zawiera opcje, kt�re mog� by� w��czane i wy��czane do okre�lania ilo�ci zalogowa�. � Zawiera wskazania na inne pliki konfiguracyjne. � Zawiera domy�lne warto�ci dla takich ustawie� jak "termin wa�no�ci" has�a. Z powy�szej listy wynika, �e jest to raczej wa�ny plik i powiniene� si� upewni�, �e istnieje i �e ustawienia s� takie jak chcia�e�. 77..44.. HHaass��aa ddllaa ggrruupp.. Plik /etc/groups mo�e zawiera� has�a, kt�re pozwalaj� u�ytkownikom do��czy� si� do jakiej� grupy. Funkcja ta jest w��czona je�li zdefiniujesz sta�� SHADOWGRP w pliku /usr/src/shadow-YYMMDD/config.h . Je�li j� zdefiniujesz i skompilujesz pakiet, musisz utworzy� plik /etc/gshadow, �eby trzyma� tam has�a grup i informacje administracyjne. Do utworzenia pliku /etc/shadow u�y�e� programu pwconv; nie ma odpowiednika do utworzenia pliku /etc/gshadow, ale to nie ma znaczenia bo plik ten sam si� sob� zajmuje. Aby stworzy� pocz�tkowy plik /etc/gshadow zr�b tak: touch /etc/gshadow chown root.root /etc/gshadow chmod 700 /etc/gshadow Jak b�dziesz tworzy� nowe grupy, zostan� one dodane do /etc/group i /etc/gshadow. Do modyfikacji grup s�u�� programy dostarczane wraz z pakietem _S_h_a_d_o_w _S_u_i_t_e: groups, groupadd, groupmod i groupdel. Format pliku /etc/group jest taki: nazwa_grupy:!:GID:cz�onek,cz�onek,... Gdzie: nnaazzwwaa__ggrruuppyy - chyba nie wymaga wyja�niania :) !! - w tym miejscu normalnie by�oby has�o, ale teraz jest ono w gshadow GGIIDD - numer grupy cczz��oonneekk - lista cz�onk�w grupy. Format pliku /etc/gshadow jest taki: nazwa_grupy:has�o:admin,admin,...:cz�onek,cz�onek,... Gdzie: nnaazzwwaa__ggrruuppyy - chyba nie wymaga wyja�niania :) hhaass��oo - zakodowane has�o grupy aaddmmiinn - lista administrator�w grupy cczz��oonneekk - lista cz�onk�w grupy Polecenie gpasswd jest u�ywane tylko do dodawania i usuwania cz�onk�w do/z grupy. "root" i ka�dy z administrator�w grupy mo�e usuwa� i dodawa� cz�onk�w. Has�o dla grupy mo�e by� zmienione za pomoc� polecenia passwd przez "root-a" i ka�dego z administrator�w grupy. Chocia� nie ma strony do podr�cznika systemowego dla gpasswd, to zrozumienie opcji tego polecenia nie jest takie trudne jak ju� rozumiesz jego format i koncept. gpasswd bez �adnych parametr�w poda opcje jakie przyjmuje. 77..55.. PPrrooggrraammyy ddoo sspprraawwddzzaanniiaa ppoopprraawwnnoo��ccii.. 77..55..11.. ppwwcckk Program pwck sprawdza poprawno�� plik�w /etc/passwd i /etc/shadow. Sprawdzi ka�dego u�ytkownika czy ma: � poprawn� ilo�� p�l, � unikalny identyfikator, � dobry UID i GID � dobr� grup� domy�ln� � poprawny katalog domowy � poprawn� pow�ok� Ostrze�e nas tak�e je�li znajdzie konta bez hase�. Uruchomienie tego programu po zainstalowaniu pakietu _S_h_a_d_o_w _S_u_i_t_e jest dobrym pomys�em. Powinno sie go tak�e uruchamia� okresowo - co tydzie�, co miesi�c. Je�li u�yjesz opcji -r, to mo�esz u�y� programu cron, aby uruchamia� pwck okresowo i dostawa� raport poczt�. 77..55..22.. ggrrppcckk Program ten sprawdza poprawno�� plik�w /etc/group i /etc/gshadow. Sprawdza: � ilo�� p�l, � unikaln� nazw� grupy � poprawno�� listy administrator�w i cz�onk�w. Ma tak�e opcj� -r do automatycznych raport�w. 77..66.. HHaass��aa pprrzzeezz tteelleeffoonn.. ((DDiiaall--uupp)) Has�a przez telefon s� inn� opcjonaln� lini� obrony dla system�w, kt�re umo�liwiaj� dost�p przez telefon. Je�li masz system z du�� ilo��i� u�ytkownik�w ��cz�cych si� lokalnie albo poprzez sie�, ale chcesz ograniczy� kto mo�e sie po��czy�, to "has�a przez telefon" s� dla ciebie. Aby w�aczy� "has�a przez telefon" musisz wyedytowa� plik /etc/login.defs i upewni� si�, �e DIALUPS_CHECK_ENAB jest ustawione na yes. S� dwa pliki, kt�re zawieraj� informacje o po��czeniach przez telefon: /etc/dialups, kt�ry zawiera "tty" (jeden na lini� bez "/dev/"). Je�li dany tty jest tam zawarty to po��czenie jest sprawdzane; oraz /etc/d_passwd z pe�n� �cie�k� dost�pu do pow�oki oraz opcjonalnym has�em. Je�li u�ytkownik zaloguje si� na lini�, kt�ra jest podana w /etc/diulups i jego pow�oka jest podana w /etc/d_passwd, to b�dzie m�g� si� zalogowa� tylko po podaniu poprawnego has�a. Innym u�ytecznym celem "hase� przez telefon" mo�e by� ustawienie linii, kt�ra pozwala tylko na po��czenia konkretnego rodzaju (np. PPP lub/i UUCP). Je�li u�ytkownik pr�buje si� po��czy� inaczej (np. list� pow�ok), to musi zna� has�o na t� lini�. Zanim b�dziesz m�g� u�ywa� tych w�a�ciwo�ci musisz stworzy� te pliki. Polecenie dpasswd przypisuje has�a do konkretnych pow�ok zawartych w pliku /etc/d_passwd. Wi�cej informacji znajdziesz na stronie podr�cznika systemowego. 88.. OObbss��uuggaa pprrzzeess��aanniiaannyycchh hhaassee�� ww pprrooggrraammaacchh ww CC.. Dodawanie obs�ugi hase� przes�anianych do program�w jest ca�kiem proste. Jedynym problemem jest to, �e program musi zosta� uruchomiony z prawami "root-a", aby mie� dost�p do pliku /etc/shadow. Tutaj pojawia si� jeden wielki problem: podczas pisania takich program�w nale�y si� trzyma� jak naj�ci�lej zasad bezpiecze�stwa. Na przyk�ad je�li program posiada wyj�cie do pow�oki, to nniiee mmoo��ee si� to zdarzy� na prawach "root-a". Je�li program musi mie� dost�p do /etc/shadow i nie potrzebuje wi�cej praw "root-a", to lepiej uruchomi� go z prawami grupy "shadow". Program xlock jest przyk�adem takiego programu. W przyk�adzie podanym ni�ej, pppd-1.2.1d jest ju� uruchomiony z prawami "root-a", tak wi�c dodanie obs�ugi hase� przes�anianych nie powinno zagrozi� bezpiecze�stwu. 88..11.. PPlliikkii nnaagg����wwkkoowwee.. Pliki te powinny znajdowa� si� w /usr/include/shadow. Powinien tam by� tak�e plik /usr/include/shadow.h, ale b�dzie to symboliczne do�aczenie do /usr/include/shadow/shadow.h. Aby doda� obs�ug� hase� przes�anianych do programu, musisz do��czy� pliki nag��wkowe: #include #include Dobrym pomys�em by�oby u�ycie dyrektyw kompilatora, aby skompilowa� warunkowo kod z obs�ug� hase� przes�anianych. (tak jak w przyk�adzie poni�ej.) 88..22.. BBiibblliiootteekkaa lliibbsshhaaddooww..aa Biblioteka ta zosta�a zainstalowana w /usr/lib jak instalowa�e� pakiet _S_h_a_d_o_w _S_u_i_t_e. Kiedy kompilujesz obs�ug� przes�aniancyh hase� w programie trzeba poinformowa� "linker-a", aby do��czy� bibliotek� libshadow.a. Robi si� to tak: gcc program.c -o program -lshadow Chocia� jak zobaczymy w poni�szym przyk�adzie, wi�kszo�� du�ych program�w u�ywa plik�w Makefile i ma zwykle zmienn� LIBS=..., kt�r� si� modyfikuje. 88..33.. SSttrruukkttuurraa SShhaaddooww.. Biblioteka libshadow.a u�ywa struktury spwd dla informacji, kt�re otrzyma z pliku /etc/shadow. Oto definicja tej struktury wzi�ta z /usr/include/shadow/shadow.h: ______________________________________________________________________ struct spwd { char *sp_namp; /* identyfikator */ char *sp_pwdp; /* zakodowane has�o */ sptime sp_lstchg; /* data ostatniej zmiany */ sptime sp_min; /* minimalna ilo�� dni mi�dzy zmianami */ sptime sp_max; /* maksymalna ilo�� dni mi�dzy zmianami */ sptime sp_warn; /* ilo�� dni przed wyga�ni�ciem has�a kiedy b�dzie wysy�ane ostrze�enie */ sptime sp_inact; /* ilo�� dni, po jakiej wygasa has�o dop�ki konto nie b�dzie zablokowane */ sptime sp_expire; /* ilo�� dni od 01.01.1970 dop�ki konto nie wyga�nie */ unsigned long sp_flag; /* zarezerwowane na przysz�o�� */ }; ______________________________________________________________________ Do pola sp_pwdp mo�na dodatkowo wstawi� nawz� programu: identyfikator:Npge08pfz4wuk;@/sbin/extra:9479:0:10000:::: Oznacza to, �e opr�cz podania has�a b�dzie wykonany program /sbin/extra, kt�ry wykona dalsz� autentykacj�. Wywo�any program otrzyma identyfikator i prze��cznik, kt�ry okre�li dlaczego zosta� wywo�any. Wi�cej informacji znajdziesz w /usr/include/shadow/pwauth.h i pwauth.c. Oznacza to, �e powinni�my u�y� funkcji pwauth do przeprowadzenia poprawnej autentykacji, poniewa� zajmie si� ona tak�e drug� autentykacj�. Jest to u�yte w przyk�adzie poni�ej. Autor pakietu _S_h_a_d_o_w _S_u_i_t_e twierdzi, �e odk�d wi�kszo�� program�w tego nie stosuje, mo�e to zosta� usuni�te lub zmienione w przysz�ych wersjach pakietu. 88..44.. FFuunnkkccjjee ppaakkiieettuu SShhaaddooww SSuuiittee.. Plik shadow.h zawiera deklaracje funkcji zawartych w bibliotece libshadow.a: ______________________________________________________________________ extern void setspent __P ((void)); extern void endspent __P ((void)); extern struct spwd *sgetspent __P ((__const char *__string)); extern struct spwd *fgetspent __P ((FILE *__fp)); extern struct spwd *getspent __P ((void)); extern struct spwd *getspnam __P ((__const char *__name)); extern int putspent __P ((__const struct spwd *__sp, FILE *__fp)); ______________________________________________________________________ Funkcja, kt�r� u�yjemy w przyk�adzie to getspnam, kt�ra odczyta struktur� spwd dla podanego identyfikatora. 88..55.. PPrrzzyykk��aadd.. Jest to przyk�ad na dodanie obs�ugi hase� przes�anianych do programu, kt�ry tego potrzebuje, ale nie ma domy�lnie w��czonego. Przyk�ad ten u�ywa serwera _P_o_i_n_t_-_t_o_-_P_o_i_n_t _P_r_o_t_o_c_o_l (pppd-1.2.1d), kt�ry ma tryb do autentykacji _P_A_P u�ywaj�c identyfikatora i has�a z pliku /etc/passwd zamiast z plik�w _P_A_P czy _C_H_A_P. Nie musisz dodawa� tego kodu do pppd-2.2.0, poniewa� on ju� tam jest. Ta w�a�ciwo�� pppd przypuszczalnie nie jest cz�sto u�ywana, ale je�li zainstalowa�e� _S_h_a_d_o_w _S_u_i_t_e, to serwer ten nie b�dzie dzia�a� poniewa� has�a nie s� ju� zapisywane w /etc/passwd. Kod do autentykacji u�ytkownik�w przez pppd-1.2.1d umieszczony jest w pliku /usr/src/pppd-1.2.1d/pppd/auth.c. Poni�szy kod musi zosta� dodany na pocz�tku pliku gdzie znajduj� si� wszystkie inne dyrektywy #include. Otoczyli�my je dyrektywami warunkowymi (czyli skompiluj� si� tylko je�li kompilujemy z w�aczon� obs�ug� hase� przes�anianych). ______________________________________________________________________ #ifdef HAS_SHADOW #include #include #endif ______________________________________________________________________ Nast�pnym krokiem jest modyfikacja w�a�ciwiego kodu. Ci�gle modyfikujemy plik auth.c. Funkcja auth.c przed modyfikacj�: ______________________________________________________________________ /* * login - Check the user name and password against the system * password database, and login the user if OK. * * returns: * UPAP_AUTHNAK: Login failed. * UPAP_AUTHACK: Login succeeded. * In either case, msg points to an appropriate message. */ static int login(user, passwd, msg, msglen) char *user; char *passwd; char **msg; int *msglen; { struct passwd *pw; char *epasswd; char *tty; if ((pw = getpwnam(user)) == NULL) { return (UPAP_AUTHNAK); } /* * XXX If no passwd, let them login without one. */ if (pw->pw_passwd == '\0') { return (UPAP_AUTHACK); } epasswd = crypt(passwd, pw->pw_passwd); if (strcmp(epasswd, pw->pw_passwd)) { return (UPAP_AUTHNAK); } syslog(LOG_INFO, "user %s logged in", user); /* * Write a wtmp entry for this user. */ tty = strrchr(devname, '/'); if (tty == NULL) tty = devname; else tty++; logwtmp(tty, user, ""); /* Add wtmp login entry */ logged_in = TRUE; return (UPAP_AUTHACK); } ______________________________________________________________________ Has�o u�ytkownika jest umieszczane w pw->pw_passwd, tak �e wszystko co musimy zrobi�, to doda� funkcj� getspnam. Umie�ci to has�o w spwd->sp_pwdp. Dodamy funkcj� pwauth, aby przeprowadzi� w�a�ciw� autentykacj�. Przeprowadzi to tak�e drug� autentykacj� je�li plik shadow jest odpowiednio ustawiony. Funkcja auth.c po modyfikacji do obs�ugi hase� przes�anianych: ______________________________________________________________________ /* * login - Check the user name and password against the system * password database, and login the user if OK. * * This function has been modified to support the Linux Shadow Password * Suite if USE_SHADOW is defined. * * returns: * UPAP_AUTHNAK: Login failed. * UPAP_AUTHACK: Login succeeded. * In either case, msg points to an appropriate message. */ static int login(user, passwd, msg, msglen) char *user; char *passwd; char **msg; int *msglen; { struct passwd *pw; char *epasswd; char *tty; #ifdef USE_SHADOW struct spwd *spwd; struct spwd *getspnam(); #endif if ((pw = getpwnam(user)) == NULL) { return (UPAP_AUTHNAK); } #ifdef USE_SHADOW spwd = getspnam(user); if (spwd) pw->pw_passwd = spwd->sp-pwdp; #endif /* * XXX If no passwd, let NOT them login without one. */ if (pw->pw_passwd == '\0') { return (UPAP_AUTHNAK); } #ifdef HAS_SHADOW if ((pw->pw_passwd && pw->pw_passwd[0] == '@' && pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL)) || !valid (passwd, pw)) { return (UPAP_AUTHNAK); } #else epasswd = crypt(passwd, pw->pw_passwd); if (strcmp(epasswd, pw->pw_passwd)) { return (UPAP_AUTHNAK); } #endif syslog(LOG_INFO, "user %s logged in", user); /* * Write a wtmp entry for this user. */ tty = strrchr(devname, '/'); if (tty == NULL) tty = devname; else tty++; logwtmp(tty, user, ""); /* Add wtmp login entry */ logged_in = TRUE; return (UPAP_AUTHACK); } ______________________________________________________________________ Po dok�adnym prze�ledzaniu tego kodu oka�e si�, �e zrobili�my jeszcze jedn� zmian�. Oryginalna wersja pozwala�a na dost�p (zwraca�a UPAP_AUTHACK) je�li nniiee bbyy��oo has�a w pliku /etc/passwd. Nie jest to dobrze, poniewa� popularnym u�yciem tej w�a�ciwo�ci programu login jest u�ywanie jednego konta, na dost�p do programu PPP, a potem sprawdzenie identyfikatora i has�a dostarczonych przez PAP z tymi w plikach /etc/passwd i /etc/shadow. Tak wi�c je�li ustwiliby�my oryginaln� wersj�, aby uruchamia�a pow�ok� dla u�ytkownika np. ppp, to ka�dy m�g�by uzyska� po��czenie ppp przez podanie identyfikatora ppp i pustego has�a. Poprawili�my to przez zwr�cenie UPAP_AUTHNAK zamiast UPAP_AUTHACK je�li pole z has�em jest puste. Interesuj�ce jest to, �e pppd-2.2.0 ma ten sam problem. Nast�pnie musimy zmodyfikowa� plik Makefile tak, �eby pojawi�y si� dwie rzeczy: USE_SHADOW musi by� zdefiniowane i libshadow.a musi by� dodana w procesie "linkowania". Wyedytuj plik Makefile i dodaj: LIBS = -lshadow Potem znajd� lini�: COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t i zmie� j� na: COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t -DUSE_SHADOW Teraz kompilacja i instalacja. 99.. CCzz��ssttoo zzaaddaawwaannee ppyyttaanniiaa.. _P_: Kiedy� kontrolowa�em terminale z jakich m�g� si� logowa� "root" przez plik /etc/securettys, teraz nie wygl�da na to �eby dzia�a�o. Co jest grane ? _O_: Teraz kiedy pakiet _S_h_a_d_o_w _S_u_i_t_e jest zainstalowany plik /etc/securettys nie ma �adnego znaczenia. Terminale, z kt�rych mo�e si� zalogowa� "root" s� teraz podawane w pliku konfiguracyjnym /etc/login.defs. Pozycja w tym pliku mo�e wskazywa� na jaki� inny plik. _P_: Zainstalowa�em pakiet _S_h_a_d_o_w _S_u_i_t_e i nie mog� si� zalogowa�, co przegapi�em ? _O_; Przypuszczalnie zainstalowa�e� pakiet i zapomnia�e� uruchomi� program pwconv albo zapomnia�e� skopiowa� /etc/npasswd na /etc/passwd oraz /etc/nshadow na /etc/shadow. Mo�esz musisz tak�e skopiowa� login.defs do /etc. _P_: W sekcji o "xlock-u" by�o napisane, �eby zmieni� grup� pliku /etc/shadow na shadow, ale ja nie mam takiej grupy - co mam zrobi� ? _O_: Mo�esz j� doda�. Po prostu wyedytuj plik /etc/group i dodaj lini� definiuj�c� grup� shadow. Musisz si� upewni�, �e numer grupy nie jest u�ywany przez �adn� inn� i musisz j� doda� przed pozycj� nogroup. Albo po prostu ustaw bit SUID dla programu xlock. _P_: Jest jaka� lista dyskusyjna dla Linux Shadow Password Suite ? _O_: Tak, ale jest ona dla rozwijaj�cych ten pakiet i dla testuj�cych wersje BETA. Mo�esz si� zapisa� na t� list� wysy�aj�c list na adres _s_h_a_d_o_w_-_l_i_s_t_-_r_e_q_u_e_s_t_@_n_e_p_t_u_n_e_._c_i_n_._n_e_t o tytule _s_u_b_s_c_r_i_b_e. Na li�cie tej dyskutuje si� w�a�ciwie o konkretnej serii shadow-YYMMSS. Powiniene� si� na ni� zapisa� je�li chcesz by� w��czony do dalszego rozwoju albo je�li zainstalowa�e� sobie ten pakiet i chcesz wiedzie� o nowszych wersjach. _P_: Zainstalowa�em _S_h_a_d_o_w _S_u_i_t_e, ale kiedy u�ywam polecenia userdel dostaj�: "userdel: cannot open shadow group file" - co zrobi�em �le ? _O_: Skompilowa�e� pakiet z w��czon� opcj� SHADOWGRP, ale nie masz pliku /etc/gshadow. Musisz albo wyedytowa� plik config.h i skompilowa� ponownie pakiet albo stworzy� plik /etc/gshadow. Zobacz sekcj� dotycz�c� przes�anianych grup. _P_: Zainstalowa�em _S_h_a_d_o_w _S_u_i_t_e, ale zakodowane has�a pojawiaj� si� w pliku /etc/passwd, co jest ? _O_: Albo w�aczy�e� opcj� AUTOSHADOW w pliku config.h, albo twoja biblioteka libc by�a skompilowana z opcj� SAHDOW_COMPAT. Musisz dowiedzie� si�, kt�re z tych dw�ch jest prawdziwe i skompilowa� ponownie. 1100.. PPrraawwaa aauuttoorrsskkiiee ppooddzzii��kkoowwaanniiaa ii rr���nnee.. 1100..11.. PPrraawwaa aauuttoorrsskkiiee Linux Shadow Password HOWTO jest chronione prawami autorskimi Michaela H. Jacksona. Dozwolone jest dystrybuowanie kopii tego dokumentu zak�adaj�c, �e wzmianka o prawach autorskich i to pozwolenie jest zawarte we wszystkich kopiach. Dozwolone jest dytrybuowanie i kopiowanie modyfikowanych wersji tego dokumentu pod warunkami kopiowania z powy�szego akapitu, zak�adaj�c, �e zawarta jest jasna informacja, �e jest to wersja modyfikowana tego dokumentu. Dozwolone jest kopiowanie i dystrybucja t�umacze� tego dokumentu na inne j�zyki pod warunkami dla wersji modyfikowanych wymienionymi wy�ej. Dozwolone jest konwertowanie tego dokumentu na inne media pod warunkami podanymi powy�ej dla wersji modyfikowanych zak�adaj�c, �e informacja o �r�dle nowego dokumentu jest zawarta przez oczywisty odno�nik do dokumentu �r�d�owego w nowej wersji tego dokumentu. Je�li wyst�puj� jakie� w�tpliow�ci co do s�owa "oczywiste", w�a�ciciel praw autorskich rezerwuje sobie prawo decyzji. 1100..22.. PPooddzzii��kkoowwaanniiaa ii rr���nnee.. Przyk�ady kod�w dla auth.c zosta�y wzi�te z pppd-1.2.1d i ppp-2.1.0e, Copyright (c) 1993 and The Australian National University oraz Copyright (c) 1989 Carnegie Mellon University. Podzi�kowania dla Marka Micha�kiewicza za napisanie i opiek� nad pakietem _S_h_a_d_o_w _S_u_i_t_e dla Linux-a oraz za przejrzenie i komentarze do tego dokumentu. Podzi�kowania dla Rona Tidda za jego pomocne przejrzenie i testowanie. Podzi�kowania dla wszystkich, kt�rzy przys�ali do mnie komentarze, aby pom�c w ulepszeniu tego dokumentu. Je�li masz jakie� uwagi lub sugestie to napisz do mnie prosz�, z powa�aniem Michael H. Jackson 1100..33.. OOdd tt��uummaacczzaa.. T�umaczenie to jest chronione prawami autorskimi � Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Je�li znalaz�e� jakie� ra��ce b��dy ortograficzne, gramatyczne, sk�adniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl Oficjaln� stron� t�umacze� HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przet�umaczonych dokument�w znajduj� si� na tej�e stronie. Dost�pne s� tak�e poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/. Przet�umaczone przeze mnie dokumenty znajduj� si� tak�e na mojej stronie WWW. S� tam te� odwo�ania do Polskiej Strony T�umaczeniowej. Kontakt z nasz� grup�, grup� t�umaczy mo�esz uzyska� poprzez list� dyskusyjn� jtz@ippt.gov.pl. Je�li chcesz sie na ni� zapisa�, to wy�lij list o tre�ci subscribe jtz Imi� Nazwisko na adres listproc@ippt.gov.pl Zmiany w tym dokumencie wprowadzone przez t�umacza to: � - "chmod 700 /etc/login/defs" na "chmod 600 /etc/login.defs" plik ten nie musi by� wykonywalny, � - "cp passwd ~passwd" na "cp passwd ~/passwd" - ewidentna liter�wka autora � - "chmod 600 ~passwd" na "chmod 600 ~/passwd" - to samo � - przy zmianie grupy pliku /etc/shadow dodane "cd /etc" � - oraz polskie serwery WWW i ftp.