Использование РАМ
🕛 19.06.2009, 17:04
Замена программ login и su специальными инструментами, ориентированными на работу с Kerberos, помогает решать задачи аутентификации, но существуют ситуации, в которых подобный подход не приносит желаемых результатов. Особенный интерес вызывают случаи, когда возникает необходимость контролировать процесс регистрации на рабочей станции с помощью программы с графическим интерфейсом и выполнять аутентификацию в системе Kerberos. Существуют также другие локальные средства, выполняющие аутентификацию пользователей, которые необходимо связать с Kerberos; в качестве примеров таких средств можно привести vlock и xscreensaver (эти инструменты блокируют сеанс взаимодействия, осуществляемый как в текстовом, так и в графическом режиме, до тех пор, пока пользователь не введет пароль). Существуют универсальные инструменты связывания различных программы со средствами Kerberos, но на сегодняшний день эти инструменты нельзя назвать широко распространенными, и они не поставляются в комплекте с Kerberos. Средства для решения данной задачи базируются на поддержке модулей РАМ (Pluggable Authentication Module - встраиваемый модуль аутентификации) в системе Linux.РАМ выполняет роль посредника между программами, которым требуется аутентификация (например, сервером FTP, программой login, инструментами регистрации, работающими в среде X Window), и базами данных, в которых хранится информация о пользователях, в частности пароли (/etc/passwd, /etc/shadow и другие файлы стандартного пакета Linux). Процедуры аутентификации оформляются в виде отдельной библиотеки. В этом случае файлы, применяемые для аутентификации, могут быть без труда модифицированы, а программы, использующие их, остаются без изменений. Для поддержки нового формата файлов модифицируются только РАМ. В этом смысле реализация средств поддержки Kerberos в виде РАМ является почти идеальным решением, позволяющим обеспечить совместную работу с Kerberos многих приложений. Любые изменения не затрагивают прикладные программы, которые взаимодействуют только с РАМ.
Поддержка Kerberos с помощью РАМ имеет свои ограничения. В частности, если код программы построен так, что программа запрашивает имя пользователя и пароль, ее поведение не изменится при замене РАМ на модуль, поддерживающий Kerberos. Полученные данные программа передаст РАМ, и он предпримет попытку аутентификации с использованием базы данных Kerberos. Так, например, РАМ не устраняет необходимость ввода имени пользователя и пароля при работе с FTP-сервером, но позволяет следить за текущим паролем и приводить его в соответствие с данными для области Kerberos. Если речь идет о кер-беризованных программах, выполняющих регистрацию пользователя, то такая особенность не является недостатком, так как программы регистрации в любом случае запрашивают пользовательское имя и пароль.
Несмотря на то что РАМ может выступать в роли универсального средства аутентификации и поддерживается во всех версиях Linux и во многих системах, отличных от Linux, керберизованные версии РАМ мало распространены. Ниже описаны некоторые из таких модулей, которые были доступны в момент написания данной книги.
- Модуль Деррика Брешера (Derrik Brashier). Этот модуль предназначен для использования совместно с Kerberos V4. Он расположен по адресу ftp://ftp. dementia.org/pub/pam/; имена файлов, содержащих этот модуль, начинаются символами pam_krb4. Выберите самый новый из файлов (во время написания данной книги все файлы датировались 1998 г.). Данный модуль распространяется в исходных кодах, поэтому перед использованием его надо скомпилировать.
- Модуль Фрэнка Кусека (Frank Cusack). Модуль РАМ, поддерживающий MIT Kerberos V5 и Heimdal, находится по адресу http: //www. nectar. com/zope/krb/. Этот пакет доступен в исходных кодах; изначально коды были написаны для Solaris, но после компиляции они будут работать в системе Linux.
- Модуль Кертиса Кинга (Curtis King). Этот модуль доступен по адресу ftp: //ftp .dementia. org/pub/pam/; имя файла - pam_krb5-l . 1. 3. tar . gz.
Данный модуль также требует компиляции, в ходе которой могут возникнуть проблемы.
- Модуль для системы Red Hat. Модуль РАМ Kerberos V5 входит в состав дистрибутивного комплекта Red Hat под именем pam_krb5. Данный вариант РАМ поставляется в виде двоичного кода в формате RPM, поэтому чрезвычайно просто устанавливается в Red Hat и других подобных системах. При подготовке материала данной главы я использовал именно этот тип модуля, хотя следует отметить, что точно так же работает модуль Фрэнка Кусека.
- Модули для системы Debian. В Debian и других подобных системах работа с Kerberos V5 и Heimdal поддерживается соответственно модулями libpam-krb5 и libpam-heimdal. На Web-узле Debian эти пакеты найти достаточно сложно, поэтому лучше скопировать их, обратившись по адресам http: //ftp. nl. debian. org/debian/pool/non-US/main/libp/libpam-krb5/ и http://ftp. nl.debian.org/debian/pool/non-US/main/libp/libpam-heimdal/.
При инсталляции РАМ для поддержки Kerberos вы по сути устанавливаете средства, с помощью которых РАМ настраивается для выполнения конкретной задачи. В состав модуля РАМ входит одна или несколько библиотек, которые располагаются в каталогах /lib/security или /usr/lib/security. В системе Red Hat библиотеки содержатся в файлах pam_krb5 . so и pam_krb5afs . so. Для работы с этими библиотеками вы должны внести изменения в конфигурационные файлы РАМ, которые содержатся в каталоге /etc/pam.d. Имена конфигурационных файлов составляются на основании имен серверов и других программ, для которых необходимо выполнить аутентификацию. Например, содержимое файла /etc/pam.d/login определяет взаимодействие программы login с РАМ. При редактировании конфигурационного файла РАМ в нем надо изменить (или добавить) одну или несколько строк, определяющих использование нового модуля Kerberos. В пакете, предназначенном для системы Red Hat, содержится большое число файлов с примерами настройки. Эти файлы находятся в каталоге /usr/share/doc/pam_krb5-BepcHH/pam.d, где версия - это номер версии пакета. Чтобы упростить настройку, надо скопировать соответствующие конфигурационные файлы в каталог /etc/pam.d. Файлы, которые могут потребоваться вам, перечислены ниже.
- login. Данный файл управляет взаимодействием с программой login. Настроив РАМ для работы с Kerberos, вы можете отказаться от login. krb5 и продолжать работу с привычной вам программой login.
- gdm. GNOME Display Manager, или GDM, является одним из трех широко распространенных средств регистрации с графическим интерфейсом. (О настройке GDM и других подобных инструментах речь пойдет в главе 14.)
- xdm. Вторым инструментом, предоставляющим графический интерфейс для регистрации, является X Display Manager, или XDM. Конфигурационные файлы XDM может также использовать KDE Display Manager. В описании утверждается, что данный файл должен обеспечить аутентификацию Kerberos при работе указанных средств регистрации, однако при установке конфигурации в системе Mandrake возникают проблемы.
- su и sudo. Программа su, которая обсуждалась ранее, позволяет пользователю после регистрации в системе переходить к другой учетной записи. Программа ksu делает то же самое, используя аутентификацию Kerberos, однако аналогичные результаты можно получить, создав файл РАМ для su. Файл sudo управляет взаимодействием с утилитой sudo.
- passwd. Этот файл настраивает РАМ так, что информация об изменении пароля, выполненном с помощью программы passwd, передается KDC.
- vlock. Программаvlock блокирует консоль, не завершая при этом сеанс работы пользователя. Чтобы разблокировать консоль, необходимо ввести пароль. Как нетрудно догадаться, данный файл обеспечивает аутентификацию путем обращения программы vlock к KDC.
- xlock и xscreensaver. Программы с такими именами предназначены для блокирования сеанса X Window (т. е. они выполняют действия, аналогичные vlock). Программа xscreensaver автоматически блокирует сеанс, если в течение определенного периода времени пользователь не выполняет никаких действий.
Возможно, вы захотите настроить и другие программы для взаимодействия с Kerberos; при этом вам придется отредактировать соответствующие конфигурационные файлы РАМ. Если какой-то из серверов уже сконфигурирован для работы с Kerberos, вам не надо модифицировать файлы РАМ. Например, если у вас уже установлен керберизован-ный FTP-сервер, вам не следует изменять файл /etc/pam.d/ftp. Подобные программы могут взаимодействовать с KDC, минуя РАМ; при работе с ними нет необходимости вводить имя пользователя и пароль, как это приходится делать, используя программы, взаимодействующие посредством РАМ.
Если некоторая программа использует РАМ, то для обеспечения ее совместной работы с Kerberos вам необходимо добавить или заменить некоторые строки в конфигурационном файле РАМ. В составе такого файла содержатся записи, определяющие основные действия, связанные с аутентификацией:auth(аутентификация пользователя), account (проверка корректности учетной записи), password (изменение пароля) и session (начало и завершение сеанса). В листинге 6.4 показано содержимое файла gdm, входящего в состав Kerberos РАМ для Red Hat.
Листинг 6.4. Пример конфигурационного файла РАМ для поддержки Kerberos
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_unix.so shadow md5 \
nullok likeauth
auth required /lib/security/pam_krb5.so use_first_pass
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_unix.so shadow md5 \
nullok use_authtok
session required /lib/security/pam_unix.so
session optional /lib/security/pam_krb5 .so
session optional /lib/security/pam_console.so
В разных системах модули РАМ настраиваются по-разному, поэтому содер-НА^А жимое конфигурационного файла может отличаться от Часто настройка сводится к включению строки, указывающей на
pam_krb5 . so, и удалению ссылки на другой модуль.
В данном примере наиболее важны последняя запись auth и вторая запись session, которые настраивают РАМ для использования Kerberos при регистрации пользователя и завершении его работы. В записи auth содержится параметр use_first_pass, который сообщает Kerberos РАМ о том, что для поддержки сеанса используется первый пароль. В результате модуль действует подобно kinit, получая и сохраняя TGT. Аналогично могут быть настроены многие модули РАМ, но для установки конфигурации некоторых из них необходимо выполнить дополнительные действия. Так, например, может
потребоваться дополнительная запись password, которая помещается после существующих и имеет следующий вид: password required /lib/security/pam_krb5.so use_authtok
Это необходимо в случае, если модульpasswordиспользуется программойpasswd, которая изменяет пароль, но не выполняет аутентификацию пользователя. В некоторых файлах не должны присутствовать записи session, так как это приведет к разрушению билетов. Например, недопустимо, чтобы модули xscreensaver и linuxconf разрушали билеты; при завершении соответствующих программ возобновляется текущий сеанс, в котором билеты должны быть действительны.
В некоторых случаях приходится удалять существующие записи из файлов, размещенных в /etc/pam.d. В частности, если вы добавляете запись, указывающую на pam_krb5. so, а в файле уже есть запись такого же типа, которая ссылается на pam_pwdb. so, существующую запись необходимо удалить. Библиотека pam_pwdb. so обеспечивает непосредственный доступ к базе данных паролей, и если обе записи присутствуют, в аутентификации участвуют как локальная база паролей, так и база данных Kerberos. Возможно, в некоторых ситуациях, когда требуется чрезвычайно высокая степень защиты, такой подход оправдан, но в большинстве случаев он лишь уменьшает степень гибкости Kerberos, так как пользователь вынужден менять пароль и на KDC, и на рабочей станции. Если в конфигурационном файле РАМ password предусмотрена двойная проверка, при работе с одной рабочей станцией настройки легко согласовать с помощью инструментаpasswd, однако отслеживать изменения во всей сети достаточно сложно.
Новая конфигурация РАМ становится доступна сразу после внесения соответствующих изменений; перезапускать программы РАМ не требуется. Если установленная конфигурация оказывает воздействие на сервер, который уже выполняется в системе, то чтобы он работал с учетом новой конфигурации его, возможно, придется перезапустить. Если установки влияют на регистрацию в системе, они окажут требуемое воздействие лишь после завершения сеанса работы пользователя. При использовании средств регистрации с графическим интерфейсом, например GDM, может понадобиться перезапустить сервер.