Dlaczego maksymalna długość hasła roota OpenWrt wynosi 8 znaków?

29

Kiedy próbuję ustawić roothasło:

root@OpenWrt:~# passwd
Changing password for root
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.

Wydaje się, że maksymalna długość wynosi 8. Jeśli spróbuję ustawić hasło dłuższe niż 8, tylko pierwsze 8 znaków będzie poprawnych. Jak mogę ustawić dłuższe hasło root?

Moja wersja OpenWrt:

Linux OpenWrt 4.14.108 #0 SMP Wed Mar 27 21:59:03 2019 x86_64 GNU/Linux
Alan42
źródło

Odpowiedzi:

35

Wynika to z faktu, że szyfr oparty na DES (AKA „descrypt”) obcina hasła do 8 bajtów i sprawdza tylko pierwsze 8 w celu weryfikacji hasła.

Oto odpowiedź na twoje bezpośrednie pytanie, ale oto kilka ogólnych rad wynikających z twojego kontekstu:

  • Na szczęście z mojego czytania wynika , że MD5w /etc/login.defsrzeczywistości jest to md5crypt (1 $), który, choć nieco przestarzały i uznany przez autora za przestarzały , wciąż znacznie przewyższa kryptę opartą na DES (i zdecydowanie lepiej niż surowy, niesolony skrót jak zwykły MD5! Większość niesolonych skrótów można złamać na towarowych procesorach graficznych z szybkością miliardów na sekundę)

  • Wygląda na to, że SHA256(właściwie sha256crypt) i SHA512(faktycznie sha512crypt) również tam są. Zamiast tego wybrałbym jeden z nich.

  • Jeśli ustawisz hasło passwordlub coś w ramach każdego schematu, możesz wizualnie zweryfikować, czy mój wniosek, że warianty -crypt są poprawne (tutaj przykłady pochodzą z skrótów przykładowych hashcat , wszystkie hashcat, niektóre zapakowane dla czytelność):

Niezalecane - niesolone lub starsze typy skrótów, o wiele za „szybkie” (szybkość łamania) do przechowywania hasła:

MD5         - 8743b52063cd84097a65d1633f5c74f5
SHA256      - 127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935
SHA512      - 82a9dda829eb7f8ffe9fbe49e45d47d2dad9664fbb7adf72492e3c81ebd3e2 \
              9134d9bc12212bf83c6840f10e8246b9db54a4859b7ccd0123d86e5872c1e5082f
descrypt    - 48c/R8JAv757A

OK - znacznie lepiej niż niesolone, bez obcinania, ale nie jest już wystarczająco odporny na brutalną siłę na nowoczesnym sprzęcie:

md5crypt    - $1$28772684$iEwNOgGugqO9.bIz5sk8k/

Lepiej - stosunkowo nowoczesne skróty z dużymi solami i czynnikami roboczymi:

sha256crypt - $5$rounds=5000$GX7BopJZJxPc/KEK$le16UF8I2Anb.rOrn22AUPWvzUETDGefUmAV8AZkGcD
sha512crypt - $6$52450745$k5ka2p8bFuSmoVT1tzOyyuaREkkKBcCNqoDKzYiJL9RaE8yMnPgh2XzzF0NDrUhgrcLwg78xs1w5pJiypEdFX/

Spośród nich tylko odszyfruj obcina się o 8. Ostatnie dwa to Twój najlepszy zakład.

(Uwaga dodatkowa: sole zawierające tylko cyfry w przykładach md5crypt i sha512crypt powyżej są tylko efektami ubocznymi tego, jak hashcat tworzy przykładowe skróty; prawdziwe, zdrowe sole są zwykle pobierane z dużo większej przestrzeni klucza).

Zauważ też, że wymienię tylko typy skrótów obsługiwane przez /etc/login.defs na tej platformie. Do ogólnego użytku, nawet sha256crypt i sha512crypt zostały zastąpione - najpierw przez bcrypt, a następnie przez prawdziwie równoległe hashe odporne na ataki, takie jak scrypt i rodzina Argon2. (Należy jednak pamiętać, że w przypadku interaktywnych loginów, które powinny zakończyć się w ciągu jednej sekundy, bcrypt jest w rzeczywistości bardziej odporny na atak niż ten drugi)

Royce Williams
źródło
20

Zmodyfikowałem to w /etc/login.defs:

PASS_MAX_LEN            8

problem rozwiązany.


Ważne dodatki:

Po zmianie powyższych parametrów, mimo że mogę ustawić hasło dłuższe niż 8 cyfr, nadal jest ono nieprawidłowe, ponieważ prawdziwe hasło to tylko pierwsze osiem cyfr. Nie wiem czy to mój problem.

Moim ostatecznym rozwiązaniem jest ustawienie

# ENCRYPT_METHOD DES

do

ENCRYPT_METHOD MD5

w /etc/login.defs.

Teraz mogę wreszcie ustawić hasło roota, które jest naprawdę większe niż osiem.

Alan42
źródło
16
Dobra poprawka, ale zły oryginalny wybór dla domyślnego systemu ...
HBruijn
8
Zakładam, że zmieniłeś hasło na coś dłuższego niż 8 znaków. Czy możesz spróbować, jeśli logowanie przy użyciu tylko pierwszych 8 znaków dłuższego hasła działa? Ponieważ to może ...
marcelm
9
Możesz rozważyć zmianę na SHA256 lub SHA512 albo są one obsługiwane - MD5 jest obecnie uważany za uszkodzony.
PhilippNagel
8
tak naprawdę sha256 i sha512 same w sobie nie są dużo lepsze niż md5. potrzebujesz soli i użyj kryptograficznych wersji tych algorytmów.
SnakeDoc
4
@PhilippNagel Z hasłem o wysokiej entropii nie jest tak źle. Chociaż MD5 należy z pewnością uznać za zepsute, obecnie znane słabości nie mają na niego wpływu przy haszowaniu haseł. Co jest problemem dla hasła mieszaja jest szybkość; MD5 bez iteracji jest tak szybki, że wymuszanie brutalne jest bardzo wykonalne dla wielu haseł.
marcelm