Что такое Linux?

Обновлено: 05.07.2024

Linux использует PAM (подключаемые модули аутентификации) в процессе аутентификации в качестве промежуточного уровня между пользователем и приложением. Модули PAM доступны для всей системы, поэтому их может запрашивать любое приложение. В этой главе описывается, как работает модульный механизм аутентификации и как он настраивается.

Системные администраторы и программисты часто хотят ограничить доступ к определенным частям системы или ограничить использование определенных функций приложения. Без PAM приложения необходимо адаптировать каждый раз, когда вводится новый механизм аутентификации, такой как LDAP, Samba или Kerberos. Однако этот процесс занимает много времени и подвержен ошибкам. Один из способов избежать этих недостатков — отделить приложения от механизма аутентификации и делегировать аутентификацию модулям, управляемым централизованно. Всякий раз, когда требуется новая схема аутентификации, достаточно адаптировать или написать подходящий модуль PAM для использования рассматриваемой программой.

Концепция PAM состоит из:

Модули PAM , представляющие собой набор общих библиотек для определенного механизма аутентификации.

стек модулей, состоящий из одного или нескольких модулей PAM.

Поддерживающая PAM служба, для которой требуется аутентификация с использованием стека модулей или модулей PAM. Обычно служба — это знакомое имя соответствующего приложения, например, логин или su. Имя службы other является зарезервированным словом для правил по умолчанию.

Аргументы модуля , с помощью которых можно повлиять на выполнение одного модуля PAM.

Механизм, оценивающий каждый результат выполнения одного модуля PAM. Положительное значение запускает следующий модуль PAM. То, как обрабатываются отрицательные значения, зависит от конфигурации: от «никакого влияния, продолжить» до «немедленно прекратить» и любые промежуточные значения являются допустимыми вариантами.

PAM можно настроить двумя способами:

Конфигурация каждой службы хранится в файле /etc/pam.conf. Однако из соображений обслуживания и удобства использования эта схема конфигурации не используется в SUSE Linux Enterprise Server.

Конфигурация на основе каталога ( /etc/pam.d/ )

Каждая служба (или программа), использующая механизм PAM, имеет собственный файл конфигурации в каталоге /etc/pam.d/. Например, службу для sshd можно найти в файле /etc/pam.d/sshd.

Файлы в /etc/pam.d/ определяют модули PAM, используемые для аутентификации. Каждый файл состоит из строк, определяющих службу, и каждая строка состоит максимум из четырех компонентов:

Компоненты имеют следующее значение:

Объявляет тип службы. Модули PAM обрабатываются как стеки. Разные типы модулей имеют разное назначение. Например, один модуль проверяет пароль, другой проверяет расположение, из которого осуществляется доступ к системе, а третий считывает пользовательские настройки. PAM знает о четырех различных типах модулей:

Проверьте подлинность пользователя, традиционно запрашивая пароль. Однако этого также можно добиться с помощью чип-карты или биометрических данных (например, отпечатков пальцев или сканирования радужной оболочки глаза).

Модули этого типа проверяют, есть ли у пользователя общее разрешение на использование запрашиваемой службы. Например, такая проверка должна быть выполнена, чтобы гарантировать, что никто не сможет войти в систему с именем пользователя просроченной учетной записи.

Целью модуля этого типа является возможность изменения токена аутентификации. Обычно это пароль.

Модули этого типа отвечают за управление и настройку сеансов пользователей. Они запускаются до и после аутентификации для регистрации попыток входа в систему и настройки конкретной среды пользователя (почтовые учетные записи, домашний каталог, системные ограничения и т. д.).

Указывает поведение модуля PAM. Каждый модуль может иметь следующие управляющие флаги:

Модуль с этим флагом должен быть успешно обработан, прежде чем можно будет продолжить аутентификацию. После отказа модуля с требуемым флагом все остальные модули с таким же флагом обрабатываются до того, как пользователь получит сообщение о неудачной попытке аутентификации.

