Обмен сообщениями при образовании безопасного канала происходит следующим образом.
1. Windows NT-компьютер (клиент) устанавливает сеансы TCP/IP и NetBIOS с соответствующим контроллером домена (сервером), способным проверять пользователей при входе в домен.
2. Открывается анонимный доступ к ресурсу IРС$. Для этого сначала согласуется диалект протокола SMB командой SMB_COM_NEGO-TIATE. Далее открывается анонимный сеанс SMB, т.е. в запросе SMB_COM_SESSION_SETUP_ANDX указывается пустое имя пользователя и пароль, и, наконец, командой SMB_COM_TREE_CON-NECT подключается дерево с именем IРС$.
3. Клиент, используя команду SMB_COM_CREATE_ANDX протокола SMB, создает на контроллере домена именованный канал (named pipe) с именем NETLOGON. Передаваемая по нему информация будет обрабатываться службой NetLogon контроллера домена.
4. Используя именованный канал NETLOGON, клиент инициирует установление связи по механизму удаленного вызова процедур (RPC Bind), передавая серверу номера и версии интерфейсов, один из которых — Abstract Interface UUID = 12345678-1234-ABCD-EFOO-01234567CFFB — требуется самому клиенту, а другой — Transfer Interface UUID = 8A885D04-1CEB-11C9-9FE8-08002B104860 — нужен серверу для передачи. Интерфейс представляет собой обозначение некоторой библиотеки процедур, исполнение которых может быть вызвано с удаленного компьютера. Сервер подтверждает существование запрошенного интерфейса. Подтверждение содержит, в частности, имя службы, с которой устанавливается взаимодействие — в данном случае это \PIPE\lsass, т.е. подсистема локального администратора безопасности сервера.
5. Далее идет собственно образование безопасного канала, включающее удаленный вызов двух процедур. Первой клиент вызывает процедуру NetrServerReqChallenge. В качестве параметров в запросе передается имя сервера, с которым устанавливается безопасный канал, имя клиента (в данном случае имя компьютера) и «вызов клиента» — последовательность из 8 случайных байтов. Возвращаемый сервером клиенту результат работы процедуры — «вызов сервера», тоже последовательность из 8 случайных байтов, отличная от «вызова клиента». Используя оба «вызова» и хешированный пароль данного компьютера, и клиент, и сервер вычисляют так называемый ключ сеанса (session key), применяемый впоследствии для проверки подлинности передаваемой по безопасному каналу информации.
6. После этого клиент рассчитывает свой мандат (credentials), дважды шифруя свой «вызов» ключом сеанса по алгоритму DES. Мандат — 8 байтов, призванных доказать серверу, что клиент знает свой «вызов» и ключ сеанса, — посылается как один из параметров при удаленном вызове процедуры NetrServerAuthenticate2. Другие параметры этой процедуры — имена сервера, самого Windows NT-компьютера и его учетной записи в домене.
Если принятая сервером информация совпадает с рассчитанной им самим (напомним, что сервер уже знает и ключ сеанса, и «вызов клиента»), он отвечает клиенту подтверждением успешного выполнения RPC. Одновременно клиенту для проверки подлинности передается мандат сервера, рассчитанный теперь уже на основе «вызова» сервера. Клиент проверяет эту информацию, сравнивая полученные 8 байтов с рассчитанными им самим, и в случае совпадения процедура организации безопасного канала успешно завершается. Важное примечание: мандаты клиента и сервера сохраняются и в дальнейшем служат для проверки подлинности учетных записей как пользователей при их входе в домен, так и Windows NT-компьютеров — например, при смене пароля рабочей станции в домене.
Взаимная проверка подлинности Windows NT-компьютера и контроллера домена — обязательное условие последующего входа пользователей с этого компьютера в домен.
Сквозная проверка подлинности (pass-through authentication) происходит, когда компьютер не может идентифицировать пользователя, привлекая свою локальную базу данных учетных записей, а именно:
При интерактивном входе в систему на рабочей станции с Windows NT Workstation или на отдельном сервере Windows NT Server, если в поле Domain диалогового окна Logon Information указано имя домена или доверяемого домена. При этом компьютер по безопасному каналу передает запрос на проверку подлинности контроллеру своего домена. Контроллер проверяет введенное имя домена и, если оно совпадает с именем его собственного, сам проверяет подлинность с помощью своей базы учетных записей и возвращает идентификационную информацию компьютеру входа. Если указанное в поле Domain имя не совпадает с именем домена, к которому он принадлежит, контроллер проверяет, не совпадает ли данное имя с именем доверяемого домена. При совпадении устанавливается безопасный канал с контроллером доверяемого домена, и ему передается запрос на проверку подлинности данного пользователя. Контроллер доверяемого домена обрабатывает этот запрос, сверяя полученную информацию с той, что храниться в его базе данных, и посылает идентификационные данные исходному контроллеру домена, который в свою очередь передает их компьютеру входа. Если учетная запись пользователя не найдена, попытка входа завершается неудачей.
Интерактивный вход на компьютере с операционной системой Windows NT начинается после того, как пользователь, нажав комбинацию клавиш Ctrl+Alt+Delete, вызывает диалоговое окно Logon Information и вводит свою регистрационную информацию. При этом в поле Domain выбирается либо имя домена, либо имя доверяемого домена, либо имя компьютера, где зарегистрирован этот пользователь (если компьютер не является членом домена, поле Domain просто не появляется в диалоговом окне Logon Information).
После щелчка кнопки ОК компьютер проверяет имя домена. Если имя, введенное в поле Domain, совпадает с именем компьютера, подлинность пользователя проверяется на основании информации из локальной базы данных. Это просто вход в компьютер с операционной системой Windows NT, а не в домен. Если же имя в поле Domain отличается от имени компьютера, т.е. это имя либо своего, либо доверяемого домена, компьютер входа посылает введенные данные контроллеру своего домена. Контроллер анализирует имя домена, а затем либо сам проверяет подлинность введенной пользователем информации, либо передает ее для проверки контроллеру доверяемого домена.
При удаленном входе в компьютер с Windows NT регистрационная информация о пользователе передается от клиента к серверу по протоколу SMB. Однако если сервер не является контроллером домена, то идет такая же процедура сквозной проверки подлинности, что и при интерактивном входе. Полученные Windows NT-компьютером по протоколу SMB сведения (в частности, зашифрованный с помощью хешированного пароля пользователя «вызов» сервера) передаются между компьютерами Windows NT с помощью запроса RPC NetrLogonSamLogon. При этом дополнительное шифрование ключом, согласованным при установлении безопасного канала, не производится.
При первом входе пользователя в домен с какого-либо компьютера контроллер домена передает проверенную информацию о нем на компьютер входа. Эта информация кэшируется компьютером в локальном реестре в разделе HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets и в дальнейшем может служить для проверки подлинности пользователей, когда ни один контроллер домена не доступен.
Таким образом, даже если все контроллеры домена выключены, несколько (по умолчанию 10) пользователей, которые последними интерактивно регистрировались в домене с данного компьютера, смогут войти в домен с помощью кэшированных данных. Регистрационная информация о пользователях, входивших в компьютер, а не в домен, также хранится в локальной базе данных этого Windows NT-компьютера.
Клиентские компьютеры, работающие под управлением Windows 95, Windows for Workgroups, MS-DOS, Macintosh или LAN Manager 2.x, могут взаимодействовать с доменами. Их принципиальное отличие от Windows NT-компьютеров в том, что они не регистрируются в базе данных каталога домена. С точки зрения защиты, эти клиенты заметно уступают клиентам с операционной системой Windows NT и, естественно, представляют собой намного большую угрозу системе безопасности сети.
И все же пользователи этих компьютеров могут иметь учетные записи в базе данных домена. Их вход в домен с клиентских компьютеров управляется контроллером домена.
Компьютеры клиентов не получают регистрационной информации о пользователе, которая могла быть кэширована на рабочей станции и впоследствии задействована для доступа к ресурсам. Поэтому, если при входе с компьютера указанных выше клиентов контроллер домена недоступен, пользователь не сможет работать с сетевыми ресурсами.
Указанные клиенты не имеют возможности выбрать имя доверяемого домена при входе в систему, поскольку такие компьютеры жестко привязаны к определенному домену. Однако эти пользователи могут соединяться с Windows NT-компьютерами как своего, так и других доменов. При этом учетные данные пользователя обрабатываются в таком порядке (до момента успешной регистрации): сначала самим компьютером, затем контроллером домена, к которому компьютер принадлежит, и — при соединении с компьютером доверяющего домена — контроллером доверяемого домена.