Linux-PAM (сокращение от Pluggable Authentication Modules, которое произошло от архитектуры Unix-PAM) – это мощный набор общих библиотек, используемых для динамической аутентификации пользователя в приложениях (или службах) в системе Linux.
Он объединяет несколько низкоуровневых модулей аутентификации в API высокого уровня, который обеспечивает поддержку динамической аутентификации для приложений.
Это позволяет разработчикам писать приложения, требующие аутентификации, независимо от базовой системы аутентификации.
Многие современные дистрибутивы Linux по умолчанию поддерживают Linux-PAM (в дальнейшем именуемый «PAM»).
В этой статье мы расскажем, как настроить расширенный PAM в системах Ubuntu и CentOS.
Прежде чем мы продолжим, обратите внимание, что:
Как системный администратор, самое важное – понять, как конфигурационные файлы PAM определяют соединение между приложениями (службами) и подключаемыми модулями аутентификации (PAM), которые выполняют реальные задачи аутентификации.
Вам не обязательно понимать внутреннюю работу PAM.
PAM может серьезно изменить безопасность вашей системы Linux.
Ошибочная конфигурация может отключить доступ к вашей системе частично или полностью.
Например, случайное удаление файла (ов) конфигурации в /etc/pam.d/* и / или /etc/pam.conf может заблокировать вас в вашей собственной системе!
Как проверить программу на работу с PAM
Чтобы использовать PAM, приложение / программа должны быть «осведомлены о PAM»; он должен быть написан и скомпилирован специально для использования PAM.
Чтобы узнать, является ли программа «осведомленной о PAM» или нет, проверьте, скомпилирована ли она с библиотекой PAM с помощью команды ldd.
Например, sshd:
$ sudo ldd /usr/sbin/sshd | grep libpam.so libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007effddbe2000)
Как настроить PAM в Linux
Основной файл конфигурации для PAM – это /etc/pam.conf, а каталог /etc/pam.d/ содержит файлы конфигурации PAM для каждого приложения / службы, поддерживающих PAM.
PAM будет игнорировать файл, если каталог существует.
Синтаксис основного файла конфигурации выглядит следующим образом.
Файл состоит из списка правил, написанных в одной строке (вы можете расширить правила с помощью escape-символа «\»), а комментариям предшествуют метки «#» и они распространяются на следующий конец строки.
Формат каждого правила представляет собой набор токенов, разделенных пробелами (первые три не чувствительны к регистру).
Мы объясним эти токены в следующих разделах.
service type control-flag module module-arguments
где:
- service: фактическое название приложения.
- type: тип модуля / контекст / интерфейс.
- control-flag: указывает на поведение PAM-API, если модуль не может выполнить свою задачу аутентификации.
- module: абсолютное имя файла или относительный путь PAM.
- module-argumetns: список токенов для управления поведением модуля.
Синтаксис каждого файла в /etc/pam.d/ аналогичен синтаксису основного файла и состоит из строк следующего вида:
type control-flag module module-arguments
Это пример определения правила (без аргументов модуля), найденного в файле /etc/pam.d/sshd, который запрещает вход без полномочий root при наличии /etc/nologin:
account required pam_nologin.so
Понимание групп управления PAM и контрольных флагов
Задачи аутентификации PAM разделены на четыре независимые группы управления.
Эти группы управляют различными аспектами типичного запроса пользователя на ограниченный сервис.
Модуль связан с одним из этих типов групп управления:
- account: предоставлять услуги для проверки учетной записи: срок действия пароля пользователя истек ?; разрешен ли этому пользователю доступ к запрашиваемой услуге?
- authentication: аутентификация пользователя и настройка учетных данных пользователя.
- password: отвечают за обновление пользовательских паролей и работают вместе с модулями аутентификации.
- session: управление действиями, выполненными в начале сеанса и в конце сеанса.
Загружаемые объектные файлы PAM (модули) должны находиться в следующем каталоге: /lib/security / или /lib64/security в зависимости от архитектуры.
Поддерживаемые флаги управления:
- include
- substack
Как ограничить root-доступ к SSH-сервису через PAM
В качестве примера, мы настроим, как использовать PAM для отключения доступа пользователя root к системе через SSH и программы входа в систему.
Здесь мы хотим отключить доступ пользователя root к системе, ограничив доступ к службам входа и sshd.
Мы можем использовать модуль /lib/security/pam_listfile.so, который предлагает большую гибкость в ограничении привилегий определенных учетных записей.
Откройте и отредактируйте файл для целевой службы в каталоге /etc/pam.d/, как показано ниже:
$ sudo vim /etc/pam.d/sshd или $ sudo vim /etc/pam.d/login
Добавьте это правило в оба файла.
auth required pam_listfile.so \ onerr=succeed item=user sense=deny file=/etc/ssh/deniedusers
Объяснение токенов в приведенном выше правиле:
- auth: тип модуля (или контекст).
- required: это управляющий флаг, который означает, что если модуль используется, он должен пройти, иначе общий результат будет неудачным, независимо от состояния других модулей.
- pam_listfile.so: это модуль, который предоставляет способ запретить или разрешить услуги на основе произвольного файла.
- onerr = успешно: аргумент модуля.
- item = user: module аргумент, который указывает, что указано в файле и должно быть проверено.
- sense = deny: аргумент модуля, который определяет действие, которое нужно предпринять, если оно найдено в файле, если элемент НЕ найден в файле, то запрашивается противоположное действие.
- file = /etc/ssh/deniedusers: аргумент модуля, который указывает файл, содержащий один элемент в строке.
Далее нам нужно создать файл /etc/ssh/ deniedusers и добавить в него имя root:
$ sudo vim /etc/ssh/deniedusers
Сохраните изменения и закройте файл, затем установите для него необходимые разрешения:
$ sudo chmod 600 /etc/ssh/deniedusers
Отныне вышеприведенное правило будет указывать PAM обратиться к файлу /etc/ssh/deniedusers и запретить доступ к SSH и службам входа для любого пользователя в списке.
Резюме
PAM – это мощный высокоуровневый API, который позволяет программам, основанным на аутентификации, проверять подлинность пользователей для приложений в системе Linux.
Это мощный, но очень сложный для понимания и использования инструмент.
В этой статье мы объяснили, как настроить расширенные функции PAM в Ubuntu и CentOS.
Если у вас есть какие-либо вопросы или комментарии, используйте форму обратной связи ниже.
приложений в системе Linux.
Это мощный, но очень сложный для понимания и использования.
В этой статье мы объяснили
Предложение не достроено.
поправили