Модули с этим флагом также должны быть успешно обработаны, почти так же, как и модули с требуемым флагом. Однако в случае сбоя модуль с этим флагом немедленно сообщает пользователю, и дальнейшие модули не обрабатываются. В случае успеха впоследствии обрабатываются другие модули, как и любые модули с требуемым флагом. Флаг requisite можно использовать в качестве базового фильтра, проверяющего наличие определенных условий, необходимых для корректной аутентификации.

После того, как модуль с этим флагом успешно обработан, запрашивающее приложение немедленно получает сообщение об успехе, и никакие другие модули не обрабатываются, при условии, что ранее не было отказа модуля с требуемым флагом.Сбой модуля с достаточным флагом не имеет прямых последствий в том смысле, что все последующие модули обрабатываются в соответствующем порядке.

Отказ или успех модуля с этим флагом не имеет прямых последствий. Это может быть полезно для модулей, предназначенных только для отображения сообщения (например, чтобы сообщить пользователю о получении почты) без каких-либо дополнительных действий.

Если указан этот флаг, файл, указанный в качестве аргумента, вставляется в это место.

Содержит полное имя файла модуля PAM. Его не нужно указывать явно, если модуль находится в каталоге по умолчанию /lib/security (для всех 64-разрядных платформ, поддерживаемых SUSE® Linux Enterprise Server, это каталог /lib64/security).

Содержит разделенный пробелом список параметров, влияющих на поведение модуля PAM, например debug (включает отладку) или nullok (позволяет использовать пустые пароли).

Кроме того, в /etc/security есть глобальные файлы конфигурации для модулей PAM, которые определяют точное поведение этих модулей (примеры включают pam_env.conf и time.conf). Каждое приложение, использующее модуль PAM, фактически вызывает набор функций PAM, которые затем обрабатывают информацию в различных файлах конфигурации и возвращают результат запрашивающему приложению.

Чтобы упростить создание и обслуживание модулей PAM, были введены общие файлы конфигурации по умолчанию для типов модулей аутентификации, учетной записи, пароля и сеанса. Они извлекаются из конфигурации PAM каждого приложения. Таким образом, обновления глобальных модулей конфигурации PAM в common-* распространяются на все файлы конфигурации PAM, и администратору не требуется обновлять каждый отдельный файл конфигурации PAM.

Глобальные файлы конфигурации PAM поддерживаются с помощью инструмента pam-config. Этот инструмент автоматически добавляет новые модули в конфигурацию, изменяет конфигурацию существующих или удаляет модули (или опции) из конфигураций. Ручное вмешательство в поддержку конфигураций PAM сведено к минимуму или больше не требуется.

Примечание: 64-разрядные и 32-разрядные смешанные установки

При использовании 64-разрядной операционной системы можно также включить среду выполнения для 32-разрядных приложений. В этом случае убедитесь, что вы также установили 32-разрядную версию модулей PAM.

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:

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

Основным файлом конфигурации для PAM является /etc/pam.conf, а каталог /etc/pam.d/ содержит файлы конфигурации PAM для каждого приложения/службы, поддерживающих PAM. PAM проигнорирует файл, если каталог существует.

Формат каждого правила представляет собой набор токенов, разделенных пробелами (первые три регистронезависимы). Мы объясним эти токены в следующих разделах.

  • service: фактическое имя приложения.
  • type: тип/контекст/интерфейс модуля.
  • control-flag: указывает поведение PAM-API, если модуль не может успешно выполнить свою задачу аутентификации.
  • модуль: абсолютное имя файла или относительный путь к PAM.
  • module-arguments: разделенный пробелами список токенов для управления поведением модуля.

Синтаксис каждого файла в /etc/pam.d/ аналогичен синтаксису основного файла и состоит из строк следующего вида:

Это пример определения правила (без аргументов модуля), найденного в файле /etc/pam.d/sshd, которое запрещает вход в систему без полномочий root, если существует /etc/nologin:

