linux pam что такое

Краткое описание некоторых аутентификационных модулей Linux-PAM

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

Существует множество модулей аутентификации, как самописных так и стандартных, ниже представлены самые распространенные из них.

pam_permit
В любом режиме всегда возвращает успех.

pam_deny
В любом режиме всегда возвращает ошибку.

pam_unix
Используется в режимах аутентификации пользователей, управления учетными записями, управления паролями и управления пользовательскими сеансами.

Реализует базовую функциональность Unix-систем в этом отношении.

В режиме аутентификации

проверяет действительность пользователя по предоставленному паролю. Информацию о пароле пользователя ищет в соответствии с алгоритмом, заданным в конфигурационном файле /etc/nssswitch.conf (в файлах /etc/passwd, /etc/shadow и/или в базе данных NIS-домена).
Некоторые из возможных опций:
— nullok: разрешать аутентификацию пользователей с пустым паролем (по умолчанию использование пустых паролей не разрешается).

В режиме управления учетными записями

проверяет состояние учетной записи и пароль, анализируя содержание файла /etc/shadow. Если срок действия пароля истек, может предложить (или выдвинуть требование) пользователю изменить пароль.

В режиме управления паролями

разрешает изменить пароль пользователя. Пароли при этом может искать/сохранять в файлах /etc/passwd, /etc/shadow или в базе данных NIS-домена – в зависимости от опций (по умолчанию использует файл /etc/passwd). Может использовать для шифрования паролей традиционный для UNIX-систем алгоритм (базируется на стандарте 3DES, доступный через функцию crypt(3), является алгоритмом по умолчанию), расширенную версию традиционного алгоритма (разрешает шифровать более чем 8 первых символов пароля; применяется, если pam_unix вызывается с опцией bigcrypt), алгоритм MD5 (применяется, если pam_unix вызывается с опцией md5). Может запоминать заданное количество (зашифрованных по алгоритму MD5) паролей каждого пользователя (в файле /etc/security/opasswd; количество паролей для запоминания задается опцией remember (по умолчанию это количество равняется 0)). Последняя возможность используется такими модулями, как pam_cracklib, для проверки степени новизны паролей, которые вводятся пользователем.

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

В режиме управления сеансами

перед началом и завершением пользовательской сессии регистрирует через функцию syslog(3) имя пользователя и наименование службы.

pam_stack
Используется в любом режиме. Разрешает из стека одной службы “вызвать” стек другой службы. Благодаря этому можно избежать дублирования записей в конфигурационном файле. Служба, стек которой необходимо вызвать, определяется через аргумент service.

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

pam_rootok
Используется только в режиме аутентификации пользователей. Предназначенный для использования в ситуациях, когда суперпользователь желает получать доступ к службе без введения пароля. Аутентификация проходит успешно, если и только если UID пользователя равняется 0.
Этот модуль не следует использовать для аутентификации пользователей серверами, которые запускаются суперпользователем или во время инициализации системы.

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

pam_wheel
Используется только в режиме аутентификации пользователей. Дает возможность получать полномочия суперпользователя только членам группы wheel (GID = 0).

pam_nologin
Используется только в режимах аутентификации пользователей и управления учетными записями.
В любом случае, если файл /etc/nologin существует, возвращается успех только для суперпользователя, при этом всем пользователям выводится содержание файла /etc/nologin.

pam_listfile
Используется только в режиме аутентификации пользователей.
Выполняет аутентификацию пользователя, базируясь на содержании произвольно заданного (текстового) файла.
Возможные опции:

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

pam_shells
Используется только в режиме аутентификации пользователей.
Аутентификация проходит успешно, если и только если командный интерпретатор пользователя обозначен в файле /etc/shells.

pam_securetty
Используется только в режиме аутентификации пользователей.
Сообщает об успехе аутентификации суперпользователя, только если он посылает запрос с «безопасного» терминала (список таких терминалов берется с файла /etc/securetty).

pam_rhosts_auth
Используется только в режиме аутентификации пользователей.
Аутентификация проходит успешно, если и только если узел, с которого присылается запрос, присутствует в перечне, который содержится в файле /etc/hosts.equiv, или пара «отдаленное имя пользователя — отдаленный узел» обозначена в файле

/.rhosts.
Это традиционный элемент работы таких служб, как rlogin, rsh.

pam_timestamp
Используется только в режимах аутентификации пользователей и управления сеансами.

В режиме аутентификации пользователей

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

В режиме управления сеансами

