Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #86, ФЕВРАЛЬ 2006 г.

Система безопасности PAM изнутри

Иван Скляров

Хакер, номер #086, стр. 086-112-2


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

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

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

[типы модулей]

Как уже отмечалось, всего существует четыре типа модулей:

1. auth. Модули такого типа выполняют функции аутентификации пользователей в системе (проверяют наличие пользователя в системе, осуществляют ввод имени и пароля, разрешают доступ в ту или иную группу и т.п.). Auth-модуль должен обязательно предоставлять следующие две функции:

pam_sm_authenticate() выполняет задачу аутентификации пользователя, то есть сравнивает введенный ключ со значением в базе данных; pam_sm_setcred() открывает доступ прикладной программе к такой информации о пользователе, как его ID, членство в группах и лимит ресурсов. Для корректной инициализации в модуле должна быть включена строка «#define PAM_SM_AUTH» после включения «#include <security/pam_modules.h>».

2. account. Модули такого типа проверяют доступность аккаунта на основе ресурсов системы (время суток или загрузка сервера). Account-модуль должен обязательно предоставлять функцию pam_sm_acct_mgmt(), которая проверяет, доступен ли запрашиваемый аккаунт. Для корректной инициализации в модуле должна быть включена строка «#define PAM_SM_ACCOUNT».

3. password. Модули этого типа предназначены для смены пароля по запросу пользователя или по истечению срока действия. Password-модуль должен обязательно предоставлять функцию pam_sm_chauthtok(), которая изменяет ключ аутентификации, проверяет, не использовался ли он ранее, а заодно и его стойкость. Для корректной инициализации в модуле должна быть включена строка «#define PAM_SM_PASSWORD».

4. session. Данные модули используются для выполнения определенных действий перед началом сеанса и перед его окончанием. Такими действиями могут быть, например, добавление записей в log-файлы, подготовка пользовательского окружения, запуск каких-нибудь служб и т.д. Session-модуль должен предоставлять следующие две функции: pam_sm_open_session() выполняет задачи, связанные с установкой сеанса; pam_sm_close_session() отвечает за завершение сеанса. Для корректной инициализации в модуле должна быть включена строка «#define PAM_SM_SESSION».

Назад на стр. 086-112-1  Содержание  Вперед на стр. 086-112-3