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

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

Иван Скляров

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


[контрольные флаги]

В Linux-PAM существует всего четыре флага контроля:

1. required. Если модуль выдал ошибку, то цепочка продолжит выполняться, но запрос будет отклонен.

2. requisite. Если произошла ошибка модуля, то цепочка немедленно заканчивается, и запрос отклоняется.

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

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

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

[стандартные модули]

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

% find / -name pam_*.so

Рассмотрим некоторые модули и заодно укажем тип, который они могут принимать:

pam_access.so. Тип account. Предоставляет или запрещает доступ на основании файла /etc/security/access.conf. Строки этого файла имеют следующий формат: «права:пользователи:откуда», где:

Права - знак «+» (разрешить) или знак «-» (запретить).

Пользователи - ALL, имя пользователя или пользователь@узел, где узел соответствует имени локальной машины, иначе запись игнорируется.

Откуда - одно или несколько имен файлов терминалов (без префикса /dev/), имена узлов, доменные имена (начинающиеся с точки), IP-адреса (с точкой на конце, например, 172.85.10.10.), ALL или LOCAL.

Параметров данный модуль не имеет.

pam_cracklib.so. Тип password. Проверяет пароли на стойкость. Имеет необязательные параметры: debug - заносит отладочную информацию в файл журнала; retry=N - число попыток ввода пароля, по исчерпанию которых возвращается ошибка (по умолчанию дается одна попытка); diffok=N - должно быть изменено минимум N символов при смене пароля; minlen=N - минимальный размер пароля; dcredit=N, ucredit=N, lcredit=N, ocredit=N - в пароле должно присутствовать минимум N цифр, строчных, прописных букв и других символов.

pam_deny.so. Тип любой. Данный модуль на любой запрос отвечает PAM_AUTH_ERR. Бывает полезен для быстрого отключения сервиса (если добавить в начало цепочки) или для завершения цепочки sufficient модулей.

pam_lastlog.so. Тип auth. Заносит в файлы utmp, utmpx, wtmp, wtmpx, lastlog и lastlogx сведения о том, когда и откуда пользователь вошел в систему. Имеет параметры: debug - записывать подробную информацию в syslog; nodate, noterm, nohost, silent - отбрасывать дату, имя терминала, имя хоста или все вместе; never - если пользователь первый раз входит в систему, то его приветствуют таким сообщением: «Добро пожаловать...».

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