Shadow Password HOWTO pl 2 (2)


Przesłanianie haseł (Shadow Password): Po co przesłaniać plik passwd ? Następna strona Poprzednia strona Spis treści 2. Po co przesłaniać plik passwd ? 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. Wersje pakietu 3.3.1, 3.3.1-2 i shadow-mk mają problemy dotyczące bezpieczeństwa ze swoim programem login i kilkoma innymi programami typu suid root i nie powinny być już używane. 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 musi 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. 2.1 Czemu możesz nie chcieć przesłaniać swojego pliku z hasłami ? Jest kilka okoliczności i konfiguracji, w których instalacja pakietu Shadow Suite nie byłaby 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ł. 2.2 Format pliku /etc/passwd. Nieprzesłonięty plik /etc/passwd ma następujący format: identyfikator:hasło:UID:GID:imie_nazw:katalog:powłoka Gdzie: identyfikatorNazwa (login) użytkownika hasłoZakodowane hasło UIDNumer użytkownika GIDNumer domyślnej grupy dla użytkownika imie_nazwImię 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. katalogKatalog domowy użytkownika (pełna ścieżka) powłokaPowł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 'hasło' naprawdę zły przykład hasła.} 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) 2.3 Format pliku przesłaniającego. Plik /etc/shadow zawiera następujące informacje: login:hasło:ostatnio_1970:może:musi:ostrz:dni:dni_1970:zarez Gdzie: loginpatrz /etc/passwd hasłoZakodowane hasło ostatnio_1970Ilość dni od 1 Stycznia 1970, kiedy hasło było ostatnio modyfikowane możeIlość dni w przeciągu, których hasło może być zmienione musiIlość dni, po której hasło musi zostać zmienione ostrzIlość dni przed wygaśnięciem hasła od jakiej należy zacząć informować użytkownika o wygaśnięciu hasła. dniIlość dni, po której hasło wygasa i konto jest blokowane dni_1970Ilość dni od 1 Stycznia 1970, po której konto jest blokowane zarezPole zarezerwowane Poprzedni przykład mógł więc wyglądać tak: login:Nkjg97jh7yff8:9479:0:10000:::: 2.4 Przegląd funkcji crypt(3). 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. Uwaga: Liczba możliwych wartości klucza to 2^56 = 7,2E16 (około 72 biliardów). Wyczerpujące poszukiwania tego klucza są możliwe 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 <schneier@chinet.com> ISBN: 0-471-59756-2 Następna strona Poprzednia strona Spis treści

Wyszukiwarka

Podobne podstrony:
Shadow Password HOWTO pl 10 (2)
Shadow Password HOWTO pl 8 (2)
Shadow Password HOWTO pl (3)
Shadow Password HOWTO pl 5 (2)
Shadow Password HOWTO pl (2)
Shadow Password HOWTO pl 6 (2)
Shadow Password HOWTO pl 9 (2)
Shadow Password HOWTO pl 7 (2)
Shadow Password HOWTO pl 1 (2)
Shadow Password HOWTO pl 4 (2)
Shadow Password HOWTO pl 3 (2)
Shadow Password HOWTO pl
shadow password howto 4 wrjj4xl2rttpywxk645hll3i63bvo7zfmqmiewy wrjj4xl2rttpywxk645hll3i63bvo7zfmqmi
shadow password howto 5 xwj2yqx7sdr7adin3jsjtftaoqyivxcflwawaqa xwj2yqx7sdr7adin3jsjtftaoqyivxcflwaw
shadow password howto 2 foxyypsfur2dgvcm757tzpjjjqzxkvhcxqxuazi foxyypsfur2dgvcm757tzpjjjqzxkvhcxqxu
shadow password howto xaxuxvyqvflgb5m452rbxlszzlk756szuoenxpa xaxuxvyqvflgb5m452rbxlszzlk756szuoenxp
shadow password howto 6 wekeaom5hhmqmfgscm4mih3yeed3zer56aqewwa wekeaom5hhmqmfgscm4mih3yeed3zer56aqe
shadow password howto 9 rrzkcxlxnah6g6g76dgcjvmvfeeihhseu43rxfi rrzkcxlxnah6g6g76dgcjvmvfeeihhseu43r
shadow password howto 1 jvl6nxop7fpn62s67zmft74rytj65xu7oqy4xdi jvl6nxop7fpn62s67zmft74rytj65xu7oqy4

więcej podobnych podstron