Понимание групп управления PAM и контрольных флагов

Задачи проверки подлинности PAM разделены на четыре независимые группы управления. Эти группы управляют различными аспектами типичного запроса пользователя на услугу с ограниченным доступом.

Модуль связан с одним из следующих типов групп управления:

  • учетная запись: предоставление услуг по проверке учетной записи: срок действия пароля пользователя истек?; разрешен ли этому пользователю доступ к запрошенной службе?.
  • аутентификация: аутентификация пользователя и настройка учетных данных пользователя.
  • пароль: отвечают за обновление паролей пользователей и работают вместе с модулями аутентификации.
  • сеанс: управление действиями, выполняемыми в начале и конце сеанса.

Загружаемые объектные файлы PAM (модули) должны находиться в следующем каталоге: /lib/security/ или /lib64/security в зависимости от архитектуры.

  • необходимое условие: сбой мгновенно возвращает управление приложению с указанием характера сбоя первого модуля.
  • обязательно: все эти модули должны успешно работать, чтобы libpam возвращал успешность приложению.
  • достаточный: при условии, что все предыдущие модули выполнены успешно, успех этого модуля приводит к немедленному и успешному возврату в приложение (сбой этого модуля игнорируется).
  • необязательно: успех или неудача этого модуля обычно не регистрируются.

Помимо приведенных выше ключевых слов, есть еще два допустимых управляющих флага:

  • include and substack: включить все строки данного типа из файла конфигурации, указанного в качестве аргумента для этого элемента управления.

Как ограничить корневой доступ к службе SSH через PAM

В качестве примера мы настроим, как использовать PAM для отключения доступа пользователя root к системе через SSH и программы входа в систему. Здесь мы хотим отключить доступ пользователя root к системе, ограничив доступ к службам входа и sshd.

Мы можем использовать модуль /lib/security/pam_listfile.so, который предлагает большую гибкость в ограничении привилегий определенных учетных записей. Откройте и отредактируйте файл целевой службы в каталоге /etc/pam.d/, как показано.

Добавьте это правило в оба файла.

Объяснение токенов в приведенном выше правиле:

  • auth: тип модуля (или контекст).
  • required: это контрольный флаг, который означает, что если модуль используется, он должен быть пройден, иначе общий результат будет неудовлетворительным, независимо от состояния других модулей.
  • pam_listfile.so: модуль, позволяющий запретить или разрешить услуги на основе произвольного файла.
  • onerr=succeed: аргумент модуля.
  • item=user: аргумент модуля, указывающий, что указано в файле и что следует проверять.
  • sense=deny: аргумент модуля, указывающий действие, которое следует предпринять, если он найден в файле. Если элемент НЕ найден в файле, запрашивается противоположное действие.
  • file=/etc/ssh/deniedusers: аргумент модуля, указывающий файл, содержащий по одному элементу в строке.

Далее нам нужно создать файл /etc/ssh/deniedusers и добавить в него имя root:

Сохраните изменения и закройте файл, затем установите для него необходимые разрешения:

С этого момента приведенное выше правило предписывает PAM обратиться к файлу /etc/ssh/deniedusers и отказать в доступе к SSH и службам входа для всех перечисленных пользователей.

Как настроить расширенный PAM в Linux

Чтобы написать более сложные правила PAM, вы можете использовать допустимые управляющие флаги в следующей форме:

Где valueN соответствует коду возврата из функции, вызванной в модуле, для которого определена строка. Поддерживаемые значения можно найти в интерактивном Руководстве администратора PAM. Специальное значение — это значение по умолчанию, которое подразумевает все значения N, не упомянутые явно.

ДействиеN может принимать одну из следующих форм:

  • обязательно: [success=ok new_authtok_reqd=ok ignore=ignore default=bad]
  • требование: [success=ok new_authtok_reqd=ok ignore=ignore default=die]
  • достаточно: [success=done new_authtok_reqd=done default=ignore]
  • необязательно: [success=ok new_authtok_reqd=ok default=ignore]

