Uprawnienia /etc/shadow
wynoszą 600, co oznacza, że nie jest czytelny dla nikogo poza rootem.
Ponieważ jednak wszystkie hasła w nim zawarte nie są zapisywane w postaci zwykłego tekstu, ale jako skróty (co oznacza, że niemożliwe jest obliczenie oryginalnego hasła z skrótu), dlaczego nie wszyscy mogą go odczytać?
permissions
files
shadow
Shubhanshu Vishwakarma
źródło
źródło
/etc/shadow
są600
?Odpowiedzi:
Aby zapobiec atakom siłowym offline.
Mimo że nie możesz cofnąć skrótu, nadal możesz wypróbować każde możliwe hasło, aż znajdziesz pasujące hasło, i możesz wykonywać miliony prób na sekundę przy dobrym sprzęcie i lokalnym dostępie do pliku.
Jeśli plik ma
644
uprawnienia, każdy, kto zaloguje się do systemu, nawet podczas sesji gościa, będzie mógł skopiować ten plik z komputera (na pamięć USB lub zdalnie za pośrednictwemscp
) i podjąć próbę ataku siłowego offline , bez pozostawiania żadnych dowodów na to na komputerze .Należy pamiętać, że uprawnienia do Ubuntu są w rzeczywistości
640
, a nie600
:Nie ma to jednak większego znaczenia, ponieważ nadal nie ma uprawnień dla innych i domyślnie nikogo nie ma w
shadow
grupie.Początkowo skróty były przechowywane
/etc/passwd
(i dlatego się nazywapasswd
), ponieważ w czasie, gdy Linux był tworzony, złamanie skrótu, nawet wtedy, gdy stosowano słabe typy, było praktycznie niemożliwe. W końcu jednak moc przetwarzania wzrosła do tego stopnia, że złamanie skrótu, przynajmniej stosunkowo słabego hasła, stało się możliwe.Zmiana uprawnień
/etc/passwd
do640
lub600
nie działałaby, ponieważ istnieje wiele uzasadnionych powodów, aby czytać/etc/passwd
jako zwykły użytkownik (konwersja UID na nazwy użytkowników, uzyskiwanie pełnego imienia i nazwiska użytkownika, numeru telefonu itp.), Więc skróty zostały przeniesione do/etc/shadow
, który otrzymał640
uprawnienia.x
Zamiast pola hash hasła dla użytkownika w/etc/passwd
służy do wskazania, że hash dla tego użytkownika są przechowywane w/etc/shadow
zamian.źródło
ls
nie muszą być setuid root, aby tłumaczyć z identyfikatora użytkownika na nazwę.W rzeczywistości plik / etc / shadow został utworzony, aby umożliwić odejście od publicznie czytelnej listy nazw użytkowników i haseł.
Trzymaj się, to będzie trochę lekcja historii, zanim dojdziemy do właściwej odpowiedzi. Jeśli nie interesuje Cię historia, po prostu przewiń w dół.
W dawnych czasach uniksopodobne systemy operacyjne, w tym Linux, ogólnie zachowywały hasła w / etc / passwd. Ten plik był czytelny na całym świecie i nadal jest, ponieważ zawiera informacje umożliwiające mapowanie na przykład między numerycznymi identyfikatorami użytkowników a nazwami użytkowników. Informacje te są bardzo użyteczne nawet dla zwykłych użytkowników w całkowicie uzasadnionych celach, więc możliwość odczytu świata plików była bardzo korzystna dla użyteczności.
Nawet wtedy ludzie zdali sobie sprawę, że posiadanie haseł w postaci zwykłego tekstu w pliku w znanej lokalizacji, którą każdy, kto mógłby się zalogować, mógł swobodnie czytać, było złym pomysłem. W pewnym sensie hasła zostały zaszyfrowane. Jest to stary mechanizm mieszania haseł „szyfrowania”, który prawie nigdy nie jest używany w nowoczesnych systemach, ale często obsługiwany do starszych celów.
Spójrz na / etc / passwd w swoim systemie. Widzisz to drugie pole, które mówi
x
wszędzie? Kiedyś przechowywał zaszyfrowane hasło do danego konta.Problem polegał na tym, że ludzie mogli pobrać plik / etc / passwd, a nawet go nie pobrać, i pracować nad złamaniem haseł. Nie był to duży problem, gdy komputery nie były szczególnie wydajne (Clifford Stoll, w „ The Cuckoo's Egg” , jak pamiętam, daje czas na zaszyfrowanie jednego hasła w systemie klasy IBM PC w połowie lat 80. XX wieku ), ale stał się problemem wraz ze wzrostem mocy obliczeniowej. W pewnym momencie, przy porządnej liście słów, złamanie tych haseł stało się zbyt łatwe. Z przyczyn technicznych ten schemat nie obsługuje także haseł dłuższych niż osiem bajtów.
Dwie rzeczy zostały zrobione, aby rozwiązać ten problem:
Ten plik to / etc / shadow.
Oprogramowanie współpracujące z / etc / shadow jest na ogół bardzo małe, wysoce skoncentrowane i zwykle poddawane jest dodatkowej kontroli w recenzjach ze względu na potencjalne problemy. Działa również ze specjalnymi uprawnieniami, które pozwalają mu czytać i modyfikować / etc / shadow, jednocześnie uniemożliwiając zwykłym użytkownikom przeglądanie tego pliku.
Więc masz: uprawnienia do / etc / shadow są restrykcyjne (choć, jak już wspomniano, nie tak restrykcyjne, jak twierdzisz), ponieważ celem tego pliku jest ograniczenie dostępu do poufnych danych.
Skrót hasła powinien być silny, ale jeśli twoje hasło znajduje się w 500 najlepszych hasłach na listach internetowych , każdy, kto ma dostęp do skrótu, będzie mógł szybko znaleźć hasło. Ochrona skrótu zapobiega temu prostemu atakowi i podnosi poprzeczkę dla udanego ataku, od zwykłego zerkania do wymagania, aby albo był administratorem systemu na hoście, albo najpierw przeszedł atak eskalacji uprawnień. Zwłaszcza w prawidłowo administrowanym systemie dla wielu użytkowników oba są znacznie trudniejsze niż tylko przeglądanie pliku czytelnego dla świata.
źródło
/etc/shadow
nie przechowuje „haseł cienia” (ponieważ to nie jest rzecz). Cały plik jest cieniem/etc/passwd
. Zobacz, w jaki sposób terminologia jest używana w Linux Shadow Password HOWTO : Dlaczego cień pliku passwd? . W przeciwieństwie do niektórych innych zastosowań terminu „cień” w komputerach, nie jest to jednak kopia w tle (np. Zapisywanie kodu BIOS-u w pamięci RAM zamiast uruchamiania z pamięci ROM). Pole w / etc / passwd jest symbolem zastępczym, zawierającym znak specjalny, który oznacza „prawdziwy skrót hasłem znajduje się w / etc / shadow”.Kto Ci to powiedział?
Prosta odpowiedź: uprawnienia w systemie Linux są traktowane poważnie. „Inni” nie mają powodu, aby cokolwiek robić
/etc/shadow
. I nie ma powodu, by grupa „cień” do niego pisała. A wykonanie jest poza kolejnością.Ponieważ nie ma jednego powodu, aby to zrobić.
Hashe są jednokierunkowe. Przyznanie komuś dostępu do odczytu umożliwia mu użycie skryptu do nadużywania tego jednokierunkowego działania: wystarczy wymienić dowolne słowo, jakie można sobie wyobrazić, i utworzyć skrót. W pewnym momencie może pasować do hasła. Może jednak trochę potrwać.
Ta odpowiedź jest interesująca i zawiera pewne szacunki dotyczące brutalnego wymuszania.
źródło
Ważne tło:
/etc/shadow
istnieje wyłącznie w celu ukrywania skrótów haseł. We wczesnych dniach uniksowych hashe hasła były przechowywane w/etc/passwd
. Gdy komputery stały się bardziej wydajne, połączenia sieciowe stały się bardziej trwałe, a zabezpieczenia bardziej wyrafinowane, ludzie zdali sobie sprawę, że utrzymywanie skrótów haseł w celu odczytania słów wymagało kłopotów. (Nie będę szczegółowo opisywał exploitów; jest już na to wystarczająco dużo dobrych odpowiedzi).Ale
/etc/passwd
nie może być chroniony przed odczytem: jest używany przez wszelkiego rodzaju programy do mapowania identyfikatorów użytkowników numerycznych na nazwy użytkowników oraz do wyszukiwania katalogów domowych, domyślnych powłok, pełnej nazwy użytkownika (i numeru biura itp. - sprawdźman finger
) . Tak więc wrażliwa część, skróty hasła, została przeniesiona/etc/shadow
, a reszta pozostała bez zmian. Dlatego/etc/passwd
, pomijając nazwę, zawiera wszystko oprócz (zakodowanego) hasła.źródło