Back to: PAM — аутентифікація
PAM — аутентификация
PAM (Pluggable Authentication Modules) — система модулей аутентификации в Linux. Позволяет гибко настраивать способы проверки паролей, ограничений и политик безопасности без изменения самих программ.
Как работает PAM
Программы (login, su, sudo, ssh) вызывают PAM, который загружает модули согласно конфигурации. Каждый модуль выполняет свою задачу: проверка пароля, ограничение доступа, аудит и т.д.
/etc/pam.d/ — каталог конфигураций
# Конфигурация для каждого приложения
ls /etc/pam.d/
# Ключевые файлы:
/etc/pam.d/login # вход в систему
/etc/pam.d/su # su
/etc/pam.d/sudo # sudo
/etc/pam.d/sshd # SSH
/etc/pam.d/common-* # общие настройки (Debian/Ubuntu)
/etc/pam.d/system-auth # общие настройки (RHEL/CentOS)
Структура правил PAM
# Формат: тип контроль модуль [аргументы]
# Типы:
# auth — аутентификация (проверка личности)
# account — управление учётной записью (может ли войти)
# password — изменение пароля
# session — действия при входе/выходе
# Контроль:
# required — модуль должен успешнуть (продолжает проверку)
# requisite — модуль должен успешнуть (немедленный отказ)
# sufficient — успех модуля достаточен (остальные пропускаются)
# optional — результат не важен
# include — подключить другой конфиг
Пример конфигурации
# /etc/pam.d/login (упрощённо):
auth required pam_securetty.so
auth requisite pam_nologin.so
auth include common-auth
account required pam_unix.so
password include common-password
session required pam_lastlog.so
session optional pam_motd.so
Основные модули PAM
pam_unix — классическая проверка пароля
# Проверка через /etc/shadow
auth required pam_unix.so
# Параметры: sha256, sha512, rounds, remember
pam_listfile — доступ по списку
# Разрешить только пользователям из файла
auth required pam_listfile.so onerr=fail item=user sense=allow file=/etc/ssh/allowed_users
pam_limits — ограничения ресурсов
# В /etc/pam.d/common-session (или system-auth):
session required pam_limits.so
/etc/security/limits.conf — ограничения ресурсов
# Формат: домен тип элемент значение
# тип: soft (предупреждение), hard (жёсткий лимит), - (оба)
# элемент: nofile, nproc, cpu, fsize, core, memlock
# Примеры:
# Лимит открытых файлов для всех
* soft nofile 1024
* hard nofile 4096
# Лимит процессов для пользователя
alice soft nproc 100
alice hard nproc 200
# Лимит CPU (в минутах) для группы
@student hard cpu 60
# Лимит размера файла
bob - fsize 10240 # 10MB
# Без ограничений для root
root - nofile unlimited
pam_tally2 / pam_faillock — блокировка после неудачных входов
# В /etc/pam.d/common-auth (или system-auth):
auth required pam_faillock.so preauth silent deny=5 unlock_time=900
auth [default=die] pam_faillock.so authfail deny=5 unlock_time=900
auth sufficient pam_faillock.so authsucc
# Проверить счётчик
sudo faillock --user alice
# Разблокировать
sudo faillock --user alice --reset
Другие полезные модули
- pam_motd.so — сообщение дня (MOTD)
- pam_mkhomedir.so — создание домашнего каталога при первом входе
- pam_time.so — ограничение времени доступа
- pam_wheel.so — только члены группы wheel могут использовать su
Практическое задание
- Изучите конфигурацию:
ls /etc/pam.d/ - Посмотрите конфигурацию login:
cat /etc/pam.d/login - Проверьте общие настройки:
cat /etc/pam.d/common-auth(Debian) илиcat /etc/pam.d/system-auth(RHEL) - Посмотрите лимиты:
cat /etc/security/limits.conf - Проверьте текущие лимиты:
ulimit -a - Проверьте лимиты пользователя:
ulimit -n(открытые файлы)


Добавить комментарий