Поиск по сайту:

Заставлять пользователей использовать надежные пароли в Debian и Ubuntu

В этом кратком руководстве объясняется, как заставить пользователей использовать надежные пароли с помощью Подключаемых модулей аутентификации (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

Отредактируйте файл /etc/pam.d/common-password.

Давайте разберем эту строку и посмотрим, что будет делать каждый вариант.

  • try_first_pass retry=N — максимальное количество повторных попыток смены пароля. N указывает номер. По умолчанию для этого параметра установлено значение 1.
  • minlen=N — минимально допустимый размер нового пароля (плюс один, если кредиты не отключены (это значение по умолчанию). Помимо количества символов в новом пароле, кредит (длина +1) дается за каждый тип символов (другие, верхние, нижние и цифры). Значение по умолчанию — 9.
  • lcredit=N — определите максимальную оценку за наличие в пароле строчных букв. Значение по умолчанию — 1.
  • ucredit=N — определите максимальное количество заглавных букв в пароле. Значение по умолчанию — 1.
  • dcredit=N — определите максимальную оценку за количество цифр в пароле. Значение по умолчанию — 1.
  • ocredit=N — определите максимальную ценность за содержание других символов в пароле. Значение по умолчанию — 1.
  • difok=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 ostechnix.
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 другой символ).

Установить пароль пользователя

Как вы видите на скриншоте выше, для пользователя «ostechnix» установлен безопасный пароль.

Это все на данный момент. Мы успешно реализовали политику паролей с помощью PAM. Для получения более подробной информации посетите справочные страницы.

man pam_cracklib

Не забудьте ознакомиться с нашим подробным руководством по реализации политик паролей в Linux.

  • Как настроить политику паролей в Linux

Хотите знать, как создать надежный пароль? Проверьте следующую статью.

  • Различные способы создания надежного пароля в Linux

Статьи по данной тематике