Do czego służy plik / etc / shadow w systemie operacyjnym Linux? Czy to samo dotyczy klientów SUSE? Utrzymywany jest jeden plik pamięci podręcznej cienia, jaki jest tego cel?
Od samego początku systemy operacyjne Uniksowe i Uniksowe (w tym Linux) zawsze przechowują hasła jako hasła kryptograficzne (1). Te skróty były pierwotnie przechowywane /etc/passwd
, ale plik ten musiał być czytelny dla całego świata, aby udostępnić informacje do innych celów - nawet prosty ls -l
odczyt /etc/passwd
, aby przekonwertować numeryczny identyfikator użytkownika każdego właściciela pliku na nazwę użytkownika do wyświetlenia. Jednak posiadanie zaszyfrowanych haseł w pliku odczytywalnym na świecie umożliwiło złośliwym użytkownikom łatwe uzyskanie tych skrótów i próbę wygenerowania użytecznych haseł (2) dla kont innych użytkowników.
Aby temu zapobiec, hashowane hasła zostały ostatecznie przeniesione do pliku, który może odczytać tylko root (i czasami uprzywilejowana grupa administratorów) /etc/shadow
,. Ukrywa to skróty przed normalnymi użytkownikami systemu, jednocześnie udostępniając je do celów uwierzytelnienia użytkownika.
Uwagi :
Pedantyczny, wiem, ale przechowywane hasła nie są szyfrowane. Są one mieszane przy użyciu algorytmu haszującego zabezpieczonego kryptograficznie (przynajmniej w chwili, gdy został napisany). Najważniejsze istotne tutaj rozróżnienia to to, że skróty mają stałą długość (długość zaszyfrowanego tekstu różni się w zależności od długości zaszyfrowanego tekstu) i nieodwracalne (zaszyfrowany tekst można odszyfrować; zaszyfrowany tekst nie może).
Ponieważ skróty mają stałą długość, istnieje nieskończona liczba danych wejściowych, które będą pasować do dowolnej reprezentacji skrótu. Osoba atakująca może zatem znaleźć działające hasło, które niekoniecznie musi być takie samo, jak hasło użytkownika będącego właścicielem - chociaż jest to bardzo mało prawdopodobne, biorąc pod uwagę wielkość nowoczesnych skrótów kryptograficznych.
/etc/shadow
Plik został utworzony ze względów bezpieczeństwa i posiada zaszyfrowane hasło każdego użytkownika.Pierwotnie zaszyfrowane hasło było przechowywane w
/etc/passwd
./etc/passwd
musiały być czytelne na całym świecie, aby system mógł mapować identyfikatory użytkowników na nazwy użytkowników i aby użytkownicy mogli znaleźć informacje o sobie nawzajem, np. katalog domowy drugiego użytkownika lub jego numer telefonu, który był tradycyjnie przechowywany w polu „gecos” i wyświetlane przez narzędzie „finger”.Ale potem ludzie zdali sobie sprawę, że to problem bezpieczeństwa. Każdy, kto ma wystarczająco dużo czasu, może wykonać tak zwany atak brutalnej siły , programowo generując zaszyfrowane hasła dla każdego możliwego hasła. Jeśli osoba atakująca zrobi to bez próby zalogowania się przez
telnet
lubssh
, system nie będzie wiedział, że jest atakowany.Zaszyfrowane hasło zostało przeniesione do nowo utworzonego
/etc/shadow
, które można odczytać tylko przez root.Zawiera także inne informacje, które
/etc/passwd
nie były obsługiwane przez plik związane z kontem użytkownika i hasłem, np. Kiedy hasło zostało ostatnio zmienione i kiedy wygaśnie.Zobacz
man 5 shadow
( wersja internetowa ), aby uzyskać szczegółowe informacje na temat formatu pliku.Nie mogę powiedzieć, czy jest tak samo w przypadku SUSE, nie wiedząc, z którą wersją SUSE masz do czynienia. Na przykład twój system SUSE może używać Blowfish zamiast MD5.
Sugerowałeś również, że miksujesz swój
/etc/shadow
plik z systemem z inną dystrybucją Linuksa, ale nie powiedziałeś, jaka była druga dystrybucja.Zobacz na przykład problemy z migracją pliku cienia z SuSE 9.3 na Ubuntu Server x86_64 .
Aby to rozgryźć, otwórz
/etc/shadow
i sprawdź, czy pole zaszyfrowanego hasła zaczyna się od$1$
lub$2$
. Jeśli zawiera$1$
, to jest MD5 i jest kompatybilny z większością innych dystrybucji. Jeśli zawiera$2$
, prawdopodobnie jest to Blowfish, zgodnie z plikami cieni Blowfish na Debianie .Jeśli używasz Ubuntu, pierwszy wynik wyszukiwania Google dla Blowfish Ubuntu może być dobrym miejscem startowym.
źródło
Użytkownicy są wyszczególnieni w
/etc/passwd
pliku. Ten plik zawiera wiele informacji wykorzystywanych przez systemm nie tylko do umożliwienia użytkownikom logowania.Każda linia odpowiada wpisowi użytkownika, a różne pola są oddzielone dwukropkami. Pierwsze pole to login, po którym następuje odpowiednie hasło.
W tym polu przechowywane były zaszyfrowane hasła. Jednak
/etc/passwd
plik musi być czytelny dla wszystkich w systemie, więc szyfrowanie nie zapobiega atakom siłowym, jak to powiedział @Mikel. Rozwiązaniem było przenieść te zaszyfrowane hasła root-Do odczytu pliku:/etc/shadow
.Tak więc
/etc/shadow
zawiera zaszyfrowane hasła użytkowników systemu. System wie, że musi sprawdzić hasła w tym pliku, gdy pola hasła/etc/passwd
zawierają tylko x (co oznacza „ przejście do / etc / shadow”)źródło
/etc/passwd
/ są nadal mieszane dokładnie w taki sam sposób, jak gdyby były/etc/shadow
. W rzeczywistości nie mówisz, że hasła w/etc/passwd
tekście byłyby zwykłym tekstem, ale dla kogoś, kto nie zna obsługi hasła * nix, łatwo byłoby źle zinterpretować twoją odpowiedź.x
faktycznie coś znaczyło. Jest tam tak samo jak nieprawidłowy skrót (taki, który nie pasuje do żadnego hasła). Niektóre systemy używają!
.Zobaczmy, czy uda mi się zdobyć wszystkie głosy na świecie, odkąd napisałem, co stało się Linux Shadow Password Suite w '87;)
Oryginalny
/etc/passwd
plik zawierał zmodyfikowany skrót DES hasła hasła w postaci jawnego tekstu. W momencie tworzenia tejcrypt()
funkcji uważano (i zostało to stwierdzone przez twórców systemu operacyjnego UNIX), że ataki na skróty haseł byłyby niemożliwe ze względu na liczbę możliwych haseł i użycie 12-bitów (4096 możliwych wartości) „sól”. Każde możliwe hasło w postaci czystego tekstu miało 4096 możliwych wartości skrótu, a przy 64-bitowym wyniku skrótu, co dało w sumie 2 ^ 72 możliwych skrótów hasła.Jak wspomniano inny plakat,
/etc/passwd
był także wykorzystywany przez różne narzędzia do mapowania między nazwami użytkowników a wartościami UID (/etc/group
plik zapewnia analogiczną funkcję dla grup) i wymagał, aby był czytelny na całym świecie.W latach osiemdziesiątych stało się oczywiste, że ataki słownikowe na hash przechowywany w
/etc/passwd
pliku stają się wykonalne i/etc/shadow
zostały wprowadzone do AT&T UNIX we wczesnej wersji Systemu V. Udokumentowałem, których stron użyłem do napisania oryginalnej biblioteki Shadow, i „ Od tego czasu zapomnieliśmy, ale zdecydowanie była to wczesna wersja Systemu V, prawdopodobnie SVR3.2.To, co zrobił AT&T i co zaimplementowałem dla SCO Xenix (oryginalny SCO Xenix, a nie późniejszy zły SCO Xenix) w 87, które ostatecznie zaczęło być używane w Linuksie, to po prostu przeniesienie zaszyfrowanego hasła
/etc/shadow
. Zapobiegło to atakowi drive-by, w którym nieuprzywilejowany użytkownik nabył kopię/etc/passwd
i przeprowadził atak przeciwko niej. Jeśli wiesz, dlaczego przede wszystkim napisałem Shadow, kazałem użytkownikowi pobrać mój/etc/passwd
plik za pośrednictwem UUCP w czasach, gdy nadal używaliśmy UUCP do prawie wszystkiego.Do czasu stworzenia Linuksa i jego powszechnego zastosowania istniała bardzo duża liczba narzędzi do atakowania skrótów haseł. Wydajne re-implementacje
crypt()
były jedną ścieżką, a ataki oparte na słownikach za pomocą narzędzi takich jak Crack i libcrack były innymi. Pierwszego portu dokonali Nate Holloway i Floria La Roche (udzieliłem im uznania, nie wiem, czy ktokolwiek wykonał pracę przed nimi).W końcu użycie skrótów
crypt()
opartych na hasłach, nawet w chronionym pliku, nie było już bezpieczne i dokonano pierwotnychMD5
zmian skrótu.MD5
ostatecznie został uznany za zbyt słaby i zastosowano nowsze hasze.Teoretycznie można przechowywać wystarczająco mocny skrót
/etc/passwd
. Słaba ochrona operacyjna oznacza, że wiele systemów ma swoje/etc/shadow
pliki dostępne za pośrednictwem różnych wektorów ataku - „Ukradłem pliki kopii zapasowych” jest prawdopodobnie najłatwiejszym.źródło