Вопрос или проблема
У меня есть встроенное устройство на Linux с достаточно современным ядром Linux. Тем не менее, с последним обновлением произошла странная вещь: когда пароль изменяется с помощью passwd для любого пользователя, значение salt в 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, он может попытаться восстановить пароль из salt и хэша брутфорсом, но это стало примерно в 13 раз сложнее, чем значение по умолчанию в 5000 раундов.
Эта информация должна храниться вместе с алгоритмом, salt и хэшем, чтобы функция входа знала, как в будущем проверять пароль этой учетной записи.
Число 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-устройстве
При изменении пароля пользователя на вашем встраиваемом Linux-устройстве вы заметили, что значение соли в файле /etc/shadow
заменяется на rounds=65536
, что может вызывать вопросы. В данном посте мы подробно рассмотрим, что это означает, как это связано с библиотекой PAM (Pluggable Authentication Modules) и какие изменения могли произойти после последнего обновления системы.
Понимание значения соли и хеширования
Когда вы меняете пароль пользователя в Linux, система хеширует пароль, используя алгоритм хеширования и добавляя соль для защиты от атак обратного поиска. Ваша текущая запись в файле /etc/shadow
:
root:$6$rounds=65536$6mA...
означает, что используется алгоритм SHA-512 (обозначаемый как $6$
), и количество раундов хеширования установлено на 65536.
Почему важно использовать больше раундов?
Увеличение количества раундов при хешировании пароля значительно усложняет задачу злоумышленника, получившего доступ к файлу /etc/shadow
. Каждое увеличение числа раундов делает процесс подбора паролей более ресурсоёмким, так как требуется больше времени на вычисления.
Изменение конфигурации PAM
Существует вероятность, что ваше последнее обновление изменило конфигурацию PAM, увеличив количество раундов. С момента версии 1.6.0 PAM позволяет устанавливать количество раундов для SHA-512 в файлах конфигурации системы. Это можно сделать двумя способами:
-
В файле
/etc/login.defs
Установите значение параметраSHA_CRYPT_MAX_ROUNDS
на желаемое количество раундов. Например:SHA_CRYPT_MAX_ROUNDS 65536
-
В файле
/etc/pam.d/passwd
Добавьте строку, указывающую количество раундов:password requisite pam_unix.so sha512 rounds=65536
Убедитесь, что число раундов соответствует вычислительным возможностям вашего встраиваемого устройства. Слишком высокое значение может значительно замедлить процесс аутентификации пользователей.
Рекомендации по безопасности
-
Выбор подходящего числа раундов
Идеальное число раундов зависит от оборудования. Например, для современных серверов может быть оправданно использовать 65536, но для менее мощных встраиваемых систем может быть разумным выбрать меньшее значение. -
Мониторинг и аудит
Регулярно проверяйте файл/etc/shadow
, чтобы убедиться, что параметры хеширования остаются в рамках приемлемых стандартов безопасности. -
Совместимость и тестирование
Перед изменением конфигураций обязательно протестируйте их в безопасной среде, чтобы гарантировать, что все функционирует должным образом.
Заключение
Ваше наблюдение о значении соли rounds=65536
в файле /etc/shadow
на вашем встраиваемом Linux-устройстве скорее всего связано со стремлением системы повысить безопасность. Использование большего числа раундов при хешировании паролей действительно снижает риск взлома, и вы можете настроить конфигурацию PAM в зависимости от ваших потребностей и ресурсов. Если у вас возникнут дальнейшие вопросы или необходима помощь в настройке, не стесняйтесь обращаться за консультацией к специалистам в области IT-безопасности.
Для более подробного изучения рекомендуем ознакомиться с официальными документами и руководствами, такими как Linux Hardening Guide и man-страницей по функции crypt.