Обращаем Ваше внимание, что данная статья предназначена только для продвинутых пользователей системы. Неверное исполнение команд в Терминале может привести к неисправимым последствиям
Политики сложности паролей в Uncom OS имеют решающее значение для защиты системы. Они позволяют как установить общие правила составления, смены, и регулирования паролей, так и согласовать эти правила для одного, или нескольких пользователей системы.
Файл /etc/login.defs
содержит основные настройки политики паролей, открывается через команду в Терминале:
cat /etc/login.defs | grep "^PASS_"
Вы должны увидеть вывод, похожий на этот:
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
Эти настройки обозначают:
PASS_MAX_DAYS: Максимальное количество дней, в течение которых пароль остается действительным
PASS_MIN_DAYS: Минимальное количество дней, требуемое между сменами паролей
PASS_WARN_AGE: Количество дней предупреждения до истечения срока действия пароля
Еще одним важным файлом является /etc/pam.d/common-password
, который управляет настройками PAM (Pluggable Authentication Modules) для аутентификации паролей:
cat /etc/pam.d/common-password
Этот файл содержит несколько строк, настраивающих управление паролями, включая требования к сложности.
Система использует библиотеку pwquality для обеспечения качества паролей.
Давайте рассмотрим файл конфигурации качества паролей:
cat /etc/security/pwquality.conf
Этот файл может содержать большинство строк, закомментированных с помощью #, что означает использование значений по умолчанию.
Ключевые параметры, которые вы можете настроить:
minlen: Минимальная длина пароля
dcredit: Кредит за цифры в пароле
ucredit: Кредит за прописные буквы
lcredit: Кредит за строчные буквы
ocredit: Кредит за специальные символы
retry: Количество попыток ввода нового пароля
enforce_for_root: Применять ли эти политики для пользователя root
Эти параметры предоставляют всеобъемлющую структуру для управления сложностью и безопасностью паролей в вашей системе.
На этом шаге мы настроим базовые политики паролей, изменив файл /etc/login.defs
, чтобы установить требования к сроку действия паролей.
sudo cp /etc/login.defs /etc/login.defs.backup
sudo nano /etc/login.defs
PASS_MAX_DAYS
PASS_MIN_DAYS
PASS_WARN_AGE
Измените PASS_MAX_DAYS с 99999 на 90 (пароли истекают через 90 дней)
Измените PASS_MIN_DAYS с 0 на 7 (минимум 7 дней между сменами паролей)
Измените PASS_WARN_AGE с 7 на 14 (предупреждать пользователей за 14 дней до истечения срока действия пароля)
Сохраняем файл, нажав Ctrl+O, затем Enter, и выйдите с помощью Ctrl+X.
Проверяем внесенные изменения:
cat /etc/login.defs | grep "^PASS_"
Вы должны увидеть:
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14
Создадим тестового пользователя, чтобы увидеть, как применяются эти политики:
sudo useradd -m testuser
sudo passwd testuser
Введите простой пароль при появлении запроса (мы усилим его на следующих шагах).
Проверьте информацию о сроке действия пароля для нового пользователя:
sudo chage -l testuser
Вы должны увидеть, что политики паролей были применены к этому новому пользователю, отображая дату истечения срока действия на основе ваших настроек.
Обратите внимание, что эти изменения применяются только к новым учетным записям или при смене пароля. Существующие учетные записи сохраняют свои предыдущие настройки, пока вы не обновите их вручную.
sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.backup
sudo nano /etc/pam.d/common-password
password requisite pam_pwquality.so retry=3
password requisite pam_pwquality.so retry=3 minlen=12 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 enforce_for_root
Эта конфигурация означает:
minlen=12: Минимальная длина пароля — 12 символов
dcredit=-1: Требуется как минимум 1 цифра
ucredit=-1: Требуется как минимум 1 заглавная буква
lcredit=-1: Требуется как минимум 1 строчная буква
ocredit=-1: Требуется как минимум 1 специальный символ
enforce_for_root: Применить эти политики и к пользователю root
sudo cp /etc/security/pwquality.conf /etc/security/pwquality.conf.backup
sudo nano /etc/security/pwquality.conf
minlen = 12
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1
difok = 4
enforce_for_root = 1
Параметр difok = 4 требует, чтобы как минимум 4 символа отличались от предыдущего пароля.
sudo passwd testuser
Попробуйте ввести простой пароль, например password123. Система должна отклонить его из-за несоответствия требованиям к сложности.
Теперь попробуйте сложный пароль, соответствующий всем требованиям, например Secure@Password123.
Если вы все настроили правильно, система должна принять этот пароль.
Требования к сложности гарантируют, что пользователи создают надежные пароли, что затрудняет для злоумышленников их угадывание или взлом.
На этом шаге мы настроим контроль истории паролей, чтобы пользователи не могли повторно использовать свои недавние пароли.
sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.backup2
sudo nano /etc/pam.d/common-password
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 remember=5
Это не позволит пользователям повторно использовать любые из своих 5 последних паролей.
Параметр remember=5 предписывает системе хранить хэши последних 5 паролей для каждого пользователя. Когда пользователь пытается изменить свой пароль, система сравнивает новый пароль с этими сохраненными хэшами, чтобы убедиться, что он не используется повторно.
История паролей хранится в файле /etc/security/opasswd
. Давайте проверим, существует ли этот файл:
ls -la /etc/security/opasswd
Если его нет, он будет создан автоматически, когда первый пользователь изменит свой пароль с новой политикой.
sudo passwd testuser
Установите сложный пароль, например Complex@Password1.
Теперь измените его снова немедленно:
sudo passwd testuser
Система не дает Вам повторно использовать ни один из своих 5 последних паролей.
Этот механизм истории паролей добавляет еще один уровень безопасности, предотвращая повторное использование паролей, что является распространенной уязвимостью безопасности.
Когда вы изменяете политики паролей в /etc/login.defs
, новые настройки применяются только к вновь созданным пользователям или при ручном обновлении существующих пользователей. Посмотрим, как управлять существующими пользователями:
sudo chage -l labex
Это отображает информацию о сроке действия пароля для текущего пользователя.
sudo chage -d 0 testuser
Это устанавливает дату последнего изменения пароля на 0, принуждая к смене пароля при следующем входе в систему.
sudo chage -E $(date -d "90 days" +%Y-%m-%d) testuser
Это устанавливает дату истечения срока действия учетной записи на 90 дней с сегодняшнего дня.
Чтобы применить политику максимального срока действия пароля к существующему пользователю:
sudo chage -M 90 testuser
Это устанавливает максимальный срок действия пароля на 90 дней для пользователя.
Чтобы применить политику минимального срока действия пароля к существующему пользователю, введите данную команду в Терминал:
sudo chage -m 7 testuser
Это устанавливает минимальный срок действия пароля на 7 дней для пользователя.
Чтобы применить политику предупреждения об истечении срока действия пароля к существующему пользователю:
sudo chage -W 14 testuser
Это устанавливает период предупреждения об истечении срока действия пароля на 14 дней для пользователя.
Вы можете проверить информацию о пароле пользователя, используя несколько команд:
Просмотр всех локальных учетных записей пользователей:
cat /etc/passwd
Проверка статуса пароля для конкретного пользователя:
sudo passwd -S testuser
Список пользователей с определенной настройкой пароля:
awk -F: '($3 >= 1000) {print $1}' /etc/passwd
Это выводит список всех обычных пользователей в системе (UID >= 1000).
Чтобы применить новые политики паролей ко всем обычным пользователям в системе, вы можете использовать простой скрипт. Вот пример:
for user in $(awk -F: '($3 >= 1000) && ($3 < 60000) {print $1}' /etc/passwd); do
echo "Updating password policy for user: $user"
sudo chage -M 90 -m 7 -W 14 $user
done
Этот скрипт обновляет всех обычных пользователей с нашими новыми политиками срока действия паролей.