Pam в red hat
Проанализируем процесс аутентификации при помощи PAM. Но сначала давайте получим общее представление о механизме PAM дистрибутива Red Hat Linux 7.2 (все нижеизложенное можно отнести к любой реализации PAM).
Теоретически любой сервис может использовать PAM. Сервис — это приложение, требующее аутентификации пользователей. Примеры: login (регистрация в системе), FTP и POP. Имейте в виду, однако, что сервисы должны быть специально написаны для работы с PAM;
в Red Hat Linux 7.2 все приложения, требующие аутентификации, поддерживают PAM. Используется ли РАМ определенной программой (например, login, которую сервис telnet, в свою очередь, применяет для идентификации пользователей), можно выяснить, проверив, обращается ли она к библиотеке PAM — libpam, путем ввода команды ldd (см. “Проверка библиотеки PAM”: во второй строке вывода результата выполнения команды ldd имеется ссылка на libpam).
Учтите еще, что, даже если приложение может осуществлять аутентификацию при помощи PAM, оно не обязательно будет это делать — все зависит от желания администратора. Так, сервисы Samba и Apache предлагают, но не обязывают использовать PAM.
Для каждого сервиса в каталоге /etc/pam.d/ имеется свой файл, который содержит правила (по одному в каждой строке) или инструкции по реализации аутентификации и получению учетной информации для этой службы. О содержании файла см. “Пример конфигурации PAM”.
Модуль из третьего столбца — это PAM-библиотека, предоставляющая сервису определенный механизм аутентификации. В четвертом столбце содержатся параметры для модуля аутентификации. Их указание необязательно, и для каждого модуля требуются свои параметры.
Аутентификация pop/imap с помощью active directory/kerberos
Другой наш сценарий таков: любые соединения с сервисами электронной почты POP (Post Office Protocol) или IMAP (Internet Message Access Protocol), запущенными на сервере Linux, аутентифицируются посредством механизма Kerberos на сервере Windows. Это позволяет настроить Linux-сервер в домене Windows для работы с электронной почтой, что дает возможность сэкономить на приобретении аналогичного Windows-решения.
Ряд почтовых клиентов, таких, как Outlook Express, Netscape Messenger и Eudora, настраиваются для работы с почтовым сервером Linux; они могут даже “общаться” с ним по протоколу SSL, чтобы обеспечить безопасность паролей. Такая схема будет работать только в домене Windows Active Directory. Иллюстрация этого сценария приведена на рис. 2.
Обратите внимание, что выполнять аутентификацию SSH-сеансов с помощью Active Directory/Kerberos почти так же просто, как аутентифицировать соединения POP и IMAP посредством SMB. Фактически любая другая схема аутентификации будет такой же простой — и все это благодаря технологии PAM.
Для этого нам понадобится другой модуль PAM — pam_krb5. Чтобы удостовериться, что он установлен в системе Red Hat Linux 7.2, запустите команду rpm -q pam_krb5, которая должна выдать ответ pam_krb5-1.46-1 (цифры могут различаться).
Затем нам потребуется настроить Kerberos на сервере Linux, но сначала нужно кое-что выяснить. Мы должны указать центр распределения ключей (Key Distribution Center — KDC), т. е. имя или IP-адрес первичного контроллера домена. В нашем случае центр распределения ключей — pdc.domain.net.
Еще нам нужно знать имя области (realm). Понятие “имя области” в Kerberos аналогично имени Active Directory в Windows, которое, в свою очередь, часто является именем домена DNS. Имя Active Directory не всегда совпадает с именем домена DNS, но во время настройки первичного контроллера домена Windows рекомендуется использовать именно его. В нашем случае областью является DOMAIN.NET (имя области должно писаться прописными буквами).
Используя эту информацию, отредактируйте файл /etc/krb5.conf, состоящий из нескольких разделов. Каждый раздел отделен строкой типа [имя_раздела]. В вашем файле /etc/krd5.conf может содержаться больше разделов, чем приведено в нашем листинге. Если это так, то оставшиеся разделы не трогайте (см. “Настройки /etc/krb5.conf для сервера Linux”).
Аутентификация и управление учетными записями
Аутентификация — это процесс идентификации пользователя системой. Все то, что разрешено делать пользователю после аутентификации, определяется контролем доступа. В его основе, как правило, лежит концепция учетных записей, которые в общем случае являются наборами данных, “привязанными” к уникальным идентификаторам.
Обычно в них содержится информация, необходимая для предоставления пользователям доступа к системным ресурсам, например информация о маршрутах к их личным файлам. Там же могут содержаться данные о переменных окружения и ограничениях на доступ к ресурсам. Мы рассмотрим в основном службы и протоколы аутентификации.
В состав большинства дистрибутивов Linux входят так называемые подключаемые модули аутентификации (Pluggable Authentication Modules — PAM), с помощью которых легко реализуется гибкая схема аутентификации. Идея модульной аутентификации родилась в лабораториях Sun Microsystems, и теперь PAM можно обнаружить в последних версиях ОС Solaris, AIX, HP-UX и Mac OS X, хотя чаще эти модули используются с различными свободно распространяемыми операционными системами, включая Linux (в частности, дистрибутивы Red Hat, Debian и SuSE), FreeBSD и NetBSD.
Ход занятия
1. Linux, как и любая unix-подобная система, является не только многозадачной, но и многопользовательской, т.е. эта операционная система позволяет одновременно нескольким пользователям работать с ней. Но система должна как-то узнавать, какой или какие из пользователей работают в данный момент.
Учетная запись пользователя – это необходимая для системы информация о пользователе, хранящаяся в специальных файлах. Информация используется Linux для аутентификации пользователя и назначения ему прав доступа.
Аутентификация – системная процедура, позволяющая Linux определить, какой именно пользователь осуществляет вход.
Вся информация о пользователе обычно хранится в файлах /etc/passwd и /etc/group.
/etc/passwd – этот файл содержит информацию о пользователях. Запись для каждого пользователя занимает одну строку:
имя пользователя – имя, используемое пользователем на все приглашения типа login при аутентификации в системе.
зашифрованный пароль – обычно хешированный по необратимому алгоритму MD5пароль пользователя или символ ‘!’, в случаях, когда интерактивный вход пользователя в систему запрещен.
UID – числовой идентификатор пользователя. Система использует его для распределения прав файлам и процессам.
GID – числовой идентификатор группы. Имена групп расположены в файле /etc/group. Система использует его для распределения прав файлам и процессам.
Настоящее имя пользователя – используется в административных целях, а также командами типа finger (получение информации о пользователе через сеть).
Домашний каталог – полный путь к домашнему каталогу пользователя.
Оболочка – командная оболочка, которую использует пользователь при сеансе. Для нормальной работы она должна быть указана в файле регистрации оболочек /etc/shells .
/etc/group – этот файл содержит информацию о группах, к которым принадлежат пользователи:
Имя группы – имя, применяемое для удобства использования таких программ, как newgrp .
Шифрованный пароль – используется при смене группы командой newgrp. Пароль для групп может отсутствовать.
GID – числовой идентификатор группы. Система использует его для распределения прав файлам и процессам.
Пользователи, включенные в несколько групп – В этом поле через запятую отображаются те пользователи, у которых по умолчанию (в файле /etc/passwd ) назначена другая группа.
На сегодняшний день хранение паролей в файлах passwd и group считается ненадежным. В новых версиях Linux применяются так
называемые теневые файлы паролей – shadow и gshаdow. Права на них назначены таким образом, что даже чтение этих файлов без
прав суперпользователя невозможно.
Нужно учесть, что нормальное функционирование системы при использовании теневых файлов подразумевает одновременно
и наличие файлов passwd и group. При использовании теневых паролей в /etc/passwd и /etc/group вместо самого пароля устанавливается символ ‘x’, что и является указанием на хранение пароля в /etc/shadow или /etc/gshadow.
Файлshadow хранит защищенную информацию о пользователях, а также обеспечивает механизмы устаревания паролей и учетных записей.
Вот структура файла shadow :
- а – имя пользователя ;
- б – шифрованный пароль – применяются алгоритмы хеширования, как правило MD5 или символ ‘!’, в случаях, когда интерактивный вход пользователя в систему запрещен;
- в – число дней с последнего изменения пароля, начиная с 1 января 1970 года;
- г – число дней, перед тем как пароль может быть изменен;
- д – число дней, после которых пароль должен быть изменен;
- е – число дней, за сколько пользователя начнут предупреждать, что пароль устаревает;
- ж – число дней, после устаревания пароля для блокировки учетной записи;
- з -дней, отсчитывая с 1 января 1970 года, когда учетная запись будет заблокирована;
- и – зарезервированное поле;
Файлgshadow так же накладывает дополнительную функциональность, вкупе с защищенным хранением паролей групп. Он имеет следующую структуру:
Имя группы – имя, используемое для удобства использования таких программ, как newgrp.
Шифрованный пароль – используется при смене группы командой newgrp . Пароль для групп может отсутствовать.
Администратор группы – пользователь, имеющий право изменять пароль с помощью gpasswd.
Список пользователей – В этом поле через запятую отображаются те пользователи, у которых по умолчанию (в файле /etc/passwd )
назначена другая группа.
2. В Linux, кроме обычных пользователей, существует один (и только один) пользователь с неограниченными правами. Идентификаторы UID и GID такого
пользователя всегда 0 .
Его имя, как правило, root , однако оно может быть легко изменено (или создано несколько символьных имен с одинаковым GID и UID), так как значение для применения неограниченных прав доступа имеет только GID 0
.
Для пользователя root права доступа к файлам и процессам не проверяются системой. При работе с
использованием учетной записи root необходимо быть предельно осторожным, т.к. всегда существует возможность уничтожить систему.
3. В Linux используется развитая система распределения прав пользователям. Но для точного опознания пользователя одного имени недостаточно с точки зрения безопасности. Именно поэтому используется и пароль – произвольный набор символов произвольной длины, обычно ограниченной лишь используемыми методами шифрования.
Сегодня в большинстве версий Linux пароли шифруются по алгоритмам 3DES и MD5 (устарело, теперь SHA512). Когда алгоритм3DES является обратимым, то есть такой пароль можно расшифровать, MD5 – это необратимое преобразование.
При аутентификации, пароль, введенный пользователем, шифруется тем же методом, что и исходный, а потом сравниваются уже зашифрованные копии. Если они одинаковые, то аутентификация считается успешной.
Учитывая ежедневно увеличивающиеся требования к безопасности, в Linux есть возможность использовать скрытые пароли. Файлы /etc/passwd и /etc/group доступны для чтения всем пользователям, что является довольно большой брешью в безопасности системы.
4. Командаlogin запускает сеанс интерактивной работы в системе. Она проверяет правильность ввода имени и пароля пользователя, меняет каталог на домашний, выстраивает окружение и запускает командный интерпретатор.