создает в своему кеше соответствующий файл.
Основные опции:

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

pam_console
Используется только в режимах аутентификации пользователей и управления сеансами.

В режиме аутентификации пользователей

возвращает успех только и если только запрос поступает из локальной консоли.

В режиме управления сеансами

дает возможность предоставлять пользователям, которые начинают локальный сеанс работы, дополнительные полномочия (а по завершению сеанса их забирать). Дополнительные полномочия формулируются как дополнительные права доступа к файлам и описываются в конфигурационном файле (/etc/security/console.perm по умолчанию) (на практике дело касается переопределения владельцев и списков контроля доступа к отдельным файлам устройств (таких, как /dev/cdrom, /dev/fd0)).

pam_env

Используется только в режиме аутентификации пользователей (и реагирует только на вызов pam_setcred(3) (который выполняется, по обыкновению, после успешной аутентификации пользователя)).

Выполняет инициализацию/деинициализацию отдельных переменных окружения. Перечень этих переменных и их значения задаются через конфигурационные файлы (по умолчанию, /etc/security/pam_env.conf и /etc/environment).

pam_limits
Используется только в режиме управления сеансами.

Разрешает установить ограничение на использование ресурсов, которые могут быть получены пользователем на протяжении сеанса. Перечень ограничений задается конфигурационным файлом (по умолчанию, /etc/security/limits.conf). На суперпользователя эти ограничения не распространяются.

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

pam_cracklib
Используется только в режиме управления паролями (а именно, для проверки прочности паролей, которые вводятся пользователями) в связке с другими модулями (которые должны выполнять собственно изменение пароля).

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

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

Источник

LXF99:Аутентификация

Подписка на печатную версию Весь 2015 год (12 номеров) Первое полугодие (6 номеров) Второе полугодие (6 номеров)Подписка на электронную версию Весь 2015 год (12 номеров) Первое полугодие (6 номеров) Второе полугодие (6 номеров)Подшивки старых номеров журнала (печатные версии) Весь 2014 год (12 номеров) Первое полугодие (6 номеров) Второе полугодие (6 номеров)

Содержание

Эксперименты c PAM

Вы можете и не подозревать о существовании аутентификации, потому что она «просто работает». А вот как она работает? Д-р Крис Браун расскажет.

PAM (Pluggable Authentication Modules — подключаемые модули аутентификации) — один из тех темных закоулков Linux, куда большинство пользователей заглянуть не решается. Я даже готов побиться об заклад, что большинство пользователей не знают, что это такое. Однако PAM — в сердце каждой программы, так или иначе связанной с аутентификацией. Добро пожаловать на экскурсию по PAM! Заходите в нашу научную лабораторию, выполните наши экспе рименты (горелка Бунзена не потребуется!), и вы увидите, что PAM предоставляет тонкий контроль над политикой безопасности.

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

Часть 1: Знакомимся с PAM

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

PAM — это каркас, помогающий приложениям выполнять то, что я называю «действиями, связанными с аутентификацией». PAM состоит из библиотеки (libpam) и набора модулей PAM, которые находятся в папке /lib/security и представляют собой динамически загружаемые библиотеки (.so). Каждый модуль служит для решения определенной задачи, и приложения, связанные с PAM, обычно используют стек из нескольких модулей. Общая архитектура показана на рис. 1. PAM определяет четыре типа действий, относящихся к аутентификации:

Для краткости в дальнейшем я буду называть эти действия «задачами PAM».

Какие программы используют PAM?

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

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

Преимущество PAM в том, что «действия, связанные с аутентификацией», не привязаны к приложению, которое их использует. Благодаря этому гораздо проще менять политику безопасности или добавлять новые механизмы аутентификации: достаточно просто перенастроить PAM. Раньше для этого могло потребоваться изменение исходного кода самих приложений. Стек модулей, с помощью которых каждое приложение с аутентификацией через PAM выполняет одно из четырех соответствующих действий, определяется в файле конфигурации приложения, расположенном в каталоге /etc/pam.d. Имя файла соответствует имени приложения: например, файл /etc/pam.d/sshd содержит настройки PAM для программы sshd. На рис. 2 показана одна из строк такого файла. Эта строка добавляет к стеку auth модуль pam_unix.so. При необходимости приложение может сформировать все четыре стека (по одному для каждого из типов действий PAM), однако для большинства приложений достаточно двух.

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