Ниже приведен пример из современной системы CentOS 7. Рассмотрим эти правила из PAM-файла /etc/pam.d/postlogin:

Вот еще один пример конфигурации из PAM-файла /etc/pam.d/smartcard-auth:

Дополнительную информацию см. на справочной странице pam.d:

Наконец, подробное описание синтаксиса файла конфигурации и всех модулей PAM можно найти в документации для Linux-PAM.

Обзор

PAM — это мощный высокоуровневый API, который позволяет программам, использующим аутентификацию, аутентифицировать пользователей в приложениях в системе Linux. Это мощный инструмент, но очень сложный для понимания и использования.

В этой статье мы объяснили, как настроить расширенные функции PAM в Ubuntu и CentOS. Если у вас есть какие-либо вопросы или комментарии, которыми вы хотите поделиться, воспользуйтесь формой обратной связи ниже.

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Узнайте, как подключаемые модули аутентификации помогают приложениям правильно использовать учетные записи пользователей в Linux.

Опубликовано: 22 июля 2020 г. | Сьюзен Лаубер

Вилки

Pluggable Authentication Modules (PAM) существуют с 1997 года. Меня учили, что PAM произошел от Solaris от Sun, и, похоже, первое корпоративное использование и популяризация произошли именно там. Однако, согласно статье 1997 года, которую я нашел, первой полной реализацией было развертывание Linux-PAM. Статья по-прежнему доступна в Linux Journal. Основная предпосылка и реализация не изменились с тех пор. Есть несколько новых ключевых слов и много новых модулей, но в целом процесс такой же, как и 20 лет назад.

Дополнительные ресурсы по Linux

Как указывает A в PAM, PAM предназначен для аутентификации. В большинстве случаев, когда вы входите в систему через консоль или через сеть с помощью SSH или Cockpit, задействуется PAM. Неважно, хранятся ли учетные записи пользователей локально или централизованно. Несмотря на то, что он используется, напрямую манипулировать файлами конфигурации PAM не принято. Другие утилиты сделают это за вас. Многие изменения вносятся при установке, например, при установке RPM sssd или с помощью утилиты ipa-client-install. Наиболее распространенные дополнительные конфигурации могут быть обработаны с помощью authconfig (RHEL7 и более ранние версии) или authselect (RHEL8) или даже через веб-интерфейс Cockpit. Большинство администраторов не узнают о файлах конфигурации PAM, пока не займутся вопросами расширенной проверки подлинности и безопасности.

Что мы получаем с PAM?

PAM отделяет стандартные и специализированные задачи аутентификации от приложений. Такие программы, как login , gdm , sshd , ftpd и многие другие, хотят знать, что пользователь является тем, за кого себя выдает, но есть много способов сделать это. Пользователь может указать имя пользователя и учетные данные пароля, которые можно хранить локально или удаленно с помощью LDAP или Kerberos. Пользователь также может предоставить отпечаток пальца или сертификат в качестве учетных данных. Было бы болезненно просить каждого разработчика приложения переписывать проверки аутентификации для каждого нового метода. Вызов библиотек PAM оставляет проверки экспертам по аутентификации. PAM является подключаемым, поскольку мы можем запускать разные тесты в разных приложениях, и модульным, поскольку мы можем добавлять новые методы с новыми библиотеками.

PAM

