Jump to content
From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи 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 authentication#NSS and PAM[ссылка недействительна: раздел не найден]

  статья об интеграции 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/ || pamtesterAUR

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

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

- linux-pam.org - сайт проекта
- Understanding and configuring PAM - вводная статья

Categories:

- Kernel (Русский)
- Authentication (Русский)

Hidden category:

- Pages with broken section links