Политика паролей в Oracle Enterprise Linux

Политика паролей в Oracle Enterprise Linux

В данном материале рассматривается политика паролей операционной системы Oracle Enterprise Linux, а также способы управления этой политикой.

Политика паролей – это набор правил, которые должны соблюдаться, когда пользователь операционной системы первый раз устанавливает или в будущем меняет свой пароль. Она является важным фактором информационной безопасности, поскольку пользовательские пароли часто становятся основной причиной нарушения безопасности информационных систем. В связи с этим, большинство компаний включают политику паролей в свои документы, например, такие документы как «Политика парольной защиты» или «Политика информационной безопасности» и т.п. В этом случае параметры всех пользователей (учетных записей) и их пароли должны соответствовать утвержденным в компании документам по парольной политике.

Парольная политика обычно определяет срок истечения пароля, его длину, сложность, количество неудачных входов в систему и т.д.

В данном материале рассматривается парольная политика на примере операционной системы Oracle Enterprise Linux (далее – OEL). Информация актуальная для версий OEL 7 и OEL 8. Для реализации парольной политики OEL можно использовать функцию подключаемых модулей аутентификации (PAM), которая упрощает применение строгой аутентификации пользователей и политики паролей, включая правила сложности, длины, возраста, срока действия и повторного использования предыдущих паролей. Также можно настроить PAM на блокирование доступа пользователей после большого количества неудачных попыток входа в систему (ввода неправильных паролей), в нерабочее время или если открыто слишком много одновременных сессий.

PAM обладает высокой степенью гибкости за счет использования различных модулей с настраиваемыми параметрами. Например, модуль проверки целостности пароля по умолчанию pam_pwquality.so проверяет надежность пароля. Конфигурационный файл PAM (/etc/pam.d/system-auth) содержит следующие записи:

[oracle@dushanbe ~]$ cat /etc/pam.d/system-auth
%PAM-1.0
This file is auto-generated.
User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
[oracle@dushanbe ~]$

Выше жирным шрифтом отмечены строки, отвечающие за различные проверки надежности пароля. Далее каждая из них рассматривается по отдельности.

Строка:

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= 

задействует модуль pam_pwquality.so с соответствующими параметрами. Параметр try_first_pass означает, что система не будет запрашивать у пользователя его текущий пароль, даже если он ввел его для того же модуля или для предыдущего модуля в сессии. Параметр local_users_only указывает игнорировать пользователей, которых нет в локальном файле /etc/passwd. Параметрretry= определяет количество попыток пользователя для выбора нового пароля. Параметр authok_type= определяет подсказки при запросе паролей. По умолчанию они следующие: “New UNIX password: ” и “Retype UNIX password: “. Например, при необходимости в тексте подсказки слово UNIX может быть заменено на другое благодаря параметру authok_type, по умолчанию этот параметр пуст.

Согласно настройкам модуля по умолчанию, длина пароля должна составлять минимум шесть символов, из которых пять символов должны отличаться от предыдущего пароля. Модуль проверяет качество паролей только для пользователей, которые определены в /etc/passwd.  Значения по умолчанию для модуля явно не прописываются, однако можно просмотреть закомментированный файл конфигурации модуля pam_pwquality.so для того, чтобы иметь представление о параметрах, которые можно использовать в конфигурационном файле PAM. Файл конфигурации модуля pam_pwquality.so можно найти по следующему пути – /etc/security/pwquality.conf и содержит следующие строки:

