PAM — аутентифікація

PAM — аутентифікація

Изображение записи по умолчанию
0

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

Практическое задание

  1. Изучите конфигурацию: ls /etc/pam.d/
  2. Посмотрите конфигурацию login: cat /etc/pam.d/login
  3. Проверьте общие настройки: cat /etc/pam.d/common-auth (Debian) или cat /etc/pam.d/system-auth (RHEL)
  4. Посмотрите лимиты: cat /etc/security/limits.conf
  5. Проверьте текущие лимиты: ulimit -a
  6. Проверьте лимиты пользователя: ulimit -n (открытые файлы)

Comments

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Related Post