4 Идентификация и аутентификация
4.1 Введение
Средства идентификации и аутентификации предоставляют возможности идентификации объектов доступа, идентификации и проверки подлинности субъектов доступа при входе в систему и при доступе к защищаемым объектам, управления идентификаторами, в том числе их создания, присвоения и уничтожения, управления аутентификационными данными, в том числе их инициализации, защищенного хранения, блокирования и разблокирования, проверки соответствия аутентификационной информации заданной метрике качества, защиты обратной связи при вводе аутентификационной информации, а также другие возможности.
4.2 Добавление нового пользователя
Для добавления нового пользователя используется утилита useradd
. Она позволяет добавить учетную запись нового пользователя. Режимы ее
работы и выполняемые функции задаются набором опций, перечисленных в таблице:
Опция |
Значение |
---|---|
|
Любая текстовая строка. Используется как поле для имени и фамилии пользователя, длина этого поля не должна превосходить 128 символов. |
|
Базовый системный каталог по умолчанию, если не указан другой каталог. Базовый каталог объединяется с именем учётной записи для определения домашнего каталога. |
|
Для создаваемого пользователя в качестве начального каталога будет использован базовый каталог. По умолчанию это значение получается объединением имени пользователя с базовым каталогом и используется как имя домашнего каталога. |
|
Задать домашний каталог нового пользователя.
Если данная опция не используется, то в качестве домашнего каталога выбирается каталог типа |
|
Вывести значения стандартных опций. |
|
Дата окончания срока действия учётной записи пользователя. Задаётся в формате |
|
Число дней, которые должны пройти после окончания срока действия пароля, чтобы учётная запись заблокировалась.
Если указано значение |
|
Название группы нового пользователя или её идентификационный номер. Указываемое название группы или её номер должны существовать в системе. |
|
Список дополнительных групп, в которых числится пользователь.
Перечисление групп осуществляется через запятую без пробелов.
На указанные группы действуют те же ограничения, что и для группы, указанной в опции |
|
Создает начальный домашний каталог нового пользователя, если он ещё не существует. Если каталог уже существует, добавляемый пользователь должен иметь права на доступ к указанному каталогу. |
|
Позволяет не создавать домашний каталог нового пользователя. |
|
Используется для изменения значений по умолчанию для параметров, хранимых в конфигурационном файле |
|
Позволяет добавить нового пользователя в группу, указанную в опции |
|
Позволяет создать учётную запись с уже имеющимся, не уникальным идентификатором. |
|
Позволяет задать новый пароль для учётной записи. |
|
Позволяет создать системную учётную запись.
По умолчанию для данной категории учетных записей домашний каталог не создаётся вне зависимости от значения соответствующего параметра конфигурационного файла |
|
Полный путь к программе, используемой в качестве начального командного интерпретатора для пользователя сразу после регистрации. Длина этого поля не должна превосходить 256 символов. Если задать пустое значение, то будет использоваться оболочка по умолчанию. |
|
Позволяет задать идентификационный номер (численное неотрицательное значение идентификатора) пользователя.
Это значение должно быть уникальным, если не задействована опция |
|
Позволяет создать группу, название которой совпадает с именем пользователя, присоединив данного пользователя к этой группе. |
|
Показать краткую справку об утилите. |
Пример: создадим пользователя с именем user
и зададим для него основную группу users
и
две дополнительные группы ftp
и developers
, к которым он будет приписан.
Для этого выполним следующую команду:
$ sudo useradd -g users -G ftp,developers user
4.3 Изменение уже имеющихся пользовательских записей
Для изменения уже имеющихся пользовательских записей используется утилита usermod
. Она позволяет изменить данные существующей учётной записи пользователя. Режимы ее
работы и выполняемые функции задаются набором опций, перечисленных в таблице:
Опция |
Значение |
---|---|
|
Добавить пользователя в дополнительную группу. Следует использовать только вместе с параметром |
|
Новое значение поля комментария. |
|
Новый домашний каталог учётной записи. Если указан параметр |
|
Установить дату окончания срока действия учётной записи в формате |
|
Установить пароль после окончания срока действия учётной записи в |
|
Принудительно назначить первичную группу. |
|
Список дополнительных групп. |
|
Новое значение учётной записи. |
|
Заблокировать пароль пользователя. Это делается помещением символа |
|
Переместить содержимое домашнего каталога пользователя в новое место. Если новый домашний каталог не существует, то он создаётся автоматически.
Данная опция используется только вместе с опцией |
|
При использовании с параметром |
|
Задать новый пароль для учётной записи. |
|
Задать новую оболочку для учётной записи. |
|
Новый идентификационный номер для учётной записи. |
|
Разблокировать учетную запись. |
Пример: изменим срок действия учётной записи пользователя с идентификатором user6
.
Для этого выполним следующую команду:
$ sudo usermod -e 2020-05-01 user6
где 2020-05-01 — дата истечения срока действия учётной записи в формате ГГГГ-ММ-ДД
.
Пример: изменим идентификатор (значение учётной записи) пользователя с user6
на user7
.
Для этого выполним следующую команду:
$ sudo usermod -l user7 user6
4.4 Удаление пользователей
Для удаления пользователей используется утилита userdel
. Она позволяет удалить существующую учетную запись пользователя. Режимы ее
работы и выполняемые функции задаются набором опций, перечисленных в таблице:
Опция |
Значение |
---|---|
|
С этой опцией учётная запись будет удалена, даже если пользователь в этот момент работает в системе. Она также заставляет утилиту удалить домашний каталог пользователя и почтовый ящик, даже если другой пользователь использует тот же домашний каталог или если почтовый ящик не принадлежит данному пользователю. Внимание! Перед использованием этого параметра убедитесь в необходимости этого действия! Этот параметр может привести систему в нерабочее состояние! |
|
Файлы в домашнем каталоге пользователя будут удалены вместе с самим домашним каталогом и почтовым ящиком. Пользовательские файлы, расположенные в других файловых системах, нужно искать и удалять вручную. |
|
Задает, сколько месяцев идентификатор пользователя должен устаревать перед повторным использованием. Задайте |
|
Показать краткую справку. |
Пример: удалим пользователя с идентификатором user7
.
Для этого выполним следующую команду:
$ sudo userdel -r user7
4.5 Добавление группы пользователей
Для добавления группы пользователей используется утилита groupadd
. Режимы ее
работы и выполняемые функции задаются набором опций, перечисленных в таблице:
Опция |
Значение |
---|---|
|
Вернуть статус успешного выполнения, если группа уже существует.
Если используется вместе с параметром |
|
Числовое значение идентификатора группы. Значение должно быть уникальным, если не задан параметр |
|
Изменить значения по умолчанию для параметров, которые хранятся в конфигурационном файле |
|
Разрешить добавление группы с не уникальным идентификатором. |
|
Создать системную группу. |
|
Показать краткую справку. |
Пример: создадим группу group2
с числовым значением идентификатора 8285
.
Для этого выполним следующую команду:
$ sudo groupadd group2 -g 8285
4.6 Изменение существующей группы пользователей
Для изменения существующей группы пользователей используется утилита groupmod
. Режимы ее
работы и выполняемые функции задаются набором опций, перечисленных в таблице:
Опция |
Значение |
---|---|
|
Изменить идентификатор группы. |
|
Изменить имя группы. |
|
Позволяет использовать не уникальный идентификатор группы. |
|
Изменить пароль. |
|
Показать краткую справку. |
Пример: изменим идентификатор группы пользователей users
на ftp
.
Для этого выполним следующую команду:
$ sudo groupmod -g ftp users
4.7 Удаление существующей группы пользователей
Для удаления существующей группы пользователей используется утилита groupdel
. Утилита позволяет удалить определение группы из системы
путем удаления записи о соответствующей группе из файла /etc/group
.
Однако она не удаляет идентификатор группы из файла паролей.
Удаленный идентификатор действует для всех файлов и каталогов, которые его имели.
Пример: удалим группу с именем group3
.
Для этого выполним следующую команду:
$ sudo groupdel group3
4.8 Создание и изменение пароля пользователя
Для создания и изменения пароля пользователя (в том числе для блокировки учётной записи пользователя) используется утилита passwd
.
Обычный пользователь может изменить пароль только своей учётной записи,
суперпользователь root
может изменить пароль любой учётной записи.
При изменении пароля проверяется информация об устаревании пароля, чтобы убедиться, что пользователю разрешено изменять пароль в настоящий момент. Если выяснится, что не разрешено, то утилита не производит изменение пароля и завершает работу.
При изменении пароля пользователь должен будет сначала ввести старый пароль, если он был. Введенное пользователем значение старого пароля зашифровывается и сравнивается со значением зашифрованного текущего пароля. Затем пользователю необходимо будет дважды ввести новый пароль. Значение второго ввода сравнивается с первым, и они должны совпасть. После этого пароль тестируется на сложность подбора, т.е. его значение не должно быть легко угадываемым.
Режимы работы утилиты и выполняемые функции задаются набором опций, перечисленных в таблице:
Опция |
Значение |
---|---|
|
Эту опцию можно использовать только вместе с |
|
Удалить пароль пользователя (сделать его пустым). Это быстрый способ заблокировать пароль учётной записи. |
|
Немедленно сделать пароль устаревшим. Это заставит пользователя изменить пароль при следующем входе в систему. |
|
Эта опция используется для блокировки учётной записи по прошествии заданного числа дней после устаревания пароля. То есть если пароль устарел и прошло больше дней, чем указано, то пользователь больше не сможет использовать свою учётную запись. |
|
Заблокировать указанную учётную запись. Эта опция блокирует учётную запись путем изменения значения пароля на такое, которое не может быть ранее указанным зашифрованным паролем. |
|
Задать минимальное количество дней между сменой пароля. Нулевое значение этого поля указывает на то, что пользователь может менять свой пароль тогда, когда захочет. |
|
Показать состояние учётной записи. Информация о состоянии содержит семь полей. Первое поле содержит имя учётной записи. Второе поле указывает, заблокирована ли учётная запись, она без пароля или у неё есть рабочий пароль. Третье поле хранит дату последнего изменения пароля. В следующих четырёх полях хранятся минимальный срок, максимальный срок, период выдачи предупреждения и период неактивности пароля. Все эти сроки измеряются в днях. |
|
Разблокировать указанную учётную запись. Этот параметр активирует учётную запись путем изменения пароля на прежнее значение, которое было перед
использованием параметра |
|
Установить число дней выдачи предупреждения, перед тем как потребуется смена пароля. |
|
Установить максимальное количество дней, в течение которых пароль остаётся рабочим, после чего его надо будет изменить. |
|
Показать краткую справку. |
Пример: зададим пароль пользователю user4
. Работа команды passwd
:
$ sudo passwd user4
Изменяется пароль пользователя user4.
Новый пароль :
Повторите ввод нового пароля :
passwd: все данные аутентификации успешно обновлены.
Пример: посмотрим состояние учётной записи user4
. Работа команды passwd
:
$ sudo passwd -S user4
user4 PS 2023-07-04 0 99999 7 -1 (Пароль задан, шифр SHA512.)
Где:
user4
— имя пользователя.PS
— статус пароля.2023-07-04
— отображает время последнего изменения пароля.0
и99999
— минимальный и максимальный срок действия пароля.7
— срок вывода предупреждения.-1
— срок деактивации пароля.
4.9 Изменение срока действия учётной записи и пароля пользователя
Утилита chage
позволяет установить дату завершения срока действия учётной записи
пользователя, минимальный и максимальный срок действия пароля, дату завершения срока
действия пароля, а также количество дней, в течение которых пользователю будут
выводиться предупреждения о приближении завершения срока действия пароля.
Командой сhage
может пользоваться только суперпользователь, за исключением использования её с
параметром -l
, который позволяет непривилегированным пользователям определить время,
когда истекает их личный пароль или учетная запись.
Режимы работы утилиты и выполняемые функции задаются набором опций, перечисленных в таблице:
Опция |
Значение |
---|---|
|
Меняет значение |
|
Меняет значение |
|
Меняет значение |
|
Используется для задания даты, с которой учетная запись пользователя станет недоступной. Дата также может быть указана в формате |
|
Используется для задания количества дней «неактивности», то есть дней, когда пользователь вообще не входил в систему, после которых его учетная запись будет
заблокирована. Значение |
|
Используется для задания числа дней, когда пользователю начнет выводиться предупреждение об истечении срока действия его пароля и необходимости его изменения. |
|
Просмотреть текущую информацию о дате истечения срока действия пароля для пользователя. |
Пример: просмотрим текущую информацию о дате истечения срока действия пароля для пользователя user4
. Работа команды chage
:
$ sudo chage -l user4
Последний раз пароль был изменён: мар 12, 2023
Срок действия пароля истекает: никогда
Пароль будет деактивирован через: никогда
Срок действия учётной записи истекает: никогда
Минимальное количество дней между сменой пароля: 0
Максимальное количество дней между сменой пароля: 99999
Количество дней с предупреждением перед деактивацией пароля: 7
4.10 Управление политиками паролей
В данном разделе описана процедура управления политиками паролей на локальной системе, не подключённой к LDAP-каталогу пользователей (FreeIPA, Microsoft Active Directory и т.д.). В случае использования LDAP-каталога обратитесь к соответствующему руководству по администрированию.
Для управления политиками паролей в МСВСфера ОС используется системная утилита authselect
,
которая оперирует профилями аутентификации.
В первую очередь необходимо убедиться, что выбран профиль аутентификации. Вы можете это сделать с помощью команды authselect current
:
# вывод для систем, подключённых к каталогу пользователей FreeIPA
$ sudo authselect current
Profile ID: sssd
Enabled features:
- with-mkhomedir
- with-sudo
# вывод для систем, использующих профиль "minimal"
$ sudo authselect current
Profile ID: minimal
Enabled features: None
# вывод для систем, не использующих профиль authselect
$ sudo authselect current
Конфигурация не обнаружена. / No existing configuration detected.
Если система не настроена на использование профиля аутентификации, то необходимо выбрать его, чтобы получить возможность настраивать политики паролей.
Просмотреть список доступных профилей authselect
вы можете следующим образом:
$ sudo authselect list
- minimal Local users only for minimal installations
- sssd Enable SSSD for system authentication (also for local users only)
- winbind Enable winbind for system authentication
- custom/minimal_gost Local users only for minimal installations and gost support
- custom/sssd_gost Enable SSSD with GOST support for system authentication (also for local users only)
Выбрать профиль вы можете с помощью команды authselect select
. Для локальной системы рекомендуется использовать профиль minimal
:
$ sudo authselect select minimal --force
[error] File [/etc/authselect/system-auth] is still present
[error] File [/etc/authselect/password-auth] is still present
[error] File [/etc/authselect/fingerprint-auth] is still present
[error] File [/etc/authselect/smartcard-auth] is still present
[error] File [/etc/authselect/postlogin] is still present
[error] File [/etc/authselect/nsswitch.conf] is still present
[error] File [/etc/authselect/dconf-db] is still present
[error] File [/etc/authselect/dconf-locks] is still present
[error] Link [/etc/pam.d/system-auth] points to [/etc/authselect/system-auth]
[error] Symbolic link [/etc/pam.d/system-auth] to [/etc/authselect/system-auth] still exists!
[error] Link [/etc/pam.d/password-auth] points to [/etc/authselect/password-auth]
[error] Symbolic link [/etc/pam.d/password-auth] to [/etc/authselect/password-auth] still exists!
[error] Link [/etc/pam.d/fingerprint-auth] points to [/etc/authselect/fingerprint-auth]
[error] Symbolic link [/etc/pam.d/fingerprint-auth] to [/etc/authselect/fingerprint-auth] still exists!
[error] Link [/etc/pam.d/smartcard-auth] points to [/etc/authselect/smartcard-auth]
[error] Symbolic link [/etc/pam.d/smartcard-auth] to [/etc/authselect/smartcard-auth] still exists!
[error] Link [/etc/pam.d/postlogin] points to [/etc/authselect/postlogin]
[error] Symbolic link [/etc/pam.d/postlogin] to [/etc/authselect/postlogin] still exists!
[error] Link [/etc/nsswitch.conf] points to [/etc/authselect/nsswitch.conf]
[error] Symbolic link [/etc/nsswitch.conf] to [/etc/authselect/nsswitch.conf] still exists!
[error] Link [/etc/dconf/db/distro.d/20-authselect] points to [/etc/authselect/dconf-db]
[error] Symbolic link [/etc/dconf/db/distro.d/20-authselect] to [/etc/authselect/dconf-db] still exists!
[error] Link [/etc/dconf/db/distro.d/locks/20-authselect] points to [/etc/authselect/dconf-locks]
[error] Symbolic link [/etc/dconf/db/distro.d/locks/20-authselect] to [/etc/authselect/dconf-locks] still exists!
Backup stored at /var/lib/authselect/backups/2024-10-08-16-28-25.N8QZyv
Profile "minimal" was selected.
The following nsswitch maps are overwritten by the profile:
- aliases
- automount
- ethers
- group
- hosts
- initgroups
- netgroup
- networks
- passwd
- protocols
- publickey
- rpc
- services
- shadow
Проверить корректность применения профиля вы можете следующим образом:
$ sudo authselect current
Profile ID: minimal
Enabled features: None
$ sudo authselect check
Current configuration is valid.
4.10.1 Управление требованиями к качеству паролей
По умолчанию МСВСфера ОС предъявляет следующие требования к качеству паролей пользователя:
пароль должен иметь длину как минимум 8 символов;
пароль должен отсутствовать в словаре известных паролей программы
cracklib
.
За проверку качества паролей отвечает PAM-модуль pam_pwquality
, который включён по умолчанию для всех профилей аутентификации.
Модуль настраивается через конфигурационный файл /etc/security/pwquality.conf
,
который по умолчанию имеет следующий вид (для переменных указаны значения по умолчанию, описание параметров переведено на русский язык и добавлены комментарии):
# Количество символов в новом пароле, которые не должны присутствовать в старом
# пароле. Значение 0 полностью отключает проверку на пересечение символов, за
# исключением попытки использования идентичного пароля.
# difok = 1
# Минимально допустимое количество символов в новом пароле (плюс один, если
# использование кредитов не отключено, что является поведением по умолчанию).
# Пароль не может быть короче 6 символов.
# minlen = 8
# Максимальное количество кредитов, начисляемое за наличие цифр в новом пароле.
# Если значение меньше 0, то это минимальное количество цифр в новом пароле.
# dcredit = 0
# Максимальное количество кредитов, начисляемое за наличие прописных букв в
# новом пароле. Если значение меньше 0, то это минимальное количество прописных
# букв в новом пароле.
# ucredit = 0
# Максимальное количество кредитов, начисляемое за наличие строчных букв в
# новом пароле. Если значение меньше 0, то это минимальное количество строчных
# букв в новом пароле.
# lcredit = 0
# Максимальное количество кредитов, начисляемое за наличие других символов в
# новом пароле. Если значение меньше нуля, то это минимальное количество других
# символов в новом пароле.
# ocredit = 0
# Минимальное количество требуемых классов символов в новом пароле
# (цифры, буквы в нижнем регистре, буквы в верхнем регистре, другие символы).
# minclass = 0
# Максимальное количество разрешённых повторяющихся символов в новом пароле.
# Проверка отключается, если значение равно 0.
# maxrepeat = 0
# Максимальное количество повторяющихся символов из одного класса, разрешённое
# в новом пароле. Проверка отключается, если значение равно 0.
# maxclassrepeat = 0
# Проверять, есть ли слова из поля GECOS пользователя в новом пароле. Проверка
# отключается, если значение равно 0.
# gecoscheck = 0
# Проверять наличие пароля в словаре cracklib, если значение не равно 0.
# dictcheck = 1
# Проверять наличие имени пользователя в новом пароле. Проверка отключается,
# если значение равно 0.
# usercheck = 1
# Длина подстрок из имени пользователя, которую нужно проверить на наличие
# в новом пароле. Эта проверка выполняется, если значение больше 0 и значение
# usercheck равно 1.
# usersubstr = 0
# Включить принудительную проверку нового пароля пользователя, новый пароль,
# не соответствующий требованиям, будет отклонён, если значение не равно 0.
# enforcing = 1
# Путь к словарям cracklib. Если не задан, будет использован стандартный
# словарь cracklib.
# dictpath =
# Сколько раз запрашивать новый пароль пользователя прежде чем выводить ошибку.
# Значение по умолчанию - 1.
# retry = 3
# Применять требования к качеству пароля пользователя root, если опция
# раскомментирована.
# enforce_for_root
# Применять требования к качеству пароля только для локальных пользователей,
# присутсвующих в файле /etc/passwd, если эта опция раскомментирована.
# local_users_only
Кредиты в параметрах dcredit
, ucredit
, lcredit
и ocredit
определяют сколько баллов может быть начислено за определённый тип символов,
используемый в новом пароле. Если значение параметра больше 0
, то за каждый такой символ к общей длине пароля добавляется определённое количество кредитов.
Пример: если все четыре параметра имеют значение 1
и минимально допустимая длина пароля составляет 7 символов, то при использовании всех 4 типов символов
потребуется ввести пароль всего лишь из 7 символов.
За каждый неиспользованный тип символа к требуемой длине пароля добавляется штраф, указанный в соответствующем параметре.
Так, если не использовать цифры и строчные буквы, то минимальная длина пароля уже составит 9 символов.
Использование механизма кредитов позволяет ослабить требования к длине пароля за счёт использования символов из разных групп.
После внесения правок в конфигурационный файл /etc/security/pwquality.conf
перезапуск каких-либо сервисов не требуется — PAM применит изменения
автоматически и новые настройки будут использованы при следующем изменении пароля.
Дополнительную информацию по использованию модуля pam_pwquality
вы можете найти в соответствующих руководствах:
man pam_pwquality
;man pwquality.conf
.
4.10.2 Ограничение на повторное использование паролей
В конфигурации по умолчанию операционная система не позволяет повторно использовать только текущий пароль пользователя.
Это поведение можно изменить с помощью PAM-модуля pam_pwhistory
, который позволяет хранить историю паролей для каждого пользователя.
Для включения модуля pam_pwhistory
выполните следующую команду:
$ sudo authselect enable-feature with-pwhistory
После этого свойство with-pwhistory
должно появиться в свойствах текущего профиля аутентификации:
$ sudo authselect current
Profile ID: minimal
Enabled features:
- with-faillock
- with-pwhistory
Модуль настраивается через конфигурационный файл /etc/security/pwhistory.conf
,
который по умолчанию имеет следующий вид (для переменных указаны значения по умолчанию, описание параметров переведено на русский язык и добавлены комментарии):
# Раскомментирование этой опции включает вывод отладочной информации.
# debug
# Так же сохранять предыдущие пароли пользователя root, если эта опция
# раскомментирована.
# enforce_for_root
# Количество сохраняемых паролей для каждого пользователя.
# remember = 10
# Сколько раз запрашивать новый пароль пользователя прежде чем выводить ошибку.
# retry = 1
# Каталог, в котором будут храниться предыдущие пароли пользователей.
# file = /etc/security/opasswd
Исходя из описания выше, после включения модуля pam_pwhistory
, система будет хранить последние 10 паролей для каждого пользователя и
выдавать ошибку при попытке использовать сохранённый пароль в качестве нового при смене пароля.
Пример ошибки:
# на английском языке
$ passwd
Changing password for user test.
Current password:
New password:
Retype new password:
Password has been already used. Choose another.
passwd: Have exhausted maximum number of retries for service
# на русском языке
$ passwd
Изменение пароля пользователя test.
Текущий пароль:
Новый пароль:
Повторите ввод нового пароля:
Этот пароль уже был использован. Выберите другой.
Дополнительную информацию по использованию модуля pam_pwhistory
вы можете найти в соответствующих руководствах:
man pam_pwhistory
;man pwhistory.conf
.
4.10.3 Ограничение количества неуспешных попыток аутентификации
В конфигурации по умолчанию операционная система не ограничивает количество неуспешных попыток аутентификации пользователя.
Однако, реализация такого ограничения возможна с помощью PAM-модуля pam_faillock
.
Для включения модуля pam_faillock
выполните следующую команду:
$ sudo authselect enable-feature with-faillock
После этого свойство with-faillock
должно появиться в свойствах текущего профиля аутентификации:
$ sudo authselect current
Profile ID: minimal
Enabled features:
- with-faillock
Модуль настраивается через конфигурационный файл /etc/security/faillock.conf
, который по умолчанию имеет следующий вид
(для переменных указаны значения по умолчанию, описание параметров переведено на русский язык и добавлены комментарии):
# Каталог, в котором хранятся файлы с записями об ошибках аутентификации
# пользователей.
# Внимание: в случае изменения этого пути потребуется дополнительно
# перенастроить правила SELinux.
# dir = /var/run/faillock
# Раскомментирование этой опции включает логирование имён несуществующих
# пользователей в системный журнал.
# audit
# Раскомментирование этой опции отключает вывод информационных сообщений на
# консоль.
# silent
# Раскомментирование этой опции отключает вывод информационных сообщений в
# системный журнал.
# no_log_info
# Раскомментирование этой опции включает отслеживание неудачных попыток
# аутентификации только для локальных пользователей, указанных в файле
# /etc/passwd. В таком случае пользователи из LDAP-каталога будут
# игнорироваться PAM-модулем "faillock". Включение данного параметра позволяет
# избежать ситуаций с двойной блокировкой, когда пользователь будет заблокирован
# и локально, и на уровне каталога пользователей.
# local_users_only
# Блокировать доступ пользователю, если количество последовальных ошибок
# аутентификации за последний промежуток времени превышает N попыток.
# deny = 3
# Временной интервал в секундах, в течении которого ошибки аутентификации
# пользователя считаются последовательными и приводят к блокировке его учётной
# записи. Значение по умолчанию — 15 минут.
# fail_interval = 900
# Автоматически восстановить доступ к заблокированной учётной записи спустя N
# секунд после блокировки. Для перманентной блокировки учётной записи задайте
# значение 0 — в таком случае восстановление доступа будет возможно только
# вручную через команду "faillock". Значение по умолчанию — 10 минут.
# unlock_time = 600
# Раскомментирование этой опции также приведёт к блокировке пользователя
# root в случае неудачных попыток аутентификации. По умолчанию блокируются
# только обычные пользователи.
# even_deny_root
# Автоматически восстанавливать доступ к заблокированной учётной записи
# пользователя root спустя N секунд после блокировки. Если значение не
# определено, модуль "faillock" будет использовать значение параметра "unlock_time".
# root_unlock_time = 900
# Имя группы системных администраторов. Если задано, то для участников этой
# группы будут применяться те же правила, что и для пользователя root
# (к ним будут применяться параметры "even_deny_root" и "root_unlock_time").
# admin_group = <admin_group_name>
Исходя из описания выше, при включении PAM-модуля pam_faillock
будет автоматически применена следующая конфигурация:
локальные пользователи и пользователи из LDAP-каталога будут блокироваться после трёх неудачных попытках входа в течении 15 минут на срок в 10 минут.
Пользователь root
блокироваться не будет.
После внесения правок в конфигурационный файл /etc/security/faillock.conf
перезапуск каких-либо сервисов не требуется — PAM применит изменения автоматически
при обработке следующего запроса на аутентификацию.
Функциональность модуля pam_faillock
распространяется как на локальную (через графическую или текстовую консоль), так и на сетевую (с помощью SSH)
аутентификацию пользователей.
Для просмотра истории неудачных попыток аутентификации пользователя за учётный период fail_interval
вы можете использовать следующую команду
(замените «USERNAME» на имя реального пользователя из вашей системы):
$ sudo faillock --user USERNAME
When Type Source Valid
2024-10-08 21:12:20 RHOST 192.168.1.4 V
2024-10-08 21:12:25 RHOST 192.168.1.4 V
2024-10-08 21:12:28 RHOST 192.168.1.4 V
Для снятия блокировки учётной записи пользователя вы можете использовать следуюзую команду:
$ sudo faillock --user USERNAME --reset
Дополнительную информацию по использованию модуля pam_faillock
вы можете найти в соответствующих руководствах:
man pam_faillock
;man faillock
;man faillock.conf
.
4.11 Получение сведений о пользователе
Утилита id
позволяет получить сведения об указанном пользователе или о текущем
пользователе, запустившем данную утилиту, если он не указал явно имя пользователя.
По умолчанию выводятся числовые идентификаторы пользователя и группы, действующие идентификаторы пользователя и группы, а также идентификаторы других групп, в которых состоит пользователь.
Режимы работы утилиты и выполняемые функции задаются набором опций, перечисленных в таблице:
Опция |
Значение |
---|---|
|
Выводит только подлинный числовой идентификатор групп. |
|
Выводит все подлинные числовые идентификаторы групп, в которых состоит пользователь. |
|
Выводит действующие имена пользователей или групп. |
|
Выводит подлинные числовые идентификаторы пользователей или групп. |
|
Выводит только подлинный числовой идентификатор пользователя. |
|
Выводит информацию о версии утилиты и завершает работу. |
|
Выводит справку по этой утилите и завершает работу. |
Пример: выведем сведения о текущем пользователе user
. Работа команды id
:
$ id
uid=1000(user) gid=1000(user) группы=1000(user),100(users) контекст=user_u:user_r:user_t:s0
4.12 Конфигурационный файл /etc/login.defs
Конфигурационный файл /etc/login.defs
позволяет задавать параметры, определяющие
использование пользователями своих паролей.
Параметры перечислены в таблице:
Параметр |
Описание |
---|---|
|
Определяет максимальный срок действия пароля, т.е. максимальное число дней, в течение которых действие пароля сохраняется.
По истечении этого срока запускается процесс принудительной смены пароля. Если значение параметра не задано,
то есть параметр закомментирован символом |
|
определяет минимальный срок между изменениями пароля, т.е.
минимальное число дней между двумя последовательными изменениями пароля. Если значение параметра не задано, то есть параметр закомментирован символом |
|
Определяет минимальную допустимую длину задаваемого пароля. |
|
Определяет, за сколько дней до истечения срока действия пароля начнётся вывод предупреждения о необходимости его смены.
Если значение параметра не задано, то есть параметр закомментирован символом |
Пример: выведем на экран текущее заданное значение максимального количества дней действия пароля:
$ cat /etc/login.defs | grep PASS_MAX_DAYS
# PASS_MAX_DAYS Maximum number of days a password may be used.
PASS_MAX_DAYS 30
Мы видим, что текущее максимальное количество дней действия пароля — 30 дней.
4.13 Конфигурационный файл /etc/pam.d/system-auth
Конфигурационный файл /etc/pam.d/system-auth
позволяет задавать настройки подключаемых модулей аутентификации.
Каждая строка в нем представляет собой правило, состоящее из трёх обязательных полей и одного опционального. Поля разделены символом пробела. Порядок, в котором указаны правила, определяет очередность их проверки.
Синтаксис правила:
type control module-path [module-arguments]
Поле type
задаёт тип вызываемого модуля и может принимать одно из четырех допустимых значений:
auth
— предназначен для аутентификации пользователя путём запроса и проверки его пароля;account
— используется для контроля доступа к сервису/приложению. Например, может быть произведён запрос о том, не истёк ли срок действия аккаунта пользователя, разрешено ли пользователю работать с определённым сервисом в определённое время, хватает ли системных ресурсов для работы;password
— применятся для установки/изменения паролей;session
— управляет действиями пользователя в рамках активной сессии после его успешной аутентификации в системе.
Поле control
задаёт действие, которое нужно выполнить после вызова модуля. Доступно несколько действий:
required
— модуль должен вернуть положительный ответ. Если он возвращает отрицательный ответ, то пользователь будет уведомлен об этом только после того, как все остальные модули данного типа будут проверены;requisite
— требует от модуля положительный ответ. В случае получения отрицательного ответа последовательная проверка выполнения остальных правил моментально прекращается и пользователь получает сообщение об ошибке аутентификации;sufficient
— в случае, если ни один из модулей с действиемrequired
илиsufficient
, расположенных перед текущим, не вернул отрицательного ответа, текущий модуль вернёт положительный ответ и все последующие модули будут проигнорированы;optional
— результат проверки модуля важен только в том случае, если действие является единственным для данного модуля;include
— предназначается для добавления строк заданного типа из других файлов конфигурации из каталога/etc/pam.d/
в файл конфигурации/etc/pam.d/system-auth
. Название файла указывается в качестве аргумента действия.
Поле module-path
задаёт путь к вызываемому модулю.
Поле module-arguments
— дополнительные необязательные параметры модуля, необходимые для определения действий некоторых отдельных модулей в случае успешной
авторизации. Так, если в конфигурационном файле найти строку, содержащую pam_pwquality.so
, и добавить в нее minlen=8
, то будет установлена минимальная длина
пароля, равная 8-ми символам.
Пример: В качестве примера сделаем блокировку учётной записи пользователя, который совершит определенное количество неудачных попыток входа в систему.
Для этого внесем в файл /etc/pam.d/system-auth
следующие изменения:
Сначала допишем в секцию
auth
строкуauth required pam_tally2.so deny=2 onerr=fail
, т.е. подключим модульpam_tally2
и установим блокировку пользователя после двух (значение параметраdeny
) неудачных попыток входа.Затем в секции
account
добавим строкуaccount required pam_tally2.so
и закомментируем строки видаauth requisite pam_succeed_if.so uid >= 1000 quiet
иauth required pam_deny.so
.Потом строку
auth sufficient pam_unix.so nullok try_first_pass
заменим наauth required pam_unix.so nullok try_first_pass
.
После этого пользователь, допустивший подряд две неверных попытки входа, на третьей получит сообщение о том, что его учетная запись заблокирована. И даже если четвертой попыткой он введет верный пароль, то все равно не получит доступ к системе.
$ sudo user2
Пароль:
sudo Сбой при проверке подлинности
$ sudo user2
Пароль:
sudo Сбой при проверке подлинности
$ sudo user2
Пароль:
Учетная запись заблокирована как следствие неудачных попыток входа (всего 3)
sudo Сбой при проверке подлинности
$ sudo user2
Пароль:
Учетная запись заблокирована как следствие неудачных попыток входа (всего 4)
sudo Сбой при проверке подлинности
Пример: В качестве другого примера настроим проверку паролей на сложность подбора через pam_cracklib
.
Для этого добавим или изменим следующую строку:
password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=6 dcredit=-2 ucredit=-3 lcredit=-2 ocredit=-1
Это значит следующее:
после трех неуспешных попыток (
retry=3
) модуль вернет ошибку;минимальная длина для пароля — 6 символов (
minlen=6
);минимальное количество цифр — 2 (
dcredit=-2
);минимальное количество символов верхнего регистра — 3 (
ucredit=-3
);минимальное количество символов нижнего регистра — 2 (
lcredit=-2
);минимальное количество других символов — 1 (
ocredit=-1
).
Удалим или закомментируем следующую строку:
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
Результат
Выполним команду
passwd
для смены пароля пользователяuser2
.Зададим пароль из трех символов и увидим сообщение «НЕУДАЧНЫЙ ПАРОЛЬ: слишком короткий».
Зададим пароль из четырех символов, система выдаст сообщение «НЕУДАЧНЫЙ ПАРОЛЬ: короткий».
Зададим пароль из шести символов (букв и цифр), в результате чего получим сообщение «НЕУДАЧНЫЙ ПАРОЛЬ: слишком простой».
После трех неуспешных попыток модуль вернет ошибку.
$ passwd
Изменяется пароль пользователя user2.
Смена пароля для user2.
(текущий) пароль Unix:
Новый пароль:
НЕУДАЧНЫЙ ПАРОЛЬ: слишком короткий
Новый пароль:
НЕУДАЧНЫЙ ПАРОЛЬ: короткий
Новый пароль:
НЕУДАЧНЫЙ ПАРОЛЬ: слишком простой
passwd: Использовано максимальное число попыток, заданное для службы
Зададим пароль достаточной длины из одних цифр и получим сообщение «НЕУДАЧНЫЙ ПАРОЛЬ: не содержит достаточное число РАЗЛИЧНЫХ символов».
Зададим пароль достаточной длины, содержащий все указанные требования, кроме включения в него отличных от алфавита и цифр символов. Например,
2QyfMOb4
. Получим сообщение «НЕУДАЧНЫЙ ПАРОЛЬ: слишком простой».
$ passwd
Изменяется пароль пользователя user2.
Смена пароля для user2.
(текущий) пароль Unix:
Новый пароль:
НЕУДАЧНЫЙ ПАРОЛЬ: не содержит достаточное число РАЗЛИЧНЫХ символов
Новый пароль:
НЕУДАЧНЫЙ ПАРОЛЬ: короткий
Новый пароль:
НЕУДАЧНЫЙ ПАРОЛЬ: слишком простой
passwd: Использовано максимальное число попыток, заданное для службы
Зададим пароль, соблюдая все установленные требования. Например,
2QyfM*Ob4
. Пароль будет успешно задан (см. листинг).
$ passwd
Изменяется пароль пользователя user2.
Смена пароля для user2.
(текущий) пароль Unix:
Новый пароль:
Повторите ввод нового пароля:
passwd: Все данные аутентификации успешно обновлены.
4.14 Конфигурационный файл /etc/issue
Конфигурационный файл /etc/issue
позволяет задать текстовое содержание уведомления пользователю перед началом его идентификации и аутентификации для входа в
систему. Например, с предупреждением о том, что в ней реализованы меры защиты
информации и о необходимости соблюдения соответствующих правил обработки данных.
Традиционно в конфигурационном файле присутствуют опции выдачи сведений об
операционной системе и ядре. Дополнительно можно добавить опции выдачи текущих даты
и времени, количества работающих пользователей и некоторых других сведений.
4.15 Конфигурационный файл /etc/shadow
Конфигурационный файл /etc/shadow
содержит сведения об учетных записях и
паролях пользователей в виде строк со следующей структурой:
username:id:salt:hashed:lastchanged:min:max:warn:inactive:expire
Структура файла:
username
— имя пользователя:id
— алгоритм шифрования: 1 (алгоритм MD5), 5 (SHA-256), 6 (SHA-512);salt
— «соль», добавляемая к паролю строка из 10-20 случайных символов;hashed
— зашифрованный пароль;lastchanged
— дата последнего изменения пароля;min
— минимальное число дней между двумя последовательными сменами паролей;max
— срок действия пароля, т.е. максимальное число дней, в течение которых пароль будет активен;warn
— за какое количество дней до срока истечения действия пароля пользователь будет уведомлен о том, что его необходимо сменить;inactive
— количество дней после истечения срока действия пароля, спустя которое его учётная запись блокируется;expire
— число дней, прошедших с момента блокирования учётной записи.
Если после имени пользователя username
вместо id:salt:hashed
стоит символ *
либо
последовательность из двух символов !!
, то это означает, что попытки входа в систему от
имени данного пользователя заблокированы.