Давайте рассмотрим общие действия, предпринимаемые при входе локально определенного пользователя в текстовую консоль:

  • Приложение для входа в систему запрашивает имя пользователя и пароль, а затем делает вызов проверки подлинности libpam, чтобы спросить: "Этот пользователь тот, за кого себя выдает?" Модуль pam_unix отвечает за проверку аутентификации локальной учетной записи. Другие модули также могут быть проверены, и в конечном итоге результат будет передан обратно в процесс входа в систему.
  • Затем процесс входа в систему спрашивает: "Разрешено ли этому пользователю подключение?", а затем делает вызов учетной записи к libpam. Модуль pam_unix проверяет, например, не истек ли срок действия пароля. Другие модули могут проверять списки управления доступом на основе хоста или времени. Общий ответ возвращается в процесс.
  • Если срок действия пароля истек, приложение отвечает. Некоторые приложения просто не могут войти в систему пользователя. В процессе входа пользователю будет предложено ввести новый пароль.
  • Чтобы проверить пароль и записать его в нужное место, процесс входа в систему вызывает пароль к libpam . Модуль pam_unix записывает в локальный теневой файл. Другие модули также могут вызываться для проверки надежности пароля.
  • Если в этот момент процесс входа в систему продолжается, он готов к созданию сеанса. Сеансовый вызов libpam приводит к тому, что модуль pam_unix записывает временную метку входа в файл wtmp. Другие модули включают аутентификацию X11 или пользовательские контексты SELinux.
  • При выходе из системы, когда сеанс закрывается, можно выполнить еще один сеансовый вызов libpam. Это происходит, когда модуль pam_unix записывает отметку времени выхода из системы в файл wtmp.

У PAM много компонентов

Если вы вносите изменения в аутентификацию с помощью такой программы, как authconfig или authselect, и хотите посмотреть, что изменилось, вот несколько мест, где можно посмотреть:

/usr/lib64/security
Набор библиотек PAM, выполняющих различные проверки. У большинства этих модулей есть справочные страницы, объясняющие вариант использования и доступные параметры.

/etc/pam.d
Набор файлов конфигурации для приложений, вызывающих libpam . Эти файлы определяют, какие модули проверяются, с какими параметрами, в каком порядке и как обрабатывать результат. Эти файлы могут быть добавлены в систему при установке приложения и часто редактируются другими утилитами.

Поскольку все приложения выполняют несколько проверок, эти файлы могут также содержать операторы включения для вызова других файлов конфигурации в этом каталоге. Большинство общих модулей находятся в файле system-auth для локальной аутентификации и в файле password-auth для приложений, прослушивающих удаленные подключения.

/etc/security
Набор дополнительных файлов конфигурации для определенных модулей. Некоторые модули, такие как pam_access и pam_time, обеспечивают дополнительную детализацию проверок. Когда файл конфигурации приложения вызывает эти модули, проверки выполняются с использованием дополнительной информации из соответствующих дополнительных файлов конфигурации. Другие модули, такие как pam_pwquality , упрощают изменение конфигурации другими утилитами, помещая все параметры в отдельный файл, а не в строку модуля в файле конфигурации приложения.

/var/log/secure
Большинство ошибок безопасности и аутентификации регистрируются в этом файле журнала. Разрешения настроены для этого файла, чтобы ограничить доступ.

man pam
Эта справочная страница описывает весь процесс, включая типы вызовов и список задействованных файлов.

man pam.conf
Эта справочная страница описывает общий формат и определяет ключевые слова и поля для файлов конфигурации pam.d.

man -k pam_
Этот поиск справочных страниц содержит список страниц, доступных для установленных модулей.

Подведение итогов

PAM обеспечивает гораздо более надежную среду аутентификации, чем могут обеспечить сервисы для отдельных приложений. Он используется в Linux уже много-много лет и используется почти во всех процессах идентификации пользователей.

В следующей статье я расскажу о формате файлов конфигурации /etc/pam.d.

Подключаемые модули аутентификации Linux (PAM) обеспечивают основу для общесистемной аутентификации пользователей. Цитировать проект:

PAM позволяет разрабатывать программы, не зависящие от схемы аутентификации. Эти программы нуждаются в «модулях аутентификации», которые должны быть подключены к ним во время выполнения, чтобы работать. Какой модуль проверки подлинности должен быть присоединен, зависит от настройки локальной системы и остается на усмотрение локального системного администратора.

