протокол Kerberos является универсальным протоколом аутентификации, основанным на распределении симметричных ключей шифрования некоторым доверенным сервером. Протокол Kerberos является открытым стандар-
том и описан в документе RFC 1510.
С помощью протокола Kerberos распределяются криптографические ключи в некоторой области (realm), которая имеет строковый идентификатор, как правило, совпадающий с именем DNS-домена. Например, для компьюте- ров DNS-домена example.com можно определить область Kerberos EXAMPLE.COM (имя области всегда заглавными буквами).
Каждая учетная запись в системе Kerberos называется сущностью (prin- cipal), причем учетные записи существуют не только для пользователей, но и
для каждого сервиса. Имя учетной записи имеет следующий вид:
«user@REALM» (где user — имя пользователя, а RELAM — имя области).
Например, имя учетной записи пользователя root из домена «example.com» —
«root@EXAMPLE.COM».
Учетные записи сервисов имеют вид <name1>/<name2>@REALM, где
name1 — как правило, имя сервиса, а name2 — полное DNS-имя компьютера.
Например, «HTTP/ws-linux.exampel.com@EXAMPLE.COM». Важно отметить,
что имена сущностей Kerberos чувствительны к регистру.
Рис. 7.6. Аутентификация по протоколу Kerberos
Информация обо всех учетных записях, а также их долговременные ключи (в случае пользователя это, например, хэш его пароля, т. е. ключ, кото- рый будет действителен не меньше месяца) хранятся на специальном сервере, называемом центром распределения ключей (Key Distribution Centre — KDC). Когда у пользователя появляется необходимость в использовании некоторого сервиса, то он обращается в центр распределения ключей с запросом кратко-
временного сеансового ключа. KDC возвращает ключ в двух вариантах — один зашифрован долговременным ключом пользователя, другой зашифрован долговременным ключом сервиса. Ответ KDC называется билетом, поскольку кроме ключа содержит и некоторую дополнительную информацию. После этого пользователь самостоятельно пересылает билет сервиса, и у них появля- ется некоторый общий секрет, который уже можно использовать как для ау- тентификации, так и для защиты канала (рис. 7.6).
Применение доверенного сервера, который хранит секреты всех своих пользователей, дает возможность обойтись без асимметричных алгоритмов
шифрования, что делает протокол Kerberos более легким в реализации и управлении.
На приведенной схеме видно, что каждый сервис должен хранить собственный долговременный ключ. В Unix-системах ключи сервисов хранятся в так называемом keytab-файле (понятно, что данный файл не должен быть доступен для чтения всем пользователям), в ОС Windows ключ хранится в ло- кальной базе учетных записей SAM (стандартными средствами просмотреть информацию о ключе невозможно).
Долговременный ключ пользователя, как уже упоминалось выше, —это, например, некоторая хэш-функция его пароля. Таким образом, в приве- денной выше схеме пользователь все равно должен вводить свой пароль при обращении к очередному сервису. Для обеспечения реальной возможности однократной аутентификации схема взаимодействия клиента, сервера и KDC реально несколько отличается от приведенной на рис. 7.6. В процессе аутен- тификации при входе в сеть пользователь получает специальный билет, назы- ваемый ticket granting ticket (TGT), использующийся для аутентификации пользователя в KDC (рис. 7.7).
Полученные пользователем билеты сохраняются в специальном защищенном кэше (в случае Unix-систем это файл, доступ к которому имеет только пользователь, получивший билет, в Windows — это защищенное хранилище
модуля SSPI, т. е. оперативная память). При необходимости билет может переместиться на другой компьютер (например, если пользователь открыл сеанс по SSH или RDP), но при этом действительным он останется только в том
случае, если в нем присутствует специальный флаг (соответственно, на KDC
можно задавать, какие из пользователей будут получать этот флаг в билете, а какие нет).
Из изложенного выше механизма следует, что KDC не аутентифицирует клиента перед самим собой. Аутентификация есть только неявная — смог ли клиент воспользоваться тем сеансовым ключом, который он получил, или нет.
Это создает две проблемы: во-первых, злоумышленник может получить билет пользователя и за какое-то время извлечь сеансовый ключ (например, если применялся слабый алгоритм шифрования); во-вторых, злоумышленник может запросить TGT и после пытаться взломать долговременный ключ пользователя.
Служба каталогов Active Directory (AD) — сервис, интегрированный с Windows NT Server. Она обеспечивает иерархический вид сети, наращиваемость и расширяемость, а также функции распределенной безопасности. Эта служба легко интегрируется с Интернетом, позволяет использовать простые и интуитивно понятные имена объектов, пригодна для использования в организациях любого размера и легко масштабируется. Доступ к ней возможен с помощью таких знакомых инструментов, как программа просмотра ресурсов Интернета. AD не только позволяет выполнять различные административные задачи, но и является поставщиком различных услуг в системе. На приведенном ниже рисунке схематично изображены основные функции службы каталогов.
В Active Directory концепция пространства имен Интернета объединена с системными службами каталогов, что дает возможность единым образом управлять различными пространствами имен в гетерогенных средах корпоративных сетей. В качестве основного в AD используется легкий протокол доступа к каталогу LDAP (lightweight directory access protocol), позволяющий действовать за рамками операционной системы, объединяя различные пространства имен. Active Directory может включать в себя каталоги других приложений или сетевых операционных систем, а также управлять ими, что значительно снижает нагрузку на администраторов и накладные расходы.
Каталог — поставщик услуг в системе
HTTP — стандартный протокол для отображения страниц Web. Active Directory дает возможность просмотреть любой объект в виде страницы Web. Расширения Internet Information Server, поставляемые совместно со службой каталога, преобразуют запросы к объектам каталога в страницы HTML. Active Directory позволяет централизовано администрировать все ресурсы, любые произвольные объекты и сервисы: файлы, периферийные устройства, базы данных, подключения к Web, учетные записи и др. В качестве поискового сервиса используется DNS. Все объекты внутри домена объединяются в организационные единицы (OU), составляющие иерархичные структуры. В свою очередь, домены могут объединяться в деревья. Администрирование упростилось по сравнению с предыдущими версиями: больше нет первичного и резервных контроллеров домена. Все контроллеры доменов, используемые службой каталогов, равноправны. Изменения можно вносить на любом контроллере, а на остальные они будут тиражироваться автоматически. Еще одна особенность Active Directory — поддержка нескольких хранилищ, в каждом из которых может находиться до 10 миллионов объектов. Понятно, что при таких возможностях эта служба каталогов прекрасно проявляет себя как в малых сетях, так и в больших системах.
Сфера влияния
Сфера влияния службы каталогов велика: любые объекты (пользователи, файлы, принтеры и др.), серверы в сети, домены и даже глобальные сети. А раз так, напрашивается вывод: возможности такой службы каталогов, как AD, практически безграничны, что делает ее полезной на отдельном компьютере, в большой сети, и в нескольких сетях.
Пространство имен
Как и любой каталог, Active Directory представляет собой некоторое пространство имен, то есть некоторую область, в которой данное имя может быть разрешено. Под разрешением имен понимается процесс, позволяющий сопоставить имя с объектом, ему соответствующим, или с информацией о таком объекте. К примеру, в файловой системе имя файла разрешается в расположение файла на диске.
Объект Под объектом подразумевается отдельный набор атрибутов, соответствующих чему-либо конкретному: например, пользователю, компьютеру или приложению. В атрибутах содержатся данные о субъекте, представленном данным объектом. Например, атрибуты пользователя могут включать его имя, фамилию, адреса домашний и электронной почты, семейное положение, заработную плату и т. д.
Контейнер Контейнер — это объект каталога, который может содержать в себе другие объекты (как, например, папка —это контейнер для документов, а шкаф — контейнер для папок). Контейнер каталога является контейнером объектов каталога.
Дерево Деревом называется иерархическая структура из объектов. Объекты, располагающиеся на ветвях этого дерева, называются листьями. В листьях не содержится других объектов, то есть листья не могут быть контейнерами. Контейнерами являются узловые точки дерева (места, из которых выходят ветви). Неразрывная часть дерева, включающая всех членов контейнера, называется смежным поддеревом. На рисунке внешний вид дерева показывает взаимосвязи между объектами.
Имя Имена используются для идентификации объектов в Active Directory. Существует два вида имен: отличительное имя DN (distinguished name) и относительно отличительное имя RDN (relatively distinguished name). Отличительное имя объекта содержит имя домена, в котором находится объект, а также полный путь к этому объекту в иерархии контейнера. Например, отличительное имя для идентификации пользователя Fyodor Zubanov в домене MicrosoftAO.RU будет выглядеть следующим образом: /0=Internet/DC=RU/DC=MiсrosoftAO/CN=Users/CN=Fyodor Zubanov. Относительное отличительное имя объекта — часть отличительного имени, являющаяся атрибутом объекта. В приведенном примере таковым для объекта пользователя Fyodor Zubanov является CN=Fyodor Zubanov, a RDN его родительского объекта — CN=Users.
Контексты имен и разделы
Active Directory состоит из одного или нескольких контекстов имен или разделов.
Контекст имени — это любое смежное поддерево каталога. Контексты имен являются единицами тиражирования. Для любого одиночного сервера всегда есть три контекста имен:
- схема;
- конфигурация (топология тиражирования и относящиеся к нему метаданные);
- один или несколько контекстов имен пользователей (поддеревья, содержащие действительные объекты каталога).
Домены Домены, как указывалось выше, являются организационными единицами безопасности в сети. Active Directory состоит из одного или нескольких доменов. Рабочая станция является доменом. Домен может охватывать несколько физических точек. В каждом домене — своя политика безопасности; отношения домена с другими также индивидуальны. Домены, объединенные общей схемой, конфигурацией и глобальным каталогом, образуют дерево доменов. Несколько доменных деревьев могут быть объединены в лес.
Дерево доменов
Дерево доменов состоит из нескольких доменов, использующих одну и ту же схему и конфигурацию, и образующих единое пространство имен. Домены в дереве связаны между собой доверительными отношениями. Служба Каталогов Active Directory состоит из одного или нескольких доменных деревьев.