Работа с конфигурацией PAM

Одной из ключевых особенностей PAM (Pluggable Authentication Modules) является гибкость конфигурации. Конфигурационные файлы позволяют настроить порядок обработки модулей, контрольные флаги и аргументы, которые определяют поведение системы. Эта статья подробно рассматривает работу с конфигурацией PAM, от структуры файлов до практических примеров настройки.
Структура конфигурационных файлов PAM
В системе PAM конфигурация хранится в двух местах:
/etc/pam.conf
: основной файл конфигурации (обычно не используется в современных системах)./etc/pam.d/
: каталог с отдельными конфигурационными файлами для каждого сервиса.
Пример файла из /etc/pam.d/
Каждый файл в каталоге /etc/pam.d/
соответствует определенному сервису (например, sshd
, login
, sudo
). Вот пример содержимого файла /etc/pam.d/sshd
:
# PAM конфигурация для SSH
auth required pam_unix.so
auth required pam_google_authenticator.so
account required pam_nologin.so
session required pam_limits.so
session optional pam_motd.so motd=/etc/motd
Каждая строка в файле состоит из следующих частей:
- Тип модуля: этап обработки (
auth
,account
,password
,session
). - Контрольный флаг: определяет поведение системы при успехе или ошибке модуля.
- Имя модуля: библиотека, которая реализует функциональность.
- Аргументы: дополнительные параметры для модуля.
Контрольные флаги: Логика выполнения модулей
Контрольные флаги определяют, как обрабатываются результаты выполнения модулей. Основные флаги:
required
: ошибка модуля приведет к провалу этапа, но обработка других модулей продолжится.requisite
: ошибка модуля немедленно завершает этап.sufficient
: успешное выполнение модуля завершает этап, если предыдущие модули не провалились.optional
: модуль используется только для дополнительной информации.include
: включает правила из другого конфигурационного файла.
Пример с контрольными флагами
Настройка модуля pam_faillock.so
в файле /etc/pam.d/sshd
:
auth required pam_unix.so
auth required pam_faillock.so preauth silent deny=3 unlock_time=600
auth [success=1 default=ignore] pam_google_authenticator.so
В этой конфигурации:
- Пароль проверяется через
pam_unix.so
. Ошибка приводит к завершению этапа. pam_faillock.so
блокирует учетные записи после трех неудачных попыток.pam_google_authenticator.so
используется как дополнительный шаг двухфакторной аутентификации.
Аргументы модулей
Аргументы модулей предоставляют дополнительную функциональность и тонкую настройку их работы. Вот некоторые примеры:
Пример с pam_unix.so
Файл /etc/pam.d/common-auth
:
auth required pam_unix.so nullok try_first_pass
nullok
: разрешает вход для учетных записей без пароля.try_first_pass
: использует введенный пароль для других модулей.
Пример с pam_pwquality.so
Файл /etc/pam.d/common-password
:
password requisite pam_pwquality.so retry=3 minlen=12 difok=3
retry=3
: дает три попытки для ввода сложного пароля.minlen=12
: устанавливает минимальную длину пароля.difok=3
: требует, чтобы новый пароль отличался от предыдущего минимум на три символа.
Общие файлы конфигурации
Помимо индивидуальных конфигураций для сервисов, есть общие файлы, такие как /etc/security/limits.conf
и /etc/security/time.conf
, которые взаимодействуют с модулями PAM.
Пример настройки pam_limits.so
Файл /etc/security/limits.conf
:
# Установка лимитов для пользователей
@students hard nproc 100
@staff soft nproc 200
@staff hard nproc 300
* soft nofile 1024
* hard nofile 4096
Эти настройки задают ограничения на использование процессов и файловых дескрипторов для разных групп пользователей.
Пример настройки pam_time.so
Файл /etc/security/time.conf
:
# Ограничение доступа по времени
login ; tty1 ; !Wk0000-2400
Этот пример запрещает вход через консоль tty1
в выходные дни.
Практическое руководство: Настройка сервиса SSH
Пример полной конфигурации PAM для SSH в файле /etc/pam.d/sshd
:
# Аутентификация
auth required pam_unix.so
auth required pam_google_authenticator.so
auth required pam_faillock.so preauth silent deny=3 unlock_time=600
# Управление учетной записью
account required pam_unix.so
account required pam_nologin.so
# Управление паролями
password requisite pam_pwquality.so retry=3 minlen=12 difok=3
password required pam_unix.so sha512
# Настройка сессии
session required pam_limits.so
session optional pam_motd.so motd=/etc/motd
Эта конфигурация обеспечивает аутентификацию с двухфакторной защитой, предотвращает подбор пароля, а также настраивает ограничения ресурсов и отображает сообщение дня.
Заключение
Работа с конфигурацией PAM предоставляет мощные инструменты для управления аутентификацией и доступом в системе. Используя контрольные флаги, аргументы модулей и общие файлы конфигурации, администратор может создать безопасную и удобную среду для пользователей.