В этой статье объясняются базовые настройки Arch Linux по умолчанию для PAM для аутентификации локальных и удаленных пользователей. Применение изменений к значениям по умолчанию рассматривается в тематических статьях с перекрестными ссылками.

Содержание

Установка

Пакет pam зависит от базового метапакета и поэтому обычно устанавливается в системе Arch. Модули PAM устанавливаются исключительно в /usr/lib/security.

Конфигурация

Параметры безопасности

Путь /etc/security содержит специфичную для системы конфигурацию переменных, предлагаемых методами аутентификации. Базовая установка заполняет его исходными файлами конфигурации по умолчанию.

Базовый стек PAM

Путь /etc/pam.d/ является эксклюзивным для конфигурации PAM, чтобы связать приложения со схемами аутентификации отдельных систем. При установке системной базы она заполняется:

  • пакет pambase, который содержит базовый стек конфигурации PAM для Arch Linux, который будет использоваться приложениями, и
  • другие базовые пакеты. Например, util-linux добавляет конфигурацию для центрального логина и других программ, а пакет shadow добавляет настройки Arch Linux по умолчанию для защиты и изменения пользовательской базы данных (см. Пользователи и группы).

Различные файлы конфигурации базовой установки связаны друг с другом и складываются во время выполнения. Например, при входе локального пользователя приложение login использует политику системного локального входа, которая, в свою очередь, использует другие:

Для другого приложения может применяться другой путь.Например, openssh устанавливает свою политику PAM для sshd:

Следовательно, выбор файла конфигурации в стеке имеет значение. В приведенном выше примере может потребоваться специальный метод аутентификации только для sshd или для всех удаленных входов в систему путем изменения system-remote-login ; оба изменения не повлияют на локальные входы в систему. Применение изменения к system-login или system-auth вместо этого повлияет на локальный и удаленный вход в систему.

Как и в примере с sshd , любое приложение, поддерживающее pam, должно установить свою политику в /etc/pam.d, чтобы надлежащим образом интегрироваться и полагаться на стек PAM. Если приложению не удается это сделать, применяется политика по умолчанию /etc/pam.d/other для отказа и регистрации предупреждения.

Совет. PAM динамически компонуется во время выполнения. Например: приложение login поддерживает pam и поэтому должно иметь политику.

Страницы руководства по пакету PAM pam(8) и pam.d(5) описывают стандартизированное содержимое файлов конфигурации. В частности, они объясняют четыре группы PAM: учетная запись, аутентификация, пароль и управление сеансом, а также управляющие значения, которые можно использовать для настройки стека и поведения модулей.

Кроме того, в /usr/share/doc/Linux-PAM/index.html установлена ​​обширная документация, которая, помимо различных руководств, содержит доступные для просмотра справочные страницы для каждого из стандартных модулей.

Предупреждение. Изменения в конфигурации PAM существенно влияют на аутентификацию пользователей. Ошибочные изменения могут привести к тому, что ни один пользователь не сможет войти в систему или все пользователи смогут войти в систему.

Совет: изменения не вступают в силу для уже аутентифицированных пользователей, способ работы с PAM заключается в том, чтобы войти в систему предпочтительно локально на тестовом компьютере и разрабатывать, поддерживая постоянный сеанс, проверяя результаты от другого пользователя на другой консоли.< /p>

Примеры

Фактическая точность этой статьи или раздела оспаривается.

Два коротких примера, иллюстрирующих приведенное выше предупреждение.

Во-первых, мы берем следующие две строки:

Компонент проверки подлинности pam_unix.so выполняет задачу проверки учетных данных пользователя (пароля). По умолчанию этот модуль не разрешает пользователю доступ к службе, если его официальный пароль пуст.

— для последнего используется pam_permit.so. Достаточно просто поменять местами обязательные и необязательные контрольные значения для обеих строк, чтобы отключить аутентификацию по паролю, т. е. любой пользователь может войти в систему без ввода пароля.

