PAM (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи PAM. Дата последней синхронизации: 22 июня 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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_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)
https://pamtester.sourceforge.net/ || pamtesterAUR

Хотя в AUR есть тег PAM, не все доступные пакеты его содержат. Поэтому может понадобиться поиск по описанию пакета.

Смотрите также