Этапы работы PAM: auth, account, password, session
Введение в этапы работы PAM

PAM (Pluggable Authentication Modules) управляет аутентификацией пользователей с помощью четырех основных этапов: auth, account, password, и session. Каждый из них выполняет определенную задачу, что позволяет более точно контролировать процесс аутентификации и настройки пользовательских сессий.
Этапы обрабатываются в порядке, указанном в конфигурационном файле, и каждый из них может использовать несколько модулей. Далее рассмотрим каждый этап подробнее с примерами конфигурации.
Этап auth: Проверка подлинности пользователя
Этап auth отвечает за проверку учетных данных пользователя, таких как пароли, токены или двухфакторная аутентификация. Он также может выполнять дополнительные действия, например, запрос PIN-кода.
Примеры модулей
- pam_unix.so: проверяет пароли, хранящиеся в системных файлах.
- pam_google_authenticator.so: поддержка двухфакторной аутентификации.
- pam_faillock.so: предотвращает перебор паролей.
Пример конфигурации
В файле /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
Эта настройка:
- Проверяет пароль с использованием
pam_unix.so
. - Запрашивает одноразовый код через Google Authenticator.
- Блокирует учетную запись после трех неудачных попыток ввода.
Этап account: Управление доступом
Этап account проверяет, имеет ли пользователь право на доступ в систему. Здесь могут выполняться дополнительные проверки, например, истечение срока действия учетной записи или ограничение по времени входа.
Примеры модулей
- pam_unix.so: проверяет, не истек ли срок действия учетной записи или пароля.
- pam_nologin.so: запрещает вход, если файл
/etc/nologin
существует. - pam_time.so: ограничивает доступ на основе времени или терминала.
Пример конфигурации
Пример конфигурации в файле /etc/pam.d/common-account
:
account required pam_unix.so
account required pam_nologin.so
account optional pam_time.so
Эта настройка:
- Проверяет состояние учетной записи и пароля через
pam_unix.so
. - Запрещает вход, если файл
/etc/nologin
существует. - Ограничивает доступ в определенные периоды времени.
Пример использования pam_time.so:
# В файле /etc/security/time.conf
login ; tty1 ; !Wk0000-2400
Этот пример запрещает вход через консоль tty1 в выходные дни.
Этап password: Управление паролями
Этап password используется для изменения паролей. Это позволяет настроить политики сложности паролей, их срок действия и другие параметры.
Примеры модулей
- pam_unix.so: управляет изменением паролей в системных файлах.
- pam_pwquality.so: проверяет сложность пароля и накладывает ограничения.
- pam_cracklib.so: устаревший модуль, который также проверяет качество пароля.
Пример конфигурации
Пример настройки в файле /etc/pam.d/common-password
:
password required pam_unix.so sha512
password requisite pam_pwquality.so retry=3 minlen=12 dcredit=-1 ucredit=-1
Эта настройка:
- Шифрует пароли с помощью алгоритма SHA-512.
- Проверяет сложность пароля через
pam_pwquality.so
, требуя минимум одну заглавную букву и одну цифру. - Дает три попытки ввода нового пароля.
Этап session: Настройка пользовательской сессии
Этап session отвечает за настройку окружения пользователя после успешной аутентификации. Это может включать монтирование каталогов, установку лимитов ресурсов и выполнение скриптов.
Примеры модулей
- pam_limits.so: задает лимиты использования ресурсов.
- pam_motd.so: отображает сообщение дня (Message of the Day).
- pam_umask.so: задает значения
umask
для пользователя.
Пример конфигурации
Пример настройки в файле /etc/pam.d/common-session
:
session required pam_limits.so
session optional pam_motd.so motd=/etc/motd
session required pam_umask.so
Эта настройка:
- Устанавливает лимиты ресурсов через
pam_limits.so
. - Отображает сообщение дня из файла
/etc/motd
. - Задает
umask
, влияющий на права создаваемых файлов.
Заключение
Каждый из этапов PAM выполняет важную роль в процессе аутентификации и управления доступом. Разделение на auth
, account
, password
и session
позволяет гибко настраивать безопасность и функциональность системы. Грамотно настроенные модули на каждом этапе обеспечивают надежную защиту системы и удобство использования для пользователей.