Во-вторых, в качестве противоположного примера, для настройки pam_nologin.so по умолчанию в /etc/pam.d/login создается следующий файл:

приводит к тому, что ни один пользователь, кроме root, не может войти в систему (если вход в систему root разрешен, еще одно значение по умолчанию для Arch Linux). Чтобы снова разрешить вход в систему, удалите файл. Возможно, из консоли, с помощью которой вы его создали.

Инструкции по настройке

В этом разделе представлен обзор контента, в котором подробно рассказывается, как применять изменения к конфигурации PAM и как интегрировать специальные новые модули PAM в стек PAM. Обратите внимание, что справочные страницы для модулей обычно можно открыть, убрав расширение .so.

Настройка параметров безопасности

В следующих разделах описаны примеры изменения конфигурации параметра PAM по умолчанию:

Настройка стека и модуля PAM

Дополнительные пакеты PAM

Помимо упомянутых пакетов, пользовательский репозиторий Arch содержит ряд дополнительных модулей и инструментов PAM.

  • libx32_pam — библиотека Arch Linux PAM x32 ABI
  • Pamtester — программа для тестирования подключаемых модулей аутентификации (PAM).

Обратите внимание, что в AUR есть тег ключевого слова для PAM, но не все доступные пакеты обновлены для его включения. Следовательно, может потребоваться поиск по описанию пакета.

PAM означает подключаемые модули аутентификации, которые обеспечивают поддержку динамической аутентификации для приложений и служб в операционной системе Linux. Это механизм безопасности, который обеспечивает защиту с помощью PAM вместо запроса имени пользователя и пароля. PAM отвечает за аутентификацию запускаемых файлов. Каждое приложение состоит из нескольких настраиваемых файлов, и каждый состоит из стека из нескольких модулей. Затем эти модули запускаются сверху вниз, а затем PAM формирует ответ, независимо от того, успешно он или нет, на основе результата.

PAM значительно упрощает работу администраторов и разработчиков, поскольку вносит изменения в файл исходного кода самостоятельно и требует минимального вмешательства. Таким образом, PAM также можно определить как обобщенный интерфейс прикладного программирования для служб, связанных с аутентификацией. Вместо того, чтобы переписывать код, он модифицируется сам по себе.

Интерфейсы модуля PAM

Auth: это модуль, отвечающий за аутентификацию; он проверяет пароль.
Учетная запись: после того, как пользователь прошел аутентификацию с правильными учетными данными, раздел учетной записи проверяет действительность учетной записи, например, срок действия или ограничения времени входа в систему и т. д.
Пароль: используется только для изменения пароля.
Сеанс: он управляет сеансами, содержит учет активности пользователя, создание почтовых ящиков, создает домашний каталог пользователя и т. д.

