pam_deny.so Расширенные журнальные возможности модуля pam_warn

Расширенные журнальные возможности модуля pam_warn важны не только при отладке, но и с точки зрения безопасности. Например, если выявляется какая-то подозрительная деятельность, можно добавить модуль pam_warn в стеки auth, где осуществляются вызовы проверяемых служб. Многие модули поддерживают также аргумент debug, позволяющий фиксировать подробную информацию об их работе. Но следите за размером журнальных файлов, так как они быстро разрастаются. Кроме того, если злоумышленник проник в систему, он тоже может читать эти файлы!

В данную категорию входит еще модуль pam_permit, являющийся полной противоположностью модулю pam_deny. Как нетрудно догадаться, он разрешает любой доступ. Этот модуль доступен во всех стеках и должен использоваться с большой осторожностью.

Создание более гибких стеков

С точки зрения управления аутентификацией модули РАМ проявляют чрезвычайную гибкость. Существуют также средства точного контроля над выполнением модулей в рамках стеков. В этом подразделе мы познакомимся с так называемым флагом расширенного контроля. Синтаксис этого флага таков (табл. 5.2):

[значение 1=действие! значение2=действие2...]

Рассмотрим конкретный пример. Допустим, необходимо направлять в систему Syslog сообщение всякий раз, когда происходит несанкционированная попытка выполнить команду su root. Один из способов сделать это — вызвать модуль pam_warn, если пользователь не является членом группы wheel. В листинге 5.29 показан файл /etc/pam. d/su, где используется данная возможность.

Листинг 5.29. Использование флага расширенного контроля

auth sufficient /lib/security/pam_rootok.so

auth [success-ok ignore-ignore default-1]

/lib/security/pam_wheel.so use_uid group-wheel

auth sufficient /lib/security/pam_unix.so likeauth audit

auth required /lib/security/pam_warn.so

auth required /lib/security/pam_deny.so

account required /lib/security/pam_stack.so service=system-auth password required /lib/security/pam_stack.so service=system-auth session required /lib/security/pam_stack.so service=system-auth session optional /lib/security/pam_xauth.so

Поле управляющего флага в выделенной строке содержит запись

[success=ok ignore=ignore default=l]

Она интерпретируется следующим образом. Если модуль pam_wheel завершается успешно (success=ok), то возвращаемое значение считается частью общего кода успешного завершения стека. Если модуль pam_wheel возвращает код игнорирования (ignore=ignore), он не считается признаком успешного или неуспешного завершения стека. Если же модуль возвращает любое другое значение (default=l), то следующий модуль в стеке (pam_unix) пропускается и выполняются модули pam_warn и pam_deny. Таким образом, если пользователь является членом группы wheel (возвращается значение success или ignore), он имеет возможность пройти аутентификацию в модуле pam_unix. В противном случае, а также если модуль pam_unix завершится неудачей, доступ будет запрещен и модуль pam_warn сгенерирует журнальное сообщение.

В листинге 5.30 показаны типичные сообщения, регистрируемые модулями pam_wheel и pam_warn. Обратите внимание на то, что модуль pam_warn записывает дополнительную информацию о сеансе (например, имя удаленного пользователя). В данном случае говорится о том, что пользователь joe попытался стать пользователем root, но не смог этого сделать, так как не является членом группы wheel. Таким образом, можно отследить неудачные попытки выполнения команды su root.

Листинг 5.30. Журнальные сообщения модулей pam_wheel и pam_warn

Feb 23 14:06:25 topcat — joe[27941]: LOGIN ON tty5 BY joe

Feb 23 14:06:31 topcat PAM-Wheel[27984]: Access denied for 'joe' to 'root'

Feb 23 14:06:31 topcat PAM-warn[27984]: service: su [on terminal: pts4]

Feb 23 14:06:31 topcat PAM-warn[27984]: user: (uid=1006) -> root [remote:

joe@sylvester]

Feb 23 14:06:34 topcat login(pam_unix)[27941]: session closed for user joe

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

success user_unknown maxtries

open_err new_authtok_reqd acct_expired

symbol_err session_err cred_unavail

service_err cred_expired cred_err

system_err no_module_data conv_err

buf_err authtok_err authtok_recover_err

perm_denied authtok_lock_busy authtok_disable_aging

auth_err try_again ignore

cred_insufficient abort authtok_expired

authinfo_unavail module_unknown bad_item

default

Единственный способ определить, возвращает ли модуль одно из упомянутых значений и если возвращает, то при каких обстоятельствах, — анализировать исходные коды (доступны по адресу www. kernel. org/pub/linux/libs/pam). Значения некоторых кодов вполне очевидны (например, success или user_unknown). Точную интерпретацию имеет лишь код default, который всегда означает одно и то же: указанное действие применяется в том случае, когда ни один другой код не встретился. Возможные действия определены гораздо более четко (табл. 5.17).


Ведете ли вы блог?

Да
Нет
Планирую


Результаты опроса

Новостной блок