[oracle@dushanbe ~]$ cat /etc/security/pwquality.conf
#Configuration for systemwide password quality limits
#Defaults:
#
#Number of characters in the new password that must not be present in the
#old password.
#difok = 5
#
#Minimum acceptable size for the new password (plus one if
#credits are not disabled which is the default). (See pam_cracklib manual.)
#Cannot be set to lower value than 6.
#minlen = 9
#
#The maximum credit for having digits in the new password. If less than 0
#it is the minimum number of digits in the new password.
#dcredit = 1
#
#The maximum credit for having uppercase characters in the new password.
#If less than 0 it is the minimum number of uppercase characters in the new
#password.
#ucredit = 1
#
#The maximum credit for having lowercase characters in the new password.
#If less than 0 it is the minimum number of lowercase characters in the new
#password.
#lcredit = 1
#
#The maximum credit for having other characters in the new password.
#If less than 0 it is the minimum number of other characters in the new
#password.
#ocredit = 1
#
#The minimum number of required classes of characters for the new
#password (digits, uppercase, lowercase, others).
#minclass = 0
#
#The maximum number of allowed consecutive same characters in the new  
#  # password.
The check is disabled if the value is 0.
maxrepeat = 0
#
#The maximum number of allowed consecutive characters of the same class in the
#new password.
#The check is disabled if the value is 0.
#maxclassrepeat = 0
#
#Whether to check for the words from the passwd entry GECOS string of the  #user.
#The check is enabled if the value is not 0.
#gecoscheck = 0
#
#Path to the cracklib dictionaries. Default is to use the cracklib default.
#dictpath =

Рассматривается следующая строка:

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

В строке выше настраивается модуль pam_unix.so. Он проверяет пароль, ранее указанный в сессии, перед запросом необходимого пароля (pam_pwquality уже выполнит такую проверку для пользователей, определенных в /etc/passwd), использует хэширование SHA-512 для пароля и файла /etc/shadow, и разрешает доступ, если существующий пароль равен null. Конфигурируется модуль с помощью элементов файла shadow, отвечающего за хранение паролей (expire, last_change, max_change, min_change, warn_change). Ключевое слово try_first_pass означает, что система не будет запрашивать у пользователя его существующий пароль, даже если он ввел его для того же модуля или для предыдущего модуля в сессии. Nullok указывает на то, что пользователь может изменить свой пароль, если существующий пароль равен null.

Администратор может изменять параметры модуля и тем самым регулировать парольные политики. Например, можно регулировать проверку, которая выполняется, когда пользователь меняет свой пароль. Параметры изменятся в конфигурационном файле PAM (/etc/pam.d/system-auth). Для примера, попробуем настройку со следующими данными. В примере ниже, строка для модуля pam_pwquality.so определяет, что пользователь получает три попытки выбрать новый подходящий пароль по требованиям системы (retry=3), состоящий минимум из восьми символов (minlen=8), из которых пять символов должны отличаться от предыдущего пароля (difok=5), и который должен содержать как минимум одну букву верхнего регистра, одну букву нижнего регистра, одну цифру и один неалфавитно-цифровой символ (minclass=4). В зависимости от значений, minclass модуль осуществляет разные проверки (Если minclass установлен на 2, пароль, содержащий все строчные, все прописные, все цифры или любой другой класс символов, не будет работать. Если minclass равен 2, то для пароля необходимо использовать символы из двух классов, например, прописные и строчные, или строчные и цифры).

password  required  pam_pwquality.so retry=3 minlen=8 difok=5 minclass=4
password  required  pam_unix.so use_authtok sha512 shadow remember=5
password  required  pam_deny.so

Строка для pam_unix.so указывает, что модуль не выполняет проверку паролей (use_authtok), использует хэширование SHA-512 для паролей и файла /etc/shadow (sha512), а также сохраняет информацию о пяти предыдущих паролях для каждого пользователя в файле /etc/security/opasswd (remember=5). Поскольку nullok не указан, пользователь не может изменить свой пароль, если существующий пароль равен null.

Еще одной полезной настройкой может оказаться установление срока истечения паролей. Чтобы указать, как будут истекать сроки паролей пользователей, необходимо отредактировать настройки в файле /etc/login.defs. Эти настройки описаны в следующей таблице.

