Это краткое руководство объясняет, как заставить пользователей использовать надёжные пароли с помощью подключаемых модулей аутентификации (PAM) в Debian, Ubuntu и других системах на базе DEB.
Введение
Надежный пароль должен содержать не менее 14 символов, включая хотя бы один специальный символ, один цифровой символ, одну заглавную и одну строчную букву.
Что еще более важно, пароли не должны быть легко предсказуемыми и не должны основываться на словарных словах.
Однако некоторые пользователи, не владеющие техникой, не понимают или не заботятся о безопасности.
Они продолжают использовать легко предсказуемые пароли, такие как pass123, welcome123, Welcome@1 и т.д., которые можно легко взломать за несколько попыток.
Кроме того, некоторые пользователи не меняют пароли в течение многих лет. Как системный администратор, вы должны внедрить политику надежных паролей, чтобы защитить систему от атак по словарю и перебором.
Это руководство было официально протестировано в Ubuntu 22.04 LTS и ее предыдущих редакциях. Хотя инструкции, опубликованные здесь, одинаковы для Debian и других дистрибутивов на базе Debian и Ubuntu, таких как Linux Mint, Elementary OS, Pop!_OS и т.д.
Настройка политики использования сильных паролей на Debian, Ubuntu, Linux Mint, Pop!_OS
Подключаемые модули аутентификации (PAM) установлены по умолчанию в системах на базе DEB.
Однако вам необходимо установить дополнительный модуль libpam-cracklib.
Для этого выполните следующую команду в Терминале:
$ sudo apt install libpam-cracklib
В системах на базе Debian политики паролей определяются в файле /etc/pam.d/common-password.
Прежде чем вносить в него какие-либо изменения, сделайте резервную копию этого файла.
$ sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.bak
Теперь отредактируйте файл /etc/pam.d/common-password:
$ sudo nano /etc/pam.d/common-password
Найдите следующую строку и отредактируйте или измените ее, как показано ниже.
Если следующей строки не существует, просто добавьте ее.
password required pam_cracklib.so try_first_pass retry=3 minlen=12 lcredit=1 ucredit=1 dcredit=2 ocredit=1 difok=2 reject_username
- try_first_pass retry=N – Максимальное количество повторных попыток смены пароля. N указывает на число. По умолчанию этот параметр равен 1.
- minlen=N – Минимально допустимый размер нового пароля (плюс один, если кредиты не отключены, что является значением по умолчанию). В дополнение к количеству символов в новом пароле, за каждый символ (другой, верхний, нижний и цифру) дается кредит (+1 в длину). Значение по умолчанию равно 9.
- lcredit=N – Определить максимальный кредит за содержание строчных букв в пароле. Значение по умолчанию равно 1.
- ucredit=N – Определить максимальное количество заглавных букв в пароле. Значение по умолчанию равно 1.
- dcredit=N – Определить максимальный кредит для содержания цифр в пароле. Значение по умолчанию равно 1.
- ocredit=N – Определить максимальный кредит для содержания других символов в пароле. Значение по умолчанию равно 1.
- ifok=N – Определить количество символов, которые должны отличаться от предыдущего пароля.
- reject_username – Запретить пользователям использовать свое имя в качестве пароля.
Надеюсь, вы получили основное представление о вышеупомянутых параметрах.
Как определено в приведенном выше файле, пользователи теперь должны использовать пароль с показателем сложности пароля, равным 12. Один “кредит” будет даваться за 1 строчную букву, 1 кредит за 1 заглавную букву, 1 кредит за минимум 2 цифры и 1 кредит за 1 другой символ.
Однако вы можете отключить кредиты, присвоив им отрицательные значения, и заставить пользователя использовать комбинацию различных символов минимальной длины.
Посмотрите следующий пример:
password required pam_cracklib.so minlen=8 lcredit=-1 ucredit=-1 dcredit=-2 ocredit=-1 difok=2 reject_username
Как определено выше, пользователи должны использовать пароль сложности 8 символов, включая 1 строчную букву, 1 заглавную букву, 2 цифры и 1 другой символ.
Обратите внимание, что эти ограничения будут применяться только для обычных пользователей, но не для пользователя root.
Пользователь root может использовать любой тип пароля.
Проверьте сложность пароля
После того как вы определили политику паролей, проверьте, работает она или нет.
Давайте назначим простой пароль, который не соответствует политике паролей, и посмотрим, что произойдет.
Чтобы изменить или назначить пароль вошедшему в систему пользователю, выполните команду:
$ passwd
Пример вывода:
Changing password for itsecforu. Current password: New password: BAD PASSWORD: it does not contain enough DIFFERENT characters New password: BAD PASSWORD: it is based on a dictionary word New password: Retype new password: BAD PASSWORD: is too simple New password: BAD PASSWORD: is too simple New password: BAD PASSWORD: is too simple passwd: Have exhausted maximum number of retries for service passwd: password unchanged
Как видно из приведенного выше результата, пользователь не может установить пароль, поскольку заданный пароль не соответствует требованиям.
Теперь попробуйте установить пароль, который соответствует фактическим требованиям политики паролей (т.е. 12 символов, включая как минимум 1 строчный, 1 прописной, 2 цифры, 1 другой символ).
На этом пока все.
Мы успешно применили политики паролей с помощью PAM.
Более подробную информацию можно найти на страницах руководства.
см. также:
- ⏳ Как настроить требования к сроку действия и сложности пароля в Linux
- 🤹♂️ Применение политики сложности паролей в производных CentOS 7 / RHEL
- 🤦♀️ Как принудительно применять политику сложности паролей в Ubuntu 18.04
- Как применить политику надежных паролей пользователей в Ubuntu / Debian
- Как установить политику паролей в CentOS / RHEL 7
- Аутентификация LDAP в Linux