| AIX, Linux, Solaris - сравнение систем безопасности |
|
|
| Автор Administrator | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| 29.07.2008 г. | |||||||||||||||||||||||||||||||||||||||||||||||||||||
В статье рассматривается методика создания единой системы идентификации и аутентификации (I and A) в гетерогенной многоплатформенной среде. Система идентификации и аутентификации обеспечивает уровень абстракции между пользовательским приложением и необходимым данному приложению механизмом аутентификации.
В статье рассматривается методика создания единой системы идентификации и аутентификации (I and A) в гетерогенной многоплатформенной среде. Система идентификации и аутентификации обеспечивает уровень абстракции между пользовательским приложением и необходимым данному приложению механизмом аутентификации. Интерфейс прикладного программирования (API) позволяет приложению не заботиться о конкретном используемом методе идентификации или аутентификации, например имя пользователя и пароль либо биометрические отпечатки пальцев. AIX®, Linux® и Solaris применяют различные системы идентификации и аутентификации, поэтому для реализации данной задачи в многоплатформенной гетерогенной среде необходимо выработать единую стратегию идентификации и аутентификации. Данная статья адресована IT-персоналу, занимающемуся разработкой и реализацией I and A в гетерогенной среде окружения. Начнем с описания системы I and A , затем расскажем о реализациях ее на трех платформах: LAM (loadable authentication modules), PAM (pluggable authentication modules) и NSS (name service switch). После общего описания будут представлены конкретные советы для реализации единой I and A. Обзор идентификации и аутентификации Под идентификацией понимается проверка того, что пользователь является зарегистрированным в системе пользователем; под аутентификацией понимается проверка подлинности данного пользователя. В качестве простого примера рассмотрим обычный вход в систему с использованием telnet:
Системы, которые предоставляют идентификацию и аутентификацию, называются I and A. Такие системы позволяют использовать новые методы идентификации и аутентификации. I and A предоставляет уровень абстракции между пользовательским приложением и реализацией любой функции аутентификации и идентификации. Для идентификации и аутентификации пользовательское приложение должно использовать только стандартные функции библиотеки C. Администратором системы определяются доступные для этих целей механизмы, предоставляемые работающими на уровне пользователя модулями. Например, системный администратор может задать требование аутентификации для пользователя A на машине M простой парой имя пользователя/пароль, используя для проверки подлинности локальный файл паролей, в то время как другой пользователь B на машине M может аутентифицироваться с помощью методов биометрического контроля. Во всех этих случаях будет использована одна и та же программа аутентификации с использованием одних и тех же функций библиотеки безопасности. Однако в каждом из этих случаев будут использованы различные модули реализации аутентификации, каждый модуль будет решать эту задачу своим методом. Сравнение механизмов аутентификации и идентификации в AIX, Linux и Solaris Существуют некоторые отличия между тем как различные UNIX-платформы реализуют идентификацию и аутентификацию. В таблице 1 можно увидеть отличия, имеющиеся у данных функций в AIX, Linux, Solaris. Ниже приведены названия подсистем, реализующих идентификацию и аутентификацию.
Даже после того как пользователь был успешно аутентифицирован, многим приложениям по-прежнему необходима информация, которую он использовал при аутентификации. Данная информация обычно содержится в текстовых файлах (/etc/passwd, /etc/shadow, /etc/group), но может быть предоставлена и другими способами, для реализации которых в UNIX-системах имеются обычные API для предоставления этой информации и написаны ряд модулей, выполняющих эту задачу в зависимости от выбранной технологии. Такая служба называется NSS, она использует обычный API и файл конфигурации(/etc/nsswitch.conf), в котором заданы имена всех провайдеров службы имён для каждой поддерживаемой базы данных. Для получения дополнительной информации смотрите раздел "Системные базы данных и переключение службы имён" в описании библиотеки GNU C. Рисунок 1. Путь выполнения запросов идентификации На рисунке изображён путь выполнения запросов при вызове функции библиотеки C, относящейся к идентификации. Сначала библиотечный вызов перенаправляется в NSS- библиотеку, которая, собственно, реализует эти функции и экспортирует данный API. Библиотека NSS сверяется с настройками в /etc/nsswitch.conf и затем подгружает соответствующие, необходимые для запроса модули. Файл настроек nsswitch.conf приведён в листинге 1. Первый столбец задаёт имя базы данных, все последующие ключевые слова определяют, каким образом должны обрабатываться запросы.
PAM предоставляет администратору возможность выбора любой доступной службы аутентификации вместе с подгрузкой дополнительных модулей аутентификации без какой-либо модификации приложения. PAM состоит из библиотеки с интерфейсом и множества модулей аутентификации. На уровне библиотеки реализуется API, в модулях аутентификации реализуется конкретный алгоритм аутентификации пользователя. На рисунке 2 показано взаимодействие между приложением, библиотекой и модулями. Приложение (ftp, telnet, login) использует библиотеку для доступа к подходящему модулю. Файл конфигурации pam.conf определяет, какой из модулей должен быть использован для каждого приложения. Ответы модулей перенаправляются в приложение. Рисунок 2. Взаимодействие с приложением В файле конфигурации PAM /etc/pam.conf можно задать, какой именно механизм аутентификации должен быть использован для каждого системного приложения. Файл имеет следующий синтаксис:
То есть:
Имя сервиса задаёт имя приложения, тип модуля определяет тип модуля для заданного приложения, флаги управления определяют семантику поведения при неудачных попытках авторизации, путь к модулю задаёт путь к подгружаемой библиотеке, которая реализует функциональность аутентификации, опции модуля задают специфичные для каждого модуля опции. Пример записи в pam.conf:
Интерфейс LAM является стандартной системой идентификации и аутентификации в AIX. Каждый модуль системы LAM определяет подфункции интерфейса. По требуемому функционалу определяется, какая именно из набора подфункций должна быть вызвана. LAM-модуль представляет собой динамически подгружаемую библиотеку, которая настраивается при загрузке функцией инициализации. Данная функция инициализации модуля - точка входа в библиотеку, она определяется в момент компиляции. В дальнейшем LAM-модуль взаимодействует с системой безопасности AIX через интерфейс secmethod_table, который представляет собой набор указателей на функции. Каждая функция интерфейса решает чётко определённую задачу. Функция инициализации получает указатель на структуру secmethod_table и задаёт его указатели на соответствующие реализации данных функций. Таким образом, системная библиотека безопасности использует заданные функции вместо обычных функций, работающих с локальными файловыми базами пользователей. Рассмотрим простой пример аутентификации и идентификации с использованием LAM-модулей.
Проблемы при реализации систем I and A в старых версиях ОС AIX. Данный раздел предназначен для администраторов, которым необходимо интегрировать старые AIX-системы (версия ниже 5.2) в обычную I and A. AIX 5.2 и выше поддерживают PAM в стандартной версии; в них можно реализовать полноценное PAM-решение. Однако до версии 5.2 приложения в системе не поддерживали PAM, поэтому AIX использовала довольно сложный механизм для достижения аутентификации с использованием PAM. Ниже описан данный механизм с обзором работы механизма LAM. В системе AIX имеются подгружаемые модули аутентификации для обеспечения поддержки PAM "родными" приложениями AIX. Приложения AIX вызывают функции, предоставляемые PAM, через существующую систему LAM. Отметим, что это "PAM через LAM" - это не полноценный PAM; вот почему не рекомендуется использовать данный метод для обеспечения аутентификации для родных приложений AIX. Это типичное использование LAM, однако в данном случае необходимо использовать PAM-модуль, для чего потребуется LAM-модуль (PAM), поэтому внесем изменение в файл /usr/lib/security/methods.cfg (см. раздел Инфраструктура LAM ), изменив строку
на строки:
Данный LAM-модуль (PAM) перенаправляет вызовы от служб безопасности AIX в библиотеку PAM (libpam.a). Другими словами, оно переопределяет библиотечные функции на функции в PAM API. Таким образом, начиная с этого момента, это полноценное окружение PAM для пользовательского приложения. Библиотека libpam.a считывает /etc/pam.conf для определения PAM-модуля для загрузки и использования, основываясь на службе, которая осуществила первоначальный вызов. Как правило, в случае "PAM через LAM" все функции аутентификации, вне зависимости от службы, обрабатываются каким-либо PAM-модулем. В таблице 2 показана часть привязки к PAM через LAM.
Как видно, не все функции библиотеки системной безопасности AIX имеют свои эквиваленты в PAM API. В таких случаях должны быть написаны и использоваться функции-заглушки, которые должны быть в PAM-модуле. В вышеприведённом примере такими заглушками являются функции, просто возвращающие код успешного завершения операции. Предупреждаем, что в системах с PAM, где приложения напрямую взаимодействуют с PAM-модулями, PAM-модуль может выдавать предложение пользователю ввести различные данные, такие как имя пользователя и т.д. В данном случае будет невозможно организовывать взаимодействие с пользователем на уровне модуля PAM, так как все данные, выведенные службой сетевой безопасности AIX, перенаправляются в PAM-модуль с использованием pam_set_item метода, а не напрямую. Аналогично PAM-модули должны запрашивать все данные, используя функцию pam_get_item, и никогда напрямую: всё взаимодействие с пользователем обрабатывается библиотекой безопасности AIX. Рекомендации по реализации I and A Если необходимо написать собственную I and A, которая работала бы на AIX, Solaris и Linux, то придется написать следующие модули:
Написание собственных PAM-модулей хорошо документировано, можно найти ссылки на примеры реализации PAM-модулей вместе с другой документацией по написанию PAM в разделе Ресурсы). Ниже приводится написание модулей NSS и LAM, которые предоставляют одинаковую функциональность идентификации, для того чтобы было можно создать единое решение по аутентификации на всех трёх платформах. Фактическая реализация функций будет очень похожа на всех платформах (см. таблицу 3) вне зависимости от используемого модуля, LAM это или PAM-модуль. Рассмотрим простую систему идентификации на базе паролей и групп. Рассмотрим, каким образом модуль NSS "mynss" выполняет идентификацию. В таблице 3 представлены записи, ориентированные на использование паролей, с использованием имени группы вместо логина пользователя. Таким образом, файл, который будет реализовывать идентификацию для парольных записей, будет иметь следующие функции (см. таблицу 3).
В листинге 2 приведена типичная функция getpwnam().
Рассмотрим типичный LAM-модуль с именем mylam, занимающийся идентификацией. В таблице 4 приведен набор функций, которые должны быть реализованы в этом модуле.
В листинге 3 приведена типичная функция mylam_getpwnam:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
You need to login or register to post comments.
Обсудить в форуме. (0 комментариев)
| « Пред. | След. » |
|---|


