Как настроить и использовать PAM в Linux |

Как настроить и использовать PAM в Linux

Мануал

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.

Если у вас есть какие-либо вопросы или комментарии, используйте форму обратной связи ниже.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. Dmitry

    приложений в системе Linux.

    Это мощный, но очень сложный для понимания и использования.

    В этой статье мы объяснили

    Предложение не достроено.

    Ответить
    1. cryptoparty автор

      поправили

      Ответить