Итак, основная идея такова: когда приложению надо выполнить одно из действий PAM, оно обращается к библиотеке PAM. Затем библиотека по очереди вызывает все модули в этом стеке. Каждый модуль «делает свое дело» и возвращает библиотеке положительный или отрицательный результат. Библиотека объединяет результаты модулей в результат для стека в целом, который возвращается приложению. Способ объединения определяется управляющим флажком модуля, прописанным во втором поле строки в файле настроек. Возможные значения флажка:

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

если вывод похож на этот, программа использует PAM. Если вывод отсутствует – нет.

(Последние версии PAM поддерживают получение более подробного результата выполнения модуля, чем просто «выполнен/ошибка», и более сложный синтаксис для задания способа объединения отдельных результатов. Подробности можно найти на man-странице pam.conf, если она есть. Однако и этого простейшего отчета вполне достаточно.) В качестве управляющего флажка также может использоваться ключевое слово include. Эта ситуация немного отличается от других. Она предписывает PAM подключить некоторый предопределенный стек модулей (в терминах программирования это можно назвать вызовом подпрограммы). Это позволяет «вынести за скобку» наиболее общие действия PAM (например, общие стеки модулей), в отдельный файл. Например, в RHEL5 вы заметите, что во многих файлах конфигурации PAM подключен стек, определенный в файле system-auth. В Ubuntu 7.04 имеются четыре файла для аналогичной цели: common-auth, common-account, common-session и common-passwd. В Red Hat также есть своего рода «метамодуль» pam_stack, который выполняет стек модулей, определенных в отдельном файле.

Теперь, получив представление о том, как модули PAM связаны друг с другом, вы, возможно, захотите взглянуть на большую таблицу в конце этой статьи, где описаны модули, используемые чаще всего. Учтите, что некоторых модулей может не быть в вашем дистрибутиве, и, наоборот, вам могут попасться модули, которых нет в этой таблице. Поскольку Linux — открытая система и прочее, ребята понаписали всяких-разных модулей PAM. Некоторые ссылки можно найти на странице http://www.kernel.org/pub/linux/libs/pam/modules.html.

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

Возможно, вам придется немного покопаться, чтобы найти документацию на PAM, потому что в разных дистрибутивах она хранится в разных местах. Например, в RHEL5 man-страницы для модулей PAM входят в основной пакет PAM; в Ubuntu документация находится в каталоге /usr/share/doc/libpam-doc и является частью пакета libpam-doc, который нужно устанавливать отдельно. Если вы найдете файл под названием Linux-PAM System Administrators’ Guide, это отличное начало. Если локальной копии нет, ее можно скачать на странице http://kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_SAG.html.

Часть 2: Экспериментируем с PAM

Позволим всем пользователям переключаться в root без пароля через su.

Что делать: Замените все строки файла /etc/pam.d/su, относящиеся к стеку auth, единственной строкой:

Как проверить: Зайдите в систему как обычный пользователь и проверьте, что можете переключиться в root с помощью su без ввода пароля. Это может показаться рисковым, но все же менее опасно, чем разрешить пользователям сразу заходить в систему с привилегиями администратора. Например, вы можете зайти в систему как обычный пользователь, а затем выполнить команду

чтобы установить системное время (действие, требующее привилегий администратора).

Запретим всем пользователям использовать su

Что делать: Оставьте в файле /etc/pam.d/su только одну строку, относящуюся к стеку auth:

Как проверить: Зайдите в систему как обычный пользователь и убедитесь, что переключения в режим администратора не происходит: у вас даже не спрашивают пароль. Конечно, можно запретить su, и сняв права на выполнение файла самой программы. Хотя отключение su на первый взгляд повышает безопасность системы, на деле вы вынуждаете администратора всегда заходить в систему как root, вместо кратковременного переключения в root для действий с высшими привилегиями.

Разрешим su только пользователям из некоторой группы

Что делать: Для начала нам нужен хотя бы один пользователь в этой группе — назовем ее, например, wheel. Чтобы добавить пользователя chris в группу wheel, выполните следующую команду от имени администратора:

Теперь отредактируйте файл /etc/pam.d/su, чтобы стек auth выглядел следующим образом:

Как проверить: Зайдите в систему как chris (или как любой другой пользователь из группы wheel) и попробуйте использовать su. Будет запрошен пароль администратора, после чего должен открыться сеанс администратора. Теперь попробуйте зайти в систему под другим пользователем — не членом группы wheel, и сделать то же самое. Снова будет запрошен пароль администратора, но переключиться в сеанс root не удастся. Можете попробовать изменить управляющий флажок для модуля pam_wheel в requisite — для этого измените строку в файле /etc/pam.d/su:

