поиск по сайту
Идентификация и аутентификация пользователей при работе подсистемы разграничения доступа в ОС Linux

А. М. Каннер

Россия, ОКБ САПР

Идентификация и аутентификация пользователей при работе подсистемы разграничения доступа в ОС Linux

Презентация: скачать

Подключаемые модули аутентификации (pluggable authentication modules, PAM) являются основной системой аутентификации в ОС семейства Unix, в т.ч. GNU/Linux. PAM пришел на смену встраиваемым механизмам аутентификации в различных приложениях (например, ранее в login была встроена собственная процедура аутентификации, проверяющая введенный пароль с паролем из /etc/passwd или хешем из /etc/shadow). Фактически PAM представляет из себя набор внешних модулей аутентификации, которые можно встроить в любые приложения, при этом в рамках самих приложениях нет необходимости беспокоиться об аутентификации пользователя - достаточно использовать соответствующий PAM-модуль (т.е. это механизм внешней аутентификации). Соответственно при любом изменении процедуры или последовательности идентификации и аутентификации (и/а) пропадает необходимость изменять само приложение - достаточно изменить PAM и и/а изменится во всех приложениях, которые используют этот PAM-модуль.

 

 

При построении подсистемы разграничения доступа в Linux [2] важным этапом в процессе  загрузки ОС является этап после загрузки системы по завершению процесса init при запуске системной утилиты login - т. е. этап непосредственно и/а пользователя в ОС. При этом саму подсистему разграничения доступа удобно строить на базе загружаемого модуля ядра Linux [2], этот модуль должен загружаться в ядро ОС на одном из последних этапов работы init, но до монтирования корневой файловой системы на запись.

После завершения работы процесса init модуль ядра будет находиться в состоянии ожидания каких-либо внешних воздействий (например, вызова какого-либо системного вызова и/или обращение к модулю из usermode-утилит) - при этом для правильной регистрации пользователя необходимо аутентифицировать его в т.ч. в модуле ядра (чтобы в нужный момент модуль ядра мог знать совершал ли вход в систему тот или иной пользователь и можно ли выполнять какие-либо процессы в ОС с его правами).

Для этого необходимо создать PAM-модуль аутентификации, а логика работы процедуры и/а должна стать следующей:

- запускается утилита login

- утилита login делегирует функции и/а внешнему PAM-модулю, при этом:

  • конкретный PAM-модуль предварительно должен быть прописан в соответствующем конфигурационном файле (как правило /etc/pam.d/common_auth или /etc/pam.d/login в зависимости от ОС, PAM-модуль обычно должен прописываться вместо штатного модуля pam_unix.so);
  • PAM-модуль предварительно должен быть записан в каталог к другим PAM-модулям (/etc/security/).

- PAM-модуль запрашивает у пользователя login (или аппаратный идентификатор) и пароль;

- PAM-модуль рассчитывает хеш от предъявленных пользователем значений login (аппаратного идентификатора) и пароля и передает его модулю ядра по протоколу взаимодействия usermode-приложений с ядром ОС (протокол netlink);

- Модуль ядра ищет в своих структурах пользователя по login (аппаратному идентификатору) и сравнивает полученное от PAM значение хеша со значением в своей БД, при этом:

  • Если хеш совпадает - PAM-модулю по netlink от модуля ядра должно возвращаться имя пользователя, которому соответствует хеш в БД пользователей. Данного пользователя PAM-модуль пропускает и запускает его shell;
  • Если хеш не совпадает - PAM-модулю по netlink от модуля ядра возвращается указание вывести ошибку (код ошибки) и не аутентифицировать пользователя в системе (не запускать его сессию и shell в рамках этой сессии);
  • В любом из описанных случаях в модуле ядра в соответствующие структуры должны заноситься данные о:
    • состоянии аутентифицированности в данный момент определенного пользователя
    • событиях во время процедуры и/а (успешная/неудачная попытка и/а и т.п..)

В процессе аутентификации пользователя в модуле ядра могут учитываться дополнительные параметры, которые могут влиять на результат аутентификации пользователя - например, разрешенное время работы пользователя и т.п. - таким образом,  можно внедрять абсолютно любые дополнительные проверки и параметры. В данном случае модуль ядра становится сущностью, которой делегирует функции и/а PAM-модуль, в свою очередь которому делегирует эти функции определенное приложение.

Дополнительно необходимо предусмотреть PAM-модуль для работы с сессиями пользователей с целью отделить механизм и/а и механизм управления сессиями, а также для возможности перехвата момента завершения сессии определенного пользователя (в модуле ядра этот факт должен также фиксироваться).

Также необходимо понимать, что наиболее важным элементов всей подсистемы разграничения доступа является наличие аппаратного компонента [1], с помощью которого на ранних этапах загрузки будет осуществляться:

  1. контроль целостности важных объектов, используемых в дальнейшем подсистемой разграничения доступа (модуль ядра, БД пользователей, PAM-модули и прочие утилиты, взаимодействующие в модулем ядра);
  2. контроль целостности файлов, в которых прописывается порядок загрузки ОС и вставлена загрузка модуля ядра до монтирования корневой файловой системы на запись (например, /boot/initrd, порядок загрузки записывается в initrd в файл init);
  3. контроль целостности ядра ОС (например, /boot/vmlinux);
  4. контроль целостности настроек загрузчика (например, /boot/grub/grub.cfg) и самого загрузчика, записанного в загрузочный сектор раздела.

Без таких контрольных процедур при использовании существующих штатных средств защиты в ОС всегда существует возможность обхода или отключения этих средств защиты на ранних этапах загрузки, что нивелирует любые механизмы защиты, реализуемые с помощью подсистемы разграничения доступа в ОС, т. к. появляется возможность данную подсистему просто отключить.

СПИСОК ЛИТЕРАТУРЫ:

1. Бажитов И. А. Возможности ПАК СЗИ НСД «Аккорд-Х» для ОС Linux // Комплексная защита информации. Сборник материалов XIV Международной научно-практической конференции (19-22 мая 2009 года, Могилев). М., 2009. С. 26-27.

2. Бажитов И. А. Обеспечение доверенной среды в ОС Linux с использованием ПАК СЗИ НСД «Аккорд-X» // Комплексная защита информации. Сборник материалов XV Международной научно-практической конференции (1-4 июня 2010 года, Иркутск). М., 2010. С. 32.


ФорумФорум
Форум ОКБ САПР
Вопросы специалистовВопросы специалистов
Вопросы, которые нам присылают, и наши ответы на них