PAM (Русский)
Linux Pluggable Authentication Modules (PAM) — фреймворк для аутентификации пользователей в системе. Со страницы проекта:
- PAM предоставляет возможность разрабатывать программы, которые не зависят от схемы аутентификации. Во время выполнения к программам подключаются «модули аутентификации». Какой конкретно модуль аутентификации должен быть подключен, зависит от настроек локальной системы и остаётся на усмотрение локального системного администратора.
В этой статье объясняются базовые настройки Arch Linux по умолчанию для PAM для аутентификации локальных и удалённых пользователей. Внесение изменений в настройки по умолчанию описывается в отдельных статьях.
Установка
Пакет pam является зависимостью мета-пакета base и таким образом уже установлен в Arch по умолчанию. Модули PAM устанавливаются в /usr/lib/security
.
В репозиториях доступны дополнительные пакеты, примеры есть в разделе #Руководства по настройке.
Настройка
PAM использует несколько путей в /etc
; список стандартных файлов настроек можно посмотреть с помощью команды pacman --query --list pam | grep /etc
. Они настраивают либо #Параметры безопасности для модулей, либо #Базовый стек PAM.
Параметры безопасности
Каталог /etc/security
содержит системные настройки переменных, предлагаемых методами аутентификации. При базовой установке он заполняется стандартными файлами конфигурации из апстрима.
Arch Linux не предоставляет специфичную для дистрибутива конфигурацию этих файлов. Например, файл /etc/security/pwquality.conf
можно использовать для определения общесистемных значений по умолчанию для контроля качества паролей. Однако для его использования нужно в #Базовый стек PAM включить модуль pam_pwquality.so
, который по умолчанию отключен.
Некоторые возможности описаны в разделе #Настройка параметров безопасности.
Базовый стек PAM
Настройки в каталоге /etc/pam.d/
связывают приложения с определёнными системными схемами аутентификации. Во время установки базовой системы в этот каталог добавляются настройки:
- из пакета pambase, который содержит базовый стек специфичной для Arch Linux конфигурации PAM для использования приложениями, и
- из других базовых пакетов. Например, util-linux добавляет конфигурацию для программы login и других программ, пакет shadow добавляет стандартные настройки Arch Linux для защиты и изменения базы данных пользователей (смотрите Пользователи и группы).
Различные файлы настроек базовой установки связываются вместе и складываются во время выполнения. Например, при входе локального пользователя в систему программа login считывает политику system-local-login
, которая, в свою очередь, считывает другие политики:
/etc/pam.d/
login -> system-local-login -> system-login -> system-auth
Другие приложения могут применять другие политики. Например, openssh устанавливает свою собственную PAM-политику sshd
:
/etc/pam.d/
sshd -> system-remote-login -> system-login -> system-auth
Следовательно, выбор файла для настройки в стеке имеет значение. В приведённом выше примере можно затребовать специальный метод аутентификации или только для sshd
путём изменения одноимённого файла, или для всех удалённых входов путём изменения файла system-remote-login
; оба изменения не повлияют на локальные входы. Изменение настроек system-login
или system-auth
повлияет и на локальные, и на удалённые входы.
Как и в случае с sshd
, любое приложение, использующее pam, должно установить свою политику в /etc/pam.d
, чтобы интегрироваться в стек PAM и полагаться на него должным образом. Если приложение этого не сделает, будет применяться политика по умолчанию /etc/pam.d/other
, запрещающая вход и выводящая предупреждение в журнал.
$ ldd /usr/bin/login | grep pam
libpam.so.0 => /usr/lib/libpam.so.0 (0x000003d8c32d6000) libpam_misc.so.0 => /usr/lib/libpam_misc.so.0 (0x000003d8c30d2000)Программа login использует PAM и, следовательно, должна иметь свой файл политики.
Справочные страницы pam(8) и pam.d(5) описывают стандартизированное содержимое файлов настроек. В частности, они объясняют четыре группы PAM: account, auth, password и session, а также управляющие значения, которые могут быть использованы для настройки стека и поведения модулей.
Кроме того, в /usr/share/doc/Linux-PAM/index.html
устанавливается обширная документация установлена, которая, помимо различных руководств, содержит man-страницы для каждого из стандартных модулей.
Руководства по настройке
В этом разделе представлен обзор статей, описывающих, как изменять конфигурацию PAM и как интегрировать специальные новые модули PAM в стек PAM. Обратите внимание, что man-страницы для модулей обычно не имеют расширения .so
в своём названии.
Настройка параметров безопасности
В следующих разделах описаны примеры изменения параметров PAM по умолчанию:
- показывает, как включить требование использования сложных паролей с помощью
pam_cracklib.so
.
- показывает, как настроить ограничение на число попыток входа с помощью
pam_faillock.so
.
- ограничивает вход пользователей с помощью
pam_wheel.so
.
- подробно о том, как настроить ограничения процессов с помощью
pam_limits.so
.
- показывает примеры установки переменных окружения с помощью
pam_env.so
.
Настройка стека PAM и модулей
Следующие статьи описывают, как изменить #Базовый стек PAM для специальных случаев использования.
Модули PAM, доступные в официальных репозиториях:
- подробные примеры использования
pam_mount.so
для автоматического монтирования зашифрованных каталогов при входе пользователя в систему.
- использует
pam_ecryptfs.so
для автоматического монтирования зашифрованного каталога.
- показывает, как использовать
pam_exec.so
для выполнения пользовательского скрипта при входе.
- использует
pam_winbind.so
иpam_krb5.so
для аутентификации пользователей через службы Active Directory (LDAP, Kerberos).
- статья об интеграции LDAP-клиента или аутентификации на стороне сервера с помощью
pam_ldap.so
.
- описывает использование U2F (
pam_u2f.so
) и проприетарной реализации Yubico OTP (pam_yubico.so
) от YubiKey с PAM.
- показывает пример реализации программной двухфакторной аутентификации с помощью
pam_oath.so
.
- использует
pam_fprintd.so
для настройки аутентификации по отпечаткам пальцев.
Модули PAM, доступные в пользовательском репозитории Arch:
- сохраняет имя пользователя и пароль для автоматического входа в систему.
- показывает, как настроить
pam_usb.so
для использования USB-устройства для (опционально двухфакторной) аутентификации.
- использует
pam_ssh.so
для аутентификации в качестве удалённого пользователя.
- объясняет, как можно использовать
pam_abl.so
для ограничения атак перебором через ssh.
- настройка автоматического монтирования с помощью
pam_encfs.so
.
- показывает, как настроить двухфакторную аутентификацию с помощью
pam_google_authenticator.so
.
- объясняет, как настроить FTP chroot с помощью
pam_pwdfile.so
для аутентификации пользователей без локальной системной учётной записи.
Дополнительные пакеты PAM
Помимо упомянутых выше пакетов, в пользовательском репозитории Arch есть дополнительные модули и инструменты PAM.
- Pamtester — Программа для тестирования подключаемых модулей аутентификации (PAM)
Хотя в AUR есть тег PAM, не все доступные пакеты его содержат. Поэтому может понадобиться поиск по описанию пакета.
Смотрите также
- linux-pam.org - сайт проекта
- Understanding and configuring PAM - вводная статья