Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

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

Рубрика: Безопасность -> Основные меры защиты Linux
Метки:
Понедельник, 20 апреля 2009 г.
Просмотров: 5118

     Конфигурационные файлы.

     В зависимости от версии РАМ, для конфигурации используется один большой файл /etc/pam.conf или группа небольших файлов, находящихся в каталоге /etc/pam.d/. Последний метод более по­пулярен и используется во многих дистрибутивах - RedHat/Fedora, SuSe, Mandrake - следовательно, он и будет описан.

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


# ls -l

total 84

-rw-r--r-- 1 root root 272 Apr 19 2002 authconfig

-rw-r--r-- 1 root root 330 Jan 24 2002 chfn

-rw-r--r-- 1 root root 300 Jan 24 2002 chsh

-rw-r--r-- 1 root root 363 Mar 12 2002 ftp

-rw-r--r-- 1 root root 225 Apr 15 2002 halt

-rw-r--r-- 1 root root 157 Jun 24 2002 kbdrate

-rw-r--r-- 1 root root 427 Jun 24 2002 login

-rw-r--r-- 1 root root 210 Feb 6 2003 other

-rw-r--r-- 1 root root 211 Mar 13 2002 passwd

-rw-r--r-- 1 root root 77 Apr 18 2002 screen

-rw-r--r-- 1 root root 144 Mar 26 2003 smtp

-rw-r--r-- 1 root root 452 Jun 26 2002 sshd

-rw-r--r-- 1 root root 659 Apr 8 2002 su

-rw-r--r-- 1 root root 278 Apr 18 2002 sudo

-rw-r--r-- 1 root root 643 May 5 2003 system-auth

     Содержимое этого каталога зависит от версии дистрибутива Linux и от версии РАМ.

     Формат каждого конфигурационного файла следующий:

Тип_модуля Управляющие_флаги Имя_модуля Аргументы

     Типы модулей.

     Существует четыре типа модулей:

  • auth — делает две вещи — аутентифицирует пользователей и дает пользователям их полномочия.

  • account — дает опции по управлению учетными записями, не связанные с аутентификацией.
  • session — этот модуль работает с задачами, которые должны быть сделаны до или после того, как пользователю будет дан доступ. Например, как только пользователь вышел, нужно очистить его временный каталог.
  • password — модуль необходим для обновления токена аутентификации, связанного с пользователем.
     Управляющие флаги.

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

  • required — модуль необходим для успешного продолжения. Если работа модуля неуспешна, то будет продолжено выполнение модулей того же типа.

  • requisite — то же, что и required, но в случае сбоя управление отдается обратно в приложение, перед тем, как будет продолжено выполнение других модулей.
  • sufficient — если модуль нормально работает, больше не будет вызван ни один модуль этого типа.
  • optional — необязательный модуль.
     Имя модуля.

     Тут задается используемый модуль, если путь не задан, подразумевается каталог /lib/security.

     Аргументы.

     Аргументы зависят от модуля, но есть и общие аргументы, которые и будут рассматриваться далее. Если аргумент или его значение неправильно заданы, они будут проигнорированы.

     Общие аргументы:

  • debug — логирование отладочной информации с помощью syslogd.

  • no_warn — не выводить предупреждения.
  • use_first_pass — аутентификация должна производиться с использованием предварительно введенного пароля. Если пароль неправильный или не задан, он будет спрошен у пользователя.
  • expose_account — по умолчанию РАМ скрывает информацию из учетной записи, например командную оболочку или реальное имя пользователя. Используя эту опцию, эта информация будет доступна дружественным процессам, например процессу login (например, login будет выводить приглашение в виде "Пожалуйста, введите ваш пароль, Mr. Suvan").
     Накопление модулей.

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

# cat /etc/pam.d/login

#%РАМ-1.0

auth required /lib/security/parn_securetty.so

auth required /lib/security/pam_stack.so service=system-auth

auth required /lib/security/pam_nologin.so

account required /lib/security/pam_stack.so service=system-auth

password required /lib/seсuritу/pam_stасk.so service=system-auth

session required /lib/security/pam_stack.so service=system-auth

session optional /lib/security/pam_console.so

     Для аутентификации пользователя сначала проверяется первый модуль — pam_security. Затем — system-auth — общий сервис. Файл /etc/pam.d/system-auth содержит набор собственных правил:

# This file is auto-generated

# User changes will be destroyed the next time authconfig is run

auth required /lib/security/pam_env.so

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

auth required /lib/security/pam_deny.so

account required /lib/security/pam_unix.so

password required /lib/securitу/pam_crаскlib.sоretry=3 type=

password required /lib/security/pam_unix.so nullok use_authtok md5 shadow

password required /lib/security/pam_deny.so

session required /lib/security/pam_limits.so

session required /lib/security/pam_unix.so

     System-auth работает с аутентификацией пользователя через /etc/passwd. После выполнения system-auth управление передается конфигурационному файлу login и модулю pamnologin. Если аутентификация не была удачной, доступ будет запрещен.

    System-auth вызывается несколько раз: для проверки account (учетной записи), password (пароля) и session (сессии). В заключение вызывается модуль pam_console, ограничивающий регистрацию пользователей с определенных консолей.

     Правила по умолчанию.

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

auth required pam_deny.so

auth required pam_warn.so

account required pam_deny.so

auth required para_warn.so

password required pam_deny.so

password required pam_warn.so

session required pam_deny.so

password required pam_warn.so

     В этом случае политика по умолчанию запрещает любой доступ и ведет протоколирование с помощью syslogd.