Вопрос или проблема
У меня есть встроенное устройство на базе Linux с достаточно современным ядром Linux. Однако после последнего обновления произошло странное: когда пароль изменяется с помощью passwd для любого пользователя, значение соли в etc/shadow заменяется на rounds=65536
. Таким образом, запись будет выглядеть как root:$6$rounds=65536$6mA...
. Я подозреваю, что это делает PAM. Есть идеи, какая проблема с PAM может вызывать такое поведение?
Ваше обновление, вероятно, изменило конфигурацию PAM, чтобы усилить безопасность хэшей паролей в вашем файле shadow. Также смотрите это руководство по усилению безопасности и документацию функции crypt:
- https://madaidans-insecurities.github.io/guides/linux-hardening.html#increase-hashing-rounds
- https://man7.org/linux/man-pages/man3/crypt.3.html
Если злоумышленник получит доступ к файлу shadow, он может попытаться восстановить пароль из соли и хэша с помощью перебора, но это стало примерно в 13 раз сложнее, чем по умолчанию с 5000 итерациями.
Эта информация должна храниться вместе с алгоритмом, солью и хэшем, чтобы функция входа знала, как проверить пароль этой учетной записи в будущем.
Число 65536 должно соответствовать вычислительной мощности вашего встроенного устройства. Если оно слишком высоко, потребуется много времени для проверки пароля, если слишком низко, злоумышленник с большой вычислительной мощностью (например, ASIC) сможет легко перебрать хэш, чтобы найти пароль.
Обновление:
С версии pam 1.6.0 параметр итераций SHA-512 можно настроить, редактируя файл /etc/login.defs
и задавая значение для параметра SHA_CRYPT_MAX_ROUNDS
, или редактируя /etc/pam.d/passwd
и добавляя rounds
с соответствующим значением. (Источник: https://wiki.archlinux.org/title/SHA_hashes – они также упоминают 65535, но его происхождение неясно, для получения дополнительной информации смотрите также концепцию функции производной ключа на основе пароля: https://en.wikipedia.org/wiki/PBKDF2 )
Ответ или решение
Странное значение соли в /etc/shadow: причины и решение
Вопрос, который возник у вас с обновлением прошивки вашего встроенного устройства на базе Linux, касается изменения формата хэширования паролей в файле /etc/shadow
. Некоторое время назад, при изменении пароля с помощью команды passwd
, вы заметили, что значение соли было заменено на rounds=65536
. Эта ситуация может вызвать множество вопросов, и важно разобраться, что именно произошло.
Причины изменения соли
-
Изменение конфигурации PAM:
Данная проблема может быть связана с обновлением конфигурации PAM (Pluggable Authentication Modules). В версиях PAM, начиная с 1.6.0, появилась возможность настройки параметров хэширования, включая количество итераций (или "раундов"). Если вы видите записьrounds=65536
, это указывает на то, что система была настроена на использование более сложной и защищённой ванной. -
Увеличение сложности хеширования:
Значение65536
соответствует значению раундов хэширования, использующих алгоритм SHA-512. Эта процедура значительно увеличивает время, необходимое для подбора пароля с использованием атак методом "грубой силы". Если злоумышленник получит доступ к файлу/etc/shadow
, число раундов будет определяющим фактором в сроках взлома пароля.
Как работает хэширование с использованием параметра rounds
В процессах аутентификации, функция crypt
отвечает за хэширование паролей. Хеширование выполняется с учетом алгоритма, соли и числа раундов. Чем больше раундов, тем более безопасным становится хэш, но увеличивается и время, необходимое для его проверки.
Выбор значения 65536
должен соответствовать вычислительной мощности вашей встроенной системы. Если это значение слишком высоко, это может значительно замедлить процесс аутентификации для пользователей.
Настройка параметров PAM
Если вы хотите изменить количество раундов хэширования для вашего устройства, это можно сделать несколькими способами:
-
Изменение файла
/etc/login.defs
:
Убедитесь, что у вас есть соответствующая строка для параметраSHA_CRYPT_MAX_ROUNDS
. Например, можно установить:SHA_CRYPT_MAX_ROUNDS 5000
-
Изменение конфигурации в
/etc/pam.d/passwd
:
Можно добавить строку, содержащую параметрrounds
, чтобы указать желаемое значение. Например:password requisite pam_unix.so sha512 rounds=10000
Для получения дополнительной информации, рекомендуется ознакомиться с документацией PAM и соответствующими справочными материалами.
Заключение
Изменение в формате записи паролей в файле /etc/shadow
на rounds=65536
— это не ошибка, а, скорее всего, шаг к улучшению безопасности. Тем не менее, важно контролировать это значение, чтобы оно соответствовало возможностям вашего устройства, а также потребностям в безопасности вашей системы. Обязательно следите за обновлениями программного обеспечения и документацией, чтобы обеспечить правильную настройку и защиту ваших данных.