Kerberos действует как надежная служба аутентификации третьей фирмы, используя общие секретные ключи.. В Windows 2000 общий секретный ключ генерируется при входе компьютера в домен. Поскольку обе стороны сеанса Kerberos доверяют KDC, они доверяют друг другу. На практике это доверие реализовано как безопасный обмен зашифрованными ключами, которые подтверждают участникам взаимодействия идентификационные данные другой стороны.
Аутентификация Kerberos работает следующим образом.
1. Клиент запрашивает возможный набор идентификационных данных для данного сервера у KDC, отправляя запрос в простом текстовом формате, содержащий имя клиента (идентификатор).
2. KDC ищет секретные ключи, как клиента, так и сервера в своей базе данных (Active Directory) и создает билет (ticket), содержащий случайный ключ сеанса, текущее время KDC, заданное политикой время окончания, и, в зависимости от параметров, любую другую информацию, хранимую в базе данных. В случае Windows 2000 в билете содержатся идентификаторы SID.
3. Билет зашифровывается с использованием секретного ключа клиента.
4. Создается второй билет, называемый билетом сеанса (session ticket), содержащий ключ сеанса и необязательные данные аутентификации, которые зашифровываются с использованием секретного ключа сервера.
5. Соединенные билеты передаются обратно клиенту. Серверу аутентификации нет необходимости явным образом проверять подлинность клиента, потому что только обладающий полномочиями клиент может расшифровать билет.
6. После того как клиент получил в свое распоряжение допустимый билет и ключ сеанса для сервера, он инициирует взаимодействие непосредственно с сервером. Для этого клиент конструирует удостоверение (authenticator), состоящее из текущего времени, имени клиента, по желанию — зависящую от приложения контрольную сумму и случайным образом сгенерированный начальный номер последовательности и/или подключ сеанса, используемые для извлечения уникального идентификатора сеанса для требуемой службы. Удостоверения действуют только для одной попытки и не могут применяться повторно или использоваться в атаках воспроизведения, потому что они зависят от текущего времени. Удостоверение шифруется при помощи ключа сеанса и передается вместе с билетом сеанса серверу, у которого запрашивается служба.
7. Когда сервер получает билет от клиента, он расшифровывает билет сеанса при помощи общего секретного ключа сервера (если существует более одного ключа, нужный ключ указывается в части билета в простой текстовой форме).
8. Затем сервер извлекает из билета ключ сеанса и использует его для расшифровки удостоверения. Способность сервера расшифровать билет подтверждает, что он был зашифрован при помощи секретного ключа сервера, известного только KDC и самому серверу, таким образом, подлинность клиента подтверждается. Удостоверение используется для гарантии того, что взаимодействие недавнее и не является атакой на основе повторного запроса.
Билеты могут повторно использоваться в течение периода, определяемого политикой безопасности домена, но не превышающего восьми часов. Клиенты кэшируют свои билеты сеанса в безопасном месте, расположенном в оперативной памяти, и уничтожают их по истечению срока действия.
Kerberos сокращает предоставление билетов, во время первого контакта с клиентом предоставляя билет сеанса самому себе так же, как и запрашиваемому серверу. КОС отвечает на этот первоначальный запрос — сначала предоставляя билет сеанса для последующих запросов о билетах, называемый Ticket-Granting Ticket (билет на предоставление билетов, TGT), и затем — билет сеанса для запрашиваемого сервера. TGT устраняет потребность в дальнейшем проводимом Active Directory поиске клиента, осуществляя предварительную аутентификацию последующих запросов о билетах точно таким же способом, каким Kerberos осуществляет аутентификацию всех остальных запросов. Как и любой билет сеанса, билет TGT действителен до истечения срока действия, который зависит от политики безопасности домена.
Kerberos технически делится на две службы: службу TGT (единственную службу, которая действительно осуществляет аутентификацию в Active Directory) и службу предоставления билетов, выдающую билеты сеансов по получении допустимого TGT.
6.1.2. Доверительные отношения между доменами
Kerberos работает через границы домена (домены в терминологии Kerberos называются сферами (realm), эти термины эквивалентны).
Имя домена, к которому принадлежит принципал безопасности, является частью имени принципала безопасности. Членство в одном дереве Active Directory автоматически создаст междоменные ключи Kerberos между родительским доменоми его дочерними доменами.
Обмен междоменными ключами регистрирует контроллеры домена одного домена в качестве принципалов безопасности в доверенном домене. Эта простая концепция дает возможность любому принципалу безопасности в домене получить билет сеанса в чужом КОС.
1. Когда принципал безопасности в одном домене хочет обратиться к принципалу безопасности в соседнем домене (один из доменов родительский, другой дочерний), он отправляет запрос о билете сеанса своему локальному КОС.
2. КОС определяет, что сервер назначения не находится в локальном домене, и отвечает клиенту, отправляя ему билет направления (referral ticket), который является билетом сеанса, зашифрованный при помощи междоменного ключа.
3. Клиент использует билет направления для запроса билета сеанса непосредственно у чужого KDC.
4. Чужой KDC расшифровывает билет направления, потому что обладает междоменным ключом, подтверждающим, что доверенный контроллер домена доверяет клиенту (иначе он не предоставил бы ключ направления).
5. Чужой KDC предоставляет билет сеанса, допустимый для чужого сервера назначения.
Для более удаленных доменов этот процесс просто повторяется. Для доступа к принципалу безопасности в домене, расположенном на расстоянии двух узлов в иерархии доменов Active Directory, клиент запрашивает билет сеанса для сервера назначения в своем KDC, который в ответ пересылает ему билет направления к следующему домену в пути. Затем клиент запрашивает билет сеанса, используя только что полученный билет назначения. Этот сервер просто ответит билетом назначения, допустимым для следующего сервера в цепочке. Этот процесс будет продолжаться до тех пор, пока не будет достигнут локальный домен для принципала безопасности назначения. В этот момент ключ сеанса (технически — TGT и ключ сеанса) предоставляется запрашивающему клиенту, который затем сможет пройти аутентификацию непосредственно у принципала безопасности назначения.
Последняя важная концепция в аутентификации Kerberos — делегирование аутентификации. Делегирование аутентификации (delegation of authentication) — это механизм, посредством которого принципал безопасности дает возможность другому принципалу безопасности, с которым у него установлен сеанс, запрашивать аутентификацию от своего имени у третьего принципала безопасности. Этот механизм важен в многозвенных приложениях, таких как web-узел с поддержкой базы данных. При помощи делегирования аутентификации клиент—web-браузер может пройти аутентификацию у web-cepвера и затем предоставить web-серверу специальный билет TGT, который сервер сможет использовать для запроса билетов сеансов от своего имени, web-сервер сможет затем использовать передаваемые web-клиентом идентификационные данные для аутентификации на сервере баз данных.
6.1.3. Групповые политики
Групповая политика (Group Policy) — это основной механизм Windows 2000 при управлении конфигурацией клиентских рабочих станций для контроля за безопасностью и для администрирования. Политики (policy) — это, в общем случае, просто наборы изменений в установках компьютера по умолчанию. Политики обычно организуются так, чтобы отдельные политики содержали изменения, реализующие конкретную цель — например, отключение или включение шифрования файловой системы или контроль за программами, которые разрешено запускать пользователю.
Групповые политики (Group Policies) применяются к элементам контейнера Active Directory (таким, как домен или Organizational Unit (Подразделение)). Группы безопасности могут быть использованы для фильтрации групповых политик, но политики нельзя применять к группам безопасности. Групповая политика Windows 2000 не является только механизмом безопасности — ее основное предназначение состоит в управлении изменениями и конфигурацией, — но она позволяет администраторам создавать дополнительные системы безопасности, ограничивая свободу действий пользователей. Групповые политики можно применять для управления следующими элементами политик компьютера (computer policy):
- настройки реестра, связанные с конфигурацией и управлением безопасности;
- установка программного обеспечения;
- сценарии, выполняющиеся при загрузке-завершении работы и входе-выходе из системы;
- запуск служб;
- разрешения реестра;
- разрешения NTFS;
- политики открытого ключа;
- политики IPSec;
- настройки системы, сети и компонентов Windows.
Групповые политики можно применять для управления следующими элементами политик пользователя (user policy):
- установка программного обеспечения;
- настройки Internet Explorer;
- сценарии входа-выхода в систему;
- настройки безопасности;
- Remote Installation Service (служба удаленной установки);
- перенаправление папок;
- компоненты Windows;
- настройки стартового меню, панели задач, рабочего стола и Control Panel (Панель управления);