НАСТРОЙКАОПИСАНИЕ
PASS_MAX_DAYSМаксимальное количество дней, в течение которых пароль может использоваться до его смены. Значение по умолчанию – 99 999 дней.
PASS_MIN_DAYSМинимальное количество дней, которое допускается между сменами пароля.
Значение по умолчанию – 0 дней.
PASS_WARN_AGEКоличество дней, предупреждающих об истечении срока действия пароля.
Значение по умолчанию – 7 дней.

Пример 1. Предполагается, что имеется пользователь oracle. И парольная политика пользователя, использующаяся по умолчанию – системная. Текущие настройки проверяются в файле /etc/pam.d/system-auth:

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

Выполняется смена пароля для пользователя oracle:

[oracle@dushanbe ~]$ passwd
Changing password for user oracle.
Changing password for oracle.
(current) UNIX password: 
New password: 
BAD PASSWORD: The password is shorter than 8 characters
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
New password: 
BAD PASSWORD: The password is the same as the old one
passwd: Have exhausted maximum number of retries for service
[oracle@dushanbe ~]$

Далее каждая ошибка описывается по отдельности.

В примере ниже, для пользователя oracle пароль назначается student:

[oracle@dushanbe ~]$ passwd
Changing password for user oracle.
Changing password for oracle.
(current) UNIX password: 
New password: 
BAD PASSWORD: The password is shorter than 8 characters

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

Выполняется следующая попытка назначить пользователю oracle пароль 123456789.

[oracle@dushanbe ~]$ passwd
Changing password for user oracle.
Changing password for oracle.
(current) UNIX password:
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic

Ошибка говорит о том, что новый назначаемый пароль не может быть набором одинаковых цифр/букв, либо набором цифр от 1 до 10.

Третья попытка – назначить пользователю oracle такой же пароль, который у него сейчас имеется.

[oracle@dushanbe ~]$ passwd
Changing password for user oracle.
Changing password for oracle.
(current) UNIX password:
New password:
BAD PASSWORD: The password is the same as the old one

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

В конце система выдала следующее сообщение:

passwd: Have exhausted maximum number of retries for service

Данное сообщение говорит о том, что после третьей безуспешной попытки смены пароля операционная система с опцией retry=3 завершает процесс смены пароля и закрывает режим работы с утилитой passwd. Для новой попытки смены пароля необходимо запустить утилиту passwd и заново попробовать сменить пароль, удовлетворяющий требования парольной безопасности.

Ниже назначается новый пароль, который соответствует требованиям системы, например, пароль – students1234.

[oracle@dushanbe ~]$ passwd
Changing password for user student.
Changing password for student.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

Система позволила успешно сменить пароль.

Пример 2. Предполагается, что в соответствии с новой политикой паролей, необходимо, чтобы длина пароля была не менее 10 символов (minlen=10), и чтобы новый пароль содержал, как минимум одну букву верхнего регистра, одну букву нижнего регистра, одну цифру и один неалфавитно-цифровой символ (minclass=4). Также ограничивается неуспешные попытки смены пароля одной (retry=1). Следующим образом выполняется изменение файла /etc/pam.d/system-auth:

password    requisite     pam_pwquality.so local_users_only retry=1 minlen=10 minclass=4
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

При необходимости, запустить команду authconfig –updateall под пользователем с правами администратора для применения новых настроек.

В примере ниже выполняется смена пароля для проверки новых правил политики безопасности паролей. Пользователю oracle назначается пароль, который не соответствует новой политике, например, пароль –  Tst!msu20

[oracle@dushanbe ~]$ passwd 
Changing password for user student.
Changing password for student.
(current) UNIX password:
New password:
BAD PASSWORD: The password is shorter than 10 characters
passwd: Have exhausted maximum number of retries for service

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

Назначается новый пароль, который содержит более 10 символов и тем самым удовлетворяет новым требованиям, например, пароль – Test!msu2022

[oracle@dushanbe ~]$ passwd 
Changing password for user student.
Changing password for student.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

Результат команды показывает, что пароль успешно изменен.

На этом завершается краткое описание политики паролей в Oracle Enterprise Linux.

Leave a Reply

Your email address will not be published. Required fields are marked *