Учебник


  1. Чтобы проверить, использует ли ваше приложение LINUX-PAM, используйте следующую команду в своем терминале:
  2. Это каталог, содержащий другие службы, поддерживающие PAM. Можно



    проверьте содержимое, выполнив команду $ ls внутри каталога pam, как показано на снимке экрана выше.

    Если вы не найдете sshd в качестве службы, поддерживающей PAM, вам необходимо установить сервер sshd.

    SSH (или безопасная оболочка) – это зашифрованный сетевой инструмент, позволяющий компьютерам/пользователям различных типов безопасно входить в систему на различных компьютерах удаленно по сети. Вам необходимо установить пакет openssh-server, что вы можете сделать, выполнив следующую команду в своем терминале.

    Все файлы будут установлены, а затем вы сможете повторно войти в каталог pam, проверить наличие служб и увидеть, что sshd добавлен.


    Если вы хотите выйти из редактора vim и не можете этого сделать, одновременно нажмите клавишу Esc и двоеточие (:), чтобы перейти в режим вставки. После двоеточия введите q и нажмите Enter. Здесь q означает выход.

    Вы можете прокрутить вниз и увидеть все модули, которые были описаны ранее, с такими терминами, как обязательный, включаемый, обязательный и т. д. Что это такое?

    Флаги управления PAM

    1. Обязательно: должно пройти, чтобы результат был успешным. Это необходимость, без которой нельзя обойтись.
    2. Необходимо: должно быть выполнено, в противном случае дальнейшие модули запускаться не будут.
    3. Достаточно: в случае сбоя игнорируется. Если этот модуль передан, дальнейшие флаги проверяться не будут.
    4. Необязательно: часто игнорируется. Он используется только тогда, когда в интерфейсе есть только один модуль.
    5. Включить: извлекает все строки из других файлов.

    Теперь общее правило записи основной конфигурации выглядит следующим образом: service type control-flag module module-arguments

    1. СЛУЖБА: это имя приложения. Предположим, ваше приложение называется NUCUTA.
    2. ТИП: тип используемого модуля. Предположим, что здесь используется модуль аутентификации.
    3. CONTROL-FLAG: это тип используемого управляющего флага, один из пяти описанных выше типов.
    4. MODULE: абсолютное имя файла или относительный путь к PAM.
    5. MODULE-ARGUMENTS: это отдельный список токенов для управления поведением модуля.

    Предположим, вы хотите отключить доступ пользователя root к любой системе через SSH, вам нужно ограничить доступ к службе sshd. Более того, доступ к службам входа должен быть контролируемым.

    Существует несколько модулей, которые ограничивают доступ и предоставляют привилегии, но мы можем использовать модуль /lib/security/pam_listfile.so, который является чрезвычайно гибким и имеет множество функций и привилегий.

    1. Откройте и отредактируйте файл/приложение в редакторе vim для целевой службы, сначала войдя в каталог /etc/pam.d/.

    Следующее правило должно быть добавлено в оба файла:

    требуется авторизация pam_listfile.so\ onerr =succeed item =user sense =deny file = /etc/ssh/denyusers

    Где auth – это модуль аутентификации, required – управляющий флаг, модуль pam_listfile.so дает привилегии отказа файлам, onerr=succeed – аргумент модуля, item=user – еще один аргумент модуля, определяющий списки файлов и содержимое должно быть проверено, sense=deny — это еще один аргумент модуля, который будет использоваться, если элемент найден в файле, и file=/etc/ssh/deniedusers, указывающий тип файла, который содержит только один элемент в строке.

      Затем создайте еще один файл /etc/ssh/deniedusers и добавьте в него имя root. Это можно сделать, выполнив команду:

    1. Затем сохраните изменения, добавив к нему корневое имя, и закройте файл.
    2. Используйте команду chmod commond, чтобы изменить режим доступа к файлу. Синтаксис команды chmod:

    Здесь ссылки используются для указания списка букв, который указывает, кому давать разрешение.

    Например, здесь вы можете написать команду:

    Это работает простым способом. Вы указываете пользователей, которым запрещен доступ к вашему файлу, в файле /etc/ssh/deniedusers и устанавливаете режим доступа для файла с помощью команды chmod.С этого момента при попытке доступа к файлу в соответствии с этим правилом PAM будет отказывать всем пользователям, перечисленным в файле /etc/ssh/deniedusers, в любом доступе к файлу.

    Заключение

    PAM обеспечивает поддержку динамической проверки подлинности для приложений и служб в операционной системе Linux. В этом руководстве указывается ряд флагов, которые можно использовать для определения результата модуля. Это удобно и надежно. для пользователей, чем традиционный пароль и механизм аутентификации имени пользователя, поэтому PAM часто используется во многих защищенных системах.

    Об авторе

    Нукута

    NUCUTA – это блог о технологиях, в котором освещаются различные темы, связанные с компьютерным оборудованием, программным обеспечением, мобильными телефонами, гаджетами и многим другим, включая, помимо прочего, учебные пособия, обзоры и темы по управлению бизнесом, финансам, бухгалтерскому учету, самосовершенствованию и технологиям. новости.

    Читайте также: