PAM (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
PAM
. Дата последней синхронизации: 22 июня 2022. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Безопасность
pam_mount
pam_usb
pam_abl
pam_oath
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
, запрещающая вход и выводящая предупреждение в журнал.
Совет
PAM динамически связывается с программой во время выполнения. Например:
$ 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 и как интегрировать специальные новые модули PAM в стек PAM. Обратите внимание, что man-страницы для модулей обычно не имеют расширения
.so
в своём названии.
Настройка параметров безопасности
В следующих разделах описаны примеры изменения параметров PAM по умолчанию:
Безопасность#Требования к паролю с pam_pwquality
показывает, как включить требование использования сложных паролей с помощью
pam_cracklib.so
.
Безопасность#Блокировка из-за неудачных попыток входа
показывает, как настроить ограничение на число попыток входа с помощью
pam_faillock.so
.
Безопасность#Доступ только для конкретных пользователей
ограничивает вход пользователей с помощью
pam_wheel.so
.
Realtime process management#Configuring PAM
и
Безопасность#Ограничение на количество процессов
подробно о том, как настроить ограничения процессов с помощью
pam_limits.so
.
Переменные окружения#С помощью pam_env
показывает примеры установки переменных окружения с помощью
pam_env.so
.
Настройка стека PAM и модулей
Следующие статьи описывают, как изменить
#Базовый стек PAM
для специальных случаев использования.
Модули PAM, доступные в
официальных репозиториях
:
pam_mount
подробные примеры использования
pam_mount.so
для автоматического монтирования зашифрованных каталогов при входе пользователя в систему.
ECryptfs#Auto-mounting
использует
pam_ecryptfs.so
для автоматического монтирования зашифрованного каталога.
Dm-crypt/Mounting at login
показывает, как использовать
pam_exec.so
для выполнения пользовательского скрипта при входе.
Интеграция Active Directory#Настройка PAM
использует
pam_winbind.so
и
pam_krb5.so
для аутентификации пользователей через службы Active Directory (
LDAP
,
Kerberos
).
LDAP authentication
статья об интеграции LDAP-клиента или аутентификации на стороне сервера с помощью
pam_ldap.so
.
YubiKey#Linux user authentication with PAM
описывает использование U2F (
pam_u2f.so
) и проприетарной реализации Yubico OTP (
pam_yubico.so
) от YubiKey с PAM.
pam_oath
показывает пример реализации программной двухфакторной аутентификации с помощью
pam_oath.so
.
fprint
использует
pam_fprintd.so
для настройки аутентификации по отпечаткам пальцев.
Модули PAM, доступные в
пользовательском репозитории Arch
:
pam_autologin
сохраняет имя пользователя и пароль для автоматического входа в систему.
pam_usb
показывает, как настроить
pam_usb.so
для использования USB-устройства для (опционально двухфакторной) аутентификации.
Ключи SSH#pam_ssh
использует
pam_ssh.so
для аутентификации в качестве удалённого пользователя.
pam_abl
объясняет, как можно использовать
pam_abl.so
для ограничения атак перебором через ssh.
EncFS
настройка автоматического монтирования с помощью
pam_encfs.so
.
Google Authenticator (Русский)
показывает, как настроить двухфакторную аутентификацию с помощью
pam_google_authenticator.so
.
Very Secure FTP Daemon#PAM with virtual users
объясняет, как настроить FTP chroot с помощью
pam_pwdfile.so
для аутентификации пользователей без локальной системной учётной записи.
Дополнительные пакеты PAM
Помимо упомянутых выше пакетов, в
пользовательском репозитории Arch
есть дополнительные модули и инструменты PAM.
Pamtester
— Программа для тестирования подключаемых модулей аутентификации (PAM)
https://pamtester.sourceforge.net/
||
pamtester
AUR
Хотя в AUR есть тег
PAM
, не все доступные пакеты его содержат. Поэтому может понадобиться
поиск по описанию пакета
.
Смотрите также
linux-pam.org
- сайт проекта
Understanding and configuring PAM
- вводная статья