Работа с конфигурацией 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 предоставляет мощные инструменты для управления аутентификацией и доступом в системе. Используя контрольные флаги, аргументы модулей и общие файлы конфигурации, администратор может создать безопасную и удобную среду для пользователей.


