Почему максимальная длина пароля root для OpenWrt составляет 8 символов?

29

Когда я пытаюсь установить rootпароль:

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.

Кажется, максимальная длина равна 8. Если я пытаюсь установить пароль длиннее 8, допустимы только первые 8 символов. Как я могу установить более длинный пароль для root?

Моя версия OpenWrt:

Linux OpenWrt 4.14.108 #0 SMP Wed Mar 27 21:59:03 2019 x86_64 GNU/Linux
Alan42
источник

Ответы:

35

Это связано с тем, что шифрование на основе DES (AKA 'descrypt') усекает пароли до 8 байтов и проверяет только первые 8 с целью проверки пароля.

Это ответ на ваш прямой вопрос, но вот несколько общих советов, подразумеваемых вашим контекстом:

  • К счастью, из моего прочтения, MD5in /etc/login.defsфактически является md5crypt ($ 1 $), который, хотя и немного устарел и объявлен его автором устаревшим , все же намного превосходит крипту на основе DES (и определенно намного лучше, чем простой, несоленый хеш, такой как обычный MD5! Большинство несоленых хэшей можно взломать на товарных графических процессорах со скоростью миллиардов в секунду)

  • Похоже SHA256(на самом деле sha256crypt) и SHA512(на самом деле sha512crypt) тоже есть. Я бы выбрал один из них.

  • Если вы устанавливаете свой пароль passwordили что-то другое в каждой схеме, вы можете визуально проверить, верен ли мой вывод о том, что они являются вариантами -crypt (примеры здесь взяты из примера hashcat , все hashcat, некоторые обернуты для читаемости):

Не рекомендуется - несоленые или устаревшие типы хэшей, слишком «быстрые» (скорости взлома) для хранения паролей:

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

ОК - намного лучше, чем несоленый, без усечения, но уже недостаточно устойчив к грубой силе на современном оборудовании:

md5crypt    - $1$28772684$iEwNOgGugqO9.bIz5sk8k/

Лучше - относительно современные хэши с большими солями и рабочими факторами:

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

Из них только 8 урезанных дескриптов. Последние два - ваш лучший выбор.

(Примечание: соли, состоящие только из цифр, в приведенных выше примерах md5crypt и sha512crypt являются лишь побочными эффектами того, как hashcat создает примеры хэшей; реальные, полезные соли обычно извлекаются из гораздо большего пространства клавиш).

Также обратите внимание, что я перечисляю только типы хэшей, которые поддерживаются /etc/login.defs на этой платформе. Для общего использования даже sha256crypt и sha512crypt были заменены - сначала bcrypt, а затем по-настоящему стойкими к параллельным атакам хешами, такими как scrypt и семейство Argon2. (Однако обратите внимание, что для интерактивных входов в систему, которые должны завершиться менее чем за одну секунду, bcrypt на самом деле более устойчив к атакам, чем последние)

Ройс Уильямс
источник
20

Я изменил это в /etc/login.defs:

PASS_MAX_LEN            8

проблема исправлена.


Важные дополнения:

После того, как я изменил вышеуказанные параметры, хотя я могу установить пароль длиной более 8 цифр, он все еще недействителен, потому что реальный пароль - только первые восемь цифр Я не знаю, если это моя проблема.

Мое окончательное решение - установить

# ENCRYPT_METHOD DES

в

ENCRYPT_METHOD MD5

в /etc/login.defs.

Теперь я наконец могу установить пароль root, который действительно больше восьми.

Alan42
источник
16
Хорошее исправление, но плохой оригинальный выбор для системы по умолчанию, хотя ...
HBruijn
8
Я предполагаю, что вы изменили свой пароль на что-то более 8 символов. Можете ли вы попробовать, если вход в систему с только первые 8 символов вашего более длинного пароля работает? Потому что это просто может ...
Марсель
9
Вы можете изменить его на SHA256 или SHA512, или они поддерживаются - в наши дни MD5 считается сломанным.
PhilippNagel
8
действительно sha256 и sha512 сами по себе не намного лучше, чем md5. вам нужна соль, и используйте криптованные версии этих алгоритмов.
SnakeDoc
4
@PhilippNagel С паролем с высокой энтропией это не так уж плохо. Хотя MD5, безусловно, следует считать сломанным, известные на данный момент недостатки не влияют на его хеширование паролей. Что является проблемой для хэширования паролей является скоростью; Не повторяющийся MD5 настолько быстр, что для многих паролей очень возможен перебор.
marcelm