Вопрос на засыпку: какое произойдет изменение? Проверьте себя. Ну что, начали понимать, как настройки PAM формируют политику безопасности?

Запретим вход в систему как root

Идея здесь в том, чтобы пользователи не могли войти в систему как администраторы: то есть зайти в систему придется как обычному пользователю, а затем переключиться в режим root с помощью su. (Предварительно убедитесь, что есть хотя бы один пользователь, имеющий на это право, не то вы заблокируете компьютер.) Нам нужно запретить вход как на виртуальные терминалы, так и на графический рабочий стол.

Что делать: Чтобы запретить вход на виртуальные терминалы, добавьте в файл /etc/pam/d/login строку

на верхушку стека auth (может быть, она уже есть там). Как мы уже видели, этот модуль запрещает вход в систему от имени root на терминалах, которых нет в списке /etc/securetty. Теперь мы можем очистить этот список с помощью пары команд:

(Обратите внимание, что пустой файл /etc/securetty и отсутствие этого файла — совсем не одно и то же. В первом случае запрещается вход под root на все терминалы, а во втором, наоборот, разрешается.) Далее, чтобы запретить вход от имени root в графический рабочий стол, добавьте ту же самую строку в стек auth в файле /etc/pam.d/gdm.

Как проверить: Попытайтесь зайти в систему как root (с правильным паролем) — и через виртуальный терминал, и через графический рабочий стол. Обе попытки должны потерпеть неудачу. Убедитесь, что вы можете зайти в систему как обычный пользователь. Обратите внимание, что если прибавить к этому Эксперимент 3, безопасность системы существенно повысится, потому что для получения доступа администратора придется сначала зайти в систему как пользователь из группы wheel, а затем открыть сеанс администратора через su. Даже пронюхав пароль администратора, взломщик не получит его привилегий.

Используем сложные пароли

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

linux pam что такое. Смотреть фото linux pam что такое. Смотреть картинку linux pam что такое. Картинка про linux pam что такое. Фото linux pam что такое

Приемлем ли пароль?

ПарольДлинаTипов символовОК?
monpiastoria121Да
LinuxFormat112Да
beld*Grob93Да
4Me+You74Да
splodgerat101Нет
Four+five92Нет †
gosH!!273Нет *
x4Z!44Нет

Что делать: В Red Hat для проверки длины паролей уже используется модуль pam_cracklib, вызываемый из файла system-auth. Нам просто нужно заменить строку pam_cracklib следующей строкой:

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

Как проверить: Попробуйте изменить свой пароль. Задавайте разные строки и в каждом случае подсчитывайте общее число символов и число типов символов, предполагая, что пароль должен быть приемлемым. Несколько примеров приведены во врезке «Допустим ли пароль?».

Запретим обычным пользователям выключать систему

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

Что делать: Откройте файл настроек PAM для команды halt (/etc/pam.d/halt). В моем Red Hat стек auth для команды halt выглядит так:

Измените его следующим образом:

Как проверить: Зайдите в систему как обычный пользователь и попробуйте остановить систему командой halt. У вас больше не должно этого получаться. Для полноты решения внесите те же изменения в файлы настроек для команд shutdown и reboot.

Источник

Что такое PAM

набор подключаемых модулей, которые отвечают за аутентификацию в системе. По сути, это API, который операционная система или приложения могут использовать, чтобы отправить запросы на проверку подлинности пользователя. PAM расшифровывается как Pluggable Authentication Modules; перевод на русский — подключаемые модули аутентификации.

PAM разработана компанией Sun Microsystems и была представлена в 1995 году. Раньше в UNIX за авторизацию пользователя в систему отвечала программа login, которая принимала логин и пароль и сравнивала данные с данными в файле /etc/passwd. Теперь же, login не занимается аутентификацией, а просто передает задачу PAM, который с помощью набора своих или дополнительно подключенных алгоритмов проверяет подлинность пользователя и возвращает ответ.

Данный модуль можно встретить во многих операционных системах на основе UNIX, например, Ubuntu, CentOS, Debian, Red Hat, FreeBSD, Gentoo, Mac OS X, Solaris и многих других.

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

Пример стандартного файла для аутентификации в SSH:

#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
# Used with polkit to reauthorize users in remote sessions
-auth optional pam_reauthorize.so prepare
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
# Used with polkit to reauthorize users in remote sessions
-session optional pam_reauthorize.so prepare

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *