Как только Вы слышите о процессе входа в систему в окружении Windows, Вы вспоминаете о том, что пользователь нажимает комбинацию клавиш ctrl-alt-delete и вводит свои учетные данные (имя пользователя и пароль) для получения доступа к системе. Учетные данные позволяют пользователю получить доступ к ресурсам компьютера, на котором он работает, а также, если компьютер подключен к сети, то и к таким сетевым ресурсам, как приложения, файлы и принтеры, которыми пользователю разрешено пользоваться.
Процесс, который позволяет пользователям получать доступ к ресурсам, начинается не тогда, когда пользователь входит в систему, а еще задолго до того, как система будет загружена. В домене Windows 2000 компьютер должен быть настроен в качестве члена домена для того, чтобы пользователи могли входить в его систему и получать доступ к другим сетевым ресурсам.
Цель данного раздела – показать то, что происходит при загрузке и входе в систему Windows 2000. Возможность использования NetBIOS поверх протокола TCP/IP отключена на всех компьютерах для того, чтобы сфокусироваться на рассмотрении трафика, генерируемого в сети, в которой используются только компьютеры, работающие под управлением ОС Windows 2000.
Однако, имеется возможность настройки каждого компьютера, позволяющая взаимодействовать с клиентами Windows NT, Windows 95 и Windows 98. Детальное описание трафика, генерируемого клиентами Windows NT при загрузке и входе в систему, Вы можете найти в разделе „Сетевой трафик, генерируемый клиентом в Active Directory” книги Организация служб предприятия Active Directory: полевые заметки ("Active Directory Client Network Traffic" chapter of the Notes from the Field series book Building Enterprise Active Directory Services) (EN). Ниже на рисунке приводятся используемые настройки.
Процесс загрузки компьютера
Компьютер, который входит в домен Windows 2000, проходит через процесс загрузки, который подключает его к своему домену. Процесс загрузки позволяет службам компьютера взаимодействовать с другими службами в сети, а также (что является более важным) он просто необходим для того, чтобы пользователи могли использовать интерактивный вход в систему. Ниже представлена схема процесса загрузки компьютера.
Увеличить рисунок Подключение к сети
Процесс загрузки компьютера начинается с того, что компьютер подключается к сети и загружает протокол TCP/IP. Настройки TCP/IP позволяют использовать статические или динамические параметры сети. Применение динамической конфигурации предполагает использование DHCP – известной технологии, которая является одним из основных компонентов ОС Windows Server. Использование статической конфигурации означает, что настройка параметров TCP/IP на компьютере осуществляется вручную. Обычно статическая адресация применяется на тех ресурсах сети, изменения в которых происходит не так часто. Обычно это маршрутизаторы или серверы. В примерах, используемых в этом документе, единственными системами, которые используют статическую адресацию, будут серверы.
При подключении клиента к сети процесс DHCP начинает отправку в сеть пакетов. Последовательность из команд "Discover", "Offer", "Request" и "ACK", отправленных в четырех первых пакетах, означают работу DHCP. Эти четыре пакета в сумме генерируют 1342 байта сетевого трафика (приблизительно по 342 байта на каждый пакет DHCP), но эта цифра может меняться в зависимости от количества выбранных настроек DHCP. Команды RARP (Reverse ARP) в пакетах с 5 по 8 используются клиентом для того, чтобы убедиться, что адрес не используется другим компьютером в сети. Каждый RARP-пакет генерирует приблизительно 60 байтов сетевого трафика или приблизительно 300 байтов для последовательности, используемой для проверки адреса.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | *широковещательный пакет (*BROADCAST) | DHCP | Команда обнаружения «Discover» |
2 | Сервер | *широковещательный пакет (*BROADCAST) | DHCP | Команда предложения «Offer» |
3 | Клиент | *широковещательный пакет (*BROADCAST) | DHCP | Команда запроса «Request» |
4 | Сервер | *широковещательный пакет (*BROADCAST) | DHCP | Команда подтверждения «ACK» |
5 | Клиент | *широковещательный пакет (*BROADCAST) | ARP_RARP | ARP: Запрос, IP-адрес получателя: 10.0.0.100 |
6 | Клиент | *широковещательный пакет (*BROADCAST) | ARP_RARP | ARP: Запрос, IP-адрес получателя: 10.0.0.100 |
7 | Клиент | *широковещательный пакет (*BROADCAST) | ARP_RARP | ARP: Запрос, IP-адрес получателя: 10.0.0.100 |
8 | Сервер | *широковещательный пакет (*BROADCAST) | ARP_RARP | ARP: Ответ, IP-адрес получателя: 10.0.0.100 |
Необходимо отметить то, что если клиенту уже был выделен адрес, то при перезагрузке он будет обновлен DHCP-сервером. Для обновления будут использоваться только два пакета: пакет запроса (Request) и пакет подтверждения (Ack), указанные ниже в таблице в первых двух строках. При том клиент будет использовать RARP, чтобы убедиться в том, что его адрес никто не использует.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | *широковещательный пакет (*BROADCAST) | DHCP | Команда запроса «Request» |
2 | Сервер | *широковещательный пакет (*BROADCAST) | DHCP | Команда подтверждения «ACK» |
3 | Клиент | *широковещательный пакет (*BROADCAST) | ARP_RARP | ARP: Запрос, IP-адрес получателя: 10.0.0.100 |
4 | Клиент | *широковещательный пакет (*BROADCAST) | ARP_RARP | ARP: Запрос, IP-адрес получателя: 10.0.0.100 |
5 | Клиент | *широковещательный пакет (*BROADCAST) | ARP_RARP | ARP: Запрос, IP-адрес получателя: 10.0.0.100 |
6 | Сервер | *широковещательный пакет (*BROADCAST) | ARP_RARP | ARP: Ответ, IP-адрес получателя: 10.0.0.100 |
Обнаружение контроллера домена
Клиентскому компьютеру необходимо получать самую последнюю информацию о конфигурации сети во время каждой фазы загрузки. Поэтому он должен обнаружить хотя бы один контроллер домена в своем домене.
В домене Windows 2000 каждый контроллер домена также является LDAP-сервером. Для получения списка доступных контроллеров домена клиенту необходимо запросить у DNS SRV-записи источников с именем
_ldap._tcp.dc._msdcs.DnsDomanName .
Ниже в таблице представлен обмен пакетами, происходящий при этом процессе:
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | DNS | 0x1:Std Qry for _ldap._tcp.dc._msdcs.main.local. of type Srv Loc on class INET addr. |
2 | Сервер | Клиент | DNS | 0x1:Std Qry Resp. for _ldap._tcp.dc._msdcs.main.local. of type Srv Loc on class INET addr |
Домен Windows 2000 является некой административной границей, которая не зависит от структуры имеющейся сети. Компьютеры в сетевом окружении могут быть объединены в сайты. Сайт в Windows 2000 представляет собой набор IP-подсетей, использующих быстрое, надежное соединение друг с другом. На практике сети LAN или сети, имеющие более быстрое соединение, рассматриваются как сети с высокой пропускной способностью, достаточной для организации сайта на их основе. Домен может охватывать несколько сайтов, кроме того, один сайт может входить в состав нескольких доменов.
Увеличить рисунок Во время запуска клиентского компьютера служба локатора (locator service) пытается обнаружить ближайший сайт и сохранить его имя в реестре. Если клиенту известно, к какому сайту он принадлежит, то он может запросить у DNS-сервера данные о контроллерах домена его сайта. Формат такого запроса следующий:
_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.DnsDomanName
Ниже приводится последовательность пакетов, обмен которыми происходит во время этого процесса.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | DNS | 0x1:Std Qry for _ldap._tcp.Default- First-Site- Name._sites.dc._msdcs.dcclab.local. of type Srv Loc on class INET addr. |
2 | Сервер | Клиент | DNS | 0x1:Std Qry Resp. for _ldap._tcp.Default-First-Site- Name._sites.dc._msdcs.dcclab.local. of type Srv Loc on class INET addr. |
Ниже представлен процесс поиска клиентом службы LDAP с помощью DNS-запроса с указанием параметра "По_умолчанию-Первое-Имя-Сайта" ("Default-First-Site-Name"). Где «По_умолчанию-Первое-Имя-Сайта» ("Default-First-Site-Name") - это первое имя сайта домена Windows 2000, заданное по умолчанию при его создании.
Список контроллеров домена можно просмотреть с помощью оснастки DNS консоли MMC. Ниже на рисунке показано окно оснастки DNS. При расширенном просмотре Вы можете увидеть контроллеры домена, которые зарегистрировали свои службы Kerberos и LDAP для данного сайта.
В случае, если DNS-сервер обнаружил запрашиваемую информацию, он отсылает назад список всех ему известных контроллеров домена сайта.
DNS: Answer section: _ldap._tcp.Site2._sites.dc._msdcs.dcclab.local. of type Srv Loc
on class INET addr.(2 records present)
DNS: Resource Record: dcclab22.dcclab.local. of type Host Addr on class INET addr.
DNS: Resource Record: dcclab21.dcclab.local. of type Host Addr on class INET addr.
Клиент случайным образом выбирает один контроллер домена для дальнейшего взаимодействия, при этом он не делает различия между локальными и удаленными подсетями, поскольку считает, что каждый член сайта является компьютером, расположенным на достаточно близком расстоянии от него.
Как было ранее отмечено, имеется возможность выбора контроллера домена в виде концепции сайта. После обнаружения контроллера домена клиент с помощью LDAP-запросов пытается определить, является ли данный контроллер наиболее близким.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | LDAP | ProtocolOp: SearchRequest (3) |
2 | Сервер | Клиент | LDAP | ProtocolOp: SearchResponse (4) |
3 | Клиент | Сервер | LDAP | ProtocolOp: SearchRequest (3) |
4 | Сервер | Клиент | LDAP | ProtocolOp: SearchResponse (4) |
Клиент осуществляет поиск по следующим атрибутам, которые он указывает в своем запросе:
• | DNS-имя домена. |
• | Имя узла. |
• | Глобальный уникальный идентификатор домена (Domain GUID). |
• | Идентификатор безопасности домена (Domain SID). |
В том случае, если данные контроллера домена совпадает с той информацией, что указана в базе данных Active Directory для него, он отсылает назад следующую информацию о себе:
• | DomainControllerName |
• | DomainControllerAddress |
• | DomainControllerAddressType |
• | DomainGUID |
• | DomainName |
• | DNSForestName |
• | DCSiteName |
• | ClientSiteName |
Наиболее важной для клиента информацией является имя сайта. В шестнадцатеричном дампе ответа, полученного от сервера, будет содержаться только одно имя сайта в том случае, если клиент является членом сайта, к которому принадлежит контроллер домена:
00000: 00 A0 C9 F1 A0 00 00 01 02 33 BF E7 08 00 45 00 . ....3..E.
00010: 00 D4 E9 90 00 00 80 11 00 00 0A 00 00 16 0A 00 ._...........
00020: 00 18 01 85 04 04 00 C0 B6 57 30 84 00 00 00 9C ......[para]W0...
00030: 02 01 02 64 84 00 00 00 93 04 00 30 84 00 00 00 ...d..."..0...
00040: 8B 30 84 00 00 00 85 04 08 6E 65 74 6C 6F 67 6F 0.....netlogo
00050: 6E 31 84 00 00 00 75 04 73 17 00 00 00 FD 01 00 n1...u.s......
00060: 00 48 44 82 88 4E 79 85 47 A8 CA 16 1D 55 23 B2 .HDNyG..U#
00070: E0 06 64 63 63 6C 61 62 05 6C 6F 63 61 6C 00 C0 .dcclab.local.
00080: 18 08 64 63 63 6C 61 62 32 32 C0 18 06 44 43 43 ..dcclab22..DCC
00090: 4C 41 42 00 08 44 43 43 4C 41 42 32 32 00 09 44 LAB..DCCLAB22..D
000A0: 43 43 4C 41 42 32 34 24 00 17 44 65 66 61 75 6C CCLAB24$..Defaul
000B0: 74 2D 46 69 72 73 74 2D 53 69 74 65 2D 4E 61 6D t-First-Site-Nam
000C0: 65 00 C0 50 05 00 00 00 FF FF FF FF 30 84 00 00 e.P....0..
000D0: 00 10 02 01 02 65 84 00 00 00 07 0A 01 00 04 00 .....e.........
000E0: 04 00 ..
В случае, если клиент взаимодействует с контроллером домена, который не входит в сайт, членом которого является клиент, контроллер домена также в ответе указывает имя сайта, к которому принадлежит клиент:
00000: 00 20 78 E0 AA 2B 00 20 78 01 80 69 08 00 45 00 . x+. x.i..E.
00010: 00 C9 FD A8 00 00 7F 11 28 64 0A 00 00 16 0B 00 ....(d......
00020: 00 02 01 85 04 03 00 B5 C8 55 30 84 00 00 00 91 ......U0...'
00030: 02 01 01 64 84 00 00 00 88 04 00 30 84 00 00 00 ...d.....0...
00040: 80 30 84 00 00 00 7A 04 08 6E 65 74 6C 6F 67 6F 0...z..netlogo
00050: 6E 31 84 00 00 00 6A 04 68 17 00 00 00 7D 01 00 n1...j.h....}..
00060: 00 48 44 82 88 4E 79 85 47 A8 CA 16 1D 55 23 B2 .HDNyG..U#
00070: E0 06 64 63 63 6C 61 62 05 6C 6F 63 61 6C 00 C0 .dcclab.local.
00080: 18 08 64 63 63 6C 61 62 32 32 C0 18 06 44 43 43 ..dcclab22..DCC
00090: 4C 41 42 00 08 44 43 43 4C 41 42 32 32 00 0B 44 LAB..DCCLAB22..D
000A0: 43 43 52 4F 55 54 45 52 32 24 00 05 53 69 74 65 CCROUTER2$..Site
000B0: 32 00 05 53 69 74 65 31 00 05 00 00 00 FF FF FF 2..Site1.....
000C0: FF 30 84 00 00 00 10 02 01 01 65 84 00 00 00 07 0.......e....
000D0: 0A 01 00 04 00 04 00 .......
В этом случае клиент посылает еще один запрос DNS-серверу, с просьбой представить список контроллеров, входящих в этот сайт. Ниже представлена таблица, в которой представлен обмен пакетами, происходящий в такой ситуации. Клиент пытается отыскать контроллер домена в Сайте2 (Site2) и после LDAP-запросов он обращается к Сайту1 (Site1).
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | DNS | 0x1:Std Qry for _ldap._tcp.Site2._sites.dc._msdcs.dcc lab.local. |
2 | Сервер | Клиент | DNS | 0x1:Std Qry Resp. for _ldap._tcp.Site2._sites.dc._msdcs.dcc lab.local |
3 | Клиент | Сервер | LDAP | ProtocolOp: SearchRequest (3) |
4 | Сервер | Клиент | LDAP | ProtocolOp: SearchResponse (4) |
5 | Клиент | Сервер | LDAP | ProtocolOp: SearchRequest (3) |
6 | Сервер | Клиент | LDAP | ProtocolOp: SearchResponse (4) |
7 | Клиент | Сервер | DNS | DNS 0x2:Std Qry for _ldap._tcp.Site1._sites.dc._msdcs.dcc lab.local. |
8 | Клиент | Сервер | DNS | 0x2:Std Qry Resp. for _ldap._tcp.Site1._sites.dc._msdcs.dcc lab.local |
Нет необходимости в наличии контроллера домена в каждом сайте. Каждый контроллер домена проверяет все сайты в лесу и стоимость репликации. Контроллер домена регистрирует себя на всех сайтах, в которых нет контроллера домена, а также для которых стоимость репликации минимальна. Этот процесс также известен как автоматическое обслуживание сайта (automatic site coverage). Это означает, что клиенты будут использовать следующий контроллер домена, стоимость доступа к которому минимальна.
В процессе поиска ближайшего контроллера домена используются 10 сетевых пакетов, создающие трафик общим объемом приблизительно 2000 байтов.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | ARP_RARP | ICMP Эхо-запрос: от 10.00.00.24 к 10.00.00.22 |
2 | Сервер | Клиент | ARP_RARP | ICMP Эхо-ответ: к 10.00.00.24 от 10.00.00.22 10.0.0.22 10.0.0.24 |
3 | Клиент | Сервер | DNS | 0x1:Std Qry for _ldap._tcp.Default- First-Site- Name._sites.dc._msdcs.dcclab.local. |
4 | Клиент | Сервер | DNS | 0x2:Std Qry for _ldap._tcp.Default- First-Site- Name._sites.dc._msdcs.dcclab.local. |
5 | Сервер | Клиент | DNS | 0x1:Std Qry Resp. for _ldap._tcp.Default-First-Site- Name._sites.dc._msdcs.dcclab. |
6 | Сервер | Клиент | DNS | 0x2:Std Qry Resp. for _ldap._tcp.Default-First-Site- Name._sites.dc._msdcs.dcclab. |
7 | Клиент | Сервер | LDAP | ProtocolOp: SearchRequest (3) |
8 | Сервер | Клиент | LDAP | ProtocolOp: SearchResponse (4) |
9 | Клиент | Сервер | LDAP | ProtocolOp: SearchRequest (3) |
10 | Сервер | Клиент | LDAP | ProtocolOp: SearchResponse (4) |
11 | Клиент | Сервер | ARP_RARP | ICMP Эхо-запрос: от 10.00.00.24 к 10.00.00.22 |
12 | Клиент | Сервер | ARP_RARP | ICMP Эхо-ответ: к 10.00.00.24 от 10.00.00.22 10.0.0.22 10.0.0.24 |
Более подробную информацию о процессе поиска домена можно получить из раздела «Разрешение имен в Active Directory» документации Windows 2000 Resource Kit (chapter "Name Resolution in Active Directory" of the Windows 2000 Resource Kit) (EN).
Установление безопасного канала к контроллеру домена
После того, как клиент определит свой сайт и контроллер домена, он может установить безопасный канал к своему контроллеру домена. Безопасный канал – это соединение между членом домена и контроллером домена, устанавливаемое для получения особой информации домена, для обновления особой информации о компьютере в Active Directory (например, пароля), а также для проверки членства в домене.
Процесс начинается с согласования того, какой SMB-диалект будут использовать обе стороны. После того, как первый вариант протокола SMB был выпущен в 1984 году, его неоднократно пересматривали и вносили в него дополнения. Это означает то, что клиент и сервер могут использовать различные SMB-диалекты. В таком случае ОС Windows 2000 с обеих сторон должны использовать диалект NTLM 0.12. Этот диалект позволяет использовать кодировку Юникод (Unicode) при обмене информацией. До этого обмен данными происходил в кодировке ASCII. Преимуществом записей в кодировке Юникод является то, что они могут включать имена файлов, имена ресурсов и имена пользователей.
Процесс продолжается соединением с интерфейсом сетевого входа (netlogon interface) сервера. В данном процессе должен использоваться сопоставитель конечных портов (End Port Mapper) для того, чтобы подключить клиента к правильному порту сервера. В конце данного процесса клиент отсылает три пакета (NetrServerReqChallenge, NetrServerAuthenticate3 и NetrLogonGetdomainInfo) на этот интерфейс. В течение всего этого процесса генерируется приблизительно 4600 байтов трафика.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | SMB | C согласование, диалект = NT LM 0.12 |
2 | Сервер | Клиент | SMB | R negotiate, Dialect # = 5 |
3 | Клиент | Сервер | MSRPC | c/o RPC-привязка: UUID E1AF8308-5D1F- 11C9-91A |
4 | Сервер | Сервер | MSRPC | c/o RPC-привязка Ack: call 0x1 assoc grp 0xD52C |
5 | Клиент | Сервер | MSRPC | c/o RPC-запрос: call 0x1 opnum 0x3 contex |
6 | Сервер | Клиент | MSRPC | c/o RPC-ответ: call 0x1 context |
7 | Клиент | Сервер | MSRPC | c/o RPC-привязка: UUID 12345678-1234- ABCD-EF0 |
8 | Сервер | Клиент | MSRPC | c/o RPC-привязка Ack: call 0x1 assoc grp 0x1C04B |
9 | Клиент | Сервер | R_LOGON | RPC-вызов клиента logon:NetrServerReqChallenge(..) |
10 | Сервер | Клиент | R_LOGON | RPC-ответ сервера logon:NetrServerReqChallenge() |
11 | Клиент | Сервер | R_LOGON | Ошибка: Bad Opcode (Функция не существует) |
12 | Сервер | Сервер | R_LOGON | Ошибка: Bad Opcode (Функция не существует) |
13 | Клиент | Клиент | MSRPC | c/o RPC-привязка: UUID 12345678-1234- ABCD-EF0 |
14 | Сервер | Клиент | MSRPC | c/o RPC-привязка Ack: call 0x3 assoc grp 0x1C04B |
15 | Клиент | Клиент | R_LOGON | Ошибка: Bad Opcode (Функция не существует) |
16 | Сервер | Клиент | R_LOGON | Ошибка: Bad Opcode (Функция не существует) |
Примечание. Текущая версия программы Netmon не может корректно обрабатывать вызовы NetrServerAuthenticate3 и NetrLogonGetdomainInf. Поэтому выше в таблице эти вызовы отмечены как ошибки с отметкой Bad Opcode.
Важно. В случае, если сетевое окружения является смешанным (после того, как производилось обновление домена с Windows NT 4 на Windows 2000), необходимо помнить о следующей возможной ситуации. В случае, если единственным доступным контроллером домена для проверки подлинности клиента Windows 2000 будет резервный контроллер домена Windows NT 4.0, то невозможно будет установить безопасный канал. Это было сделано в целях усиления безопасности. Клиентам Windows 2000 известен тип домена, к которому они принадлежат, и они не будут упрощать свой способ проверки подлинности при установке безопасного канала. Данная последовательность обмена пакетами как раз соответствует этому варианту. Она соответствует взаимодействию клиента Windows 2000 в домене Windows NT 4.0. Взаимодействие с основным доменом начинается после того, как клиент не смог установить безопасный канал, из-за чего проверка подлинности домена завершилась неудачно.
Проверка подлинности Kerberos и установление сеанса
После установления безопасного канала клиент получает все билеты, необходимые для установления IPC$-сеанса с контроллером. Поскольку все контроллеры домена Windows 2000 также являются центрами KDC, клиент попытается обнаружить наиболее близкий к нему центр KDC тем же способом, какой он использовал для обнаружения LDAP-служб.
Первое, что необходимо сделать клиенту – это осуществить проверку подлинности в виде обмена билетами AS. В случае успешного завершения проверки он запрашивает билет для контроллера (имя компьютера$ (computer name$)) и службы Kerberos (krbtgt), запущенной на контроллере. Обмен пакетами генерирует трафик общим объемом приблизительно в 8 килобайт. В действительности объем может быть другим в зависимости от количества глобальных (Global) и универсальных (Universal) групп, членами которых является клиент. На каждую такую дополнительную группу приходится приблизительно еще по 28 байтов.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | SMB | DNS 0x3:Std Qry for _kerberos._tcp.Default-First-Site- Name._sites.dc._msdcs.DCCLAB.LOCAL. of type Srv Loc on class INET |
2 | Сервер | Клиент | SMB | DNS 0x3:Std Qry Resp. for _kerberos._tcp.Default-First-Site- Name._sites.dc._msdcs.DCCLAB.LOCAL. of type Srv Loc on class |
3 | Клиент | Сервер | LDAP | LDAP ProtocolOp: SearchRequest (3) |
4 | Сервер | Сервер | LDAP | LDAP ProtocolOp: SearchResponse (4) |
5 | Клиент | Сервер | Kerberos | Kerberos KRB_AS_REQ (запрос TGT) |
6 | Сервер | Клиент | Kerberos | Kerberos KRB_AS_REP |
7 | Клиент | Сервер | Kerberos | Kerberos KRB_TGS_REQ (запрос DC$) |
8 | Сервер | Клиент | Kerberos | Kerberos KRB_TGS_REP |
9 | Клиент | Сервер | R_LOGON | Kerberos KRB_TGS_REQ (запрос Kerberos Service) |
10 | Сервер | Клиент | R_LOGON | Kerberos KRB_TGS_REP |
Все билеты, получаемые клиентом, можно просмотреть с помощью утилиты Kerbtray из пакета Microsoft Resource Kit.
В итоге клиент может подключиться к общему ресурсу IPC$ контроллера, при этом будет сгенерированно приблизительно 3,600 байтов трафика.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | SMB | SMB C настройка сеанса & X |
2 | Сервер | Клиент | SMB | SMB R настройка сеанса & X |
3 | Клиент | Сервер | SMB | SMB C подключение дерева & X, Общий ресурс = \\DCCLAB22.DCCLAB.LOCAL\IPC$ |
4 | Сервер | Клиент | SMB | SMB R подключение дерева & X, Тип = IPC$ |
Ссылки DFS
Далее клиент создает ссылку DFS (Distributed File System). DFS-ссылка – это протокол клиент-сервер, используемый для передачи клиенту особой информации о DFS, расположенной на сервере. Она используется по мере необходимости. Общий процесс перенаправления начинается тогда, когда клиент отсылает SMB-пакет с указанием того, что это ссылка DFS. Сервер передает этот запрос DFS-драйверу для завершения его обработки. Впоследствии любой доступ к общим сетевым ресурсам может привести к созданию запроса DFS-ссылки в том случае, если клиенты не обладают информацией об общих ресурсах. Windows 2000 является DFS-клиентом версии 5.0. Эта версия позволяет кэшировать ссылки на корень DFS или организовывать связи на то время, которое укажет администратор.
При запуске клиентского компьютера формируется большое количество запросов DFS-ссылок, которые отсылаются клиентом через его домен своему контроллеру домена, который отвечает на них. Этот процесс необходим для того, чтобы клиент был готов обработать любые запросы, направляемые к общим ресурсам DFS доменов.
Первые два запроса необходимы для инициализации DFS-клиента. Первый используется для определения имен всех доверенных доменов Windows 2000, к которым клиент может получить доступ. Второй используется для получения списка контроллеров домена, расположенных в домене, начиная с локального сайта. Возвращаемые на эти запросы имена содержат как имена Netbios, так и DNS-имена доменов.
Третий запрос необходим для получения действующего пути к серверу, необходимого для соединения с общим ресурсом sysvol.
DFS-ссылки создают трафик, минимальный объем которого составляет 394 байта. Реальный объем генерируемого трафика может быть иным и зависеть от количества доверенных доменов и количества контроллеров домена, возвращаемых в ответе.
По умолчанию DFS-ссылка используется каждые 15 минут для определения конфигурации домена.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | SMB | C transact2 NT Получить DFS-ссылку |
2 | Сервер | Клиент | SMB | R transact2 NT Получить DFS-ссылку (ответ на пакет 105) |
Затем клиент выполняет команду ping и отправляет LDAP-запрос для того, чтобы снова получить информацию о контроллере домена.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | ICMP | Эхо-запрос: от 10.00.00.100 к 10.00.00.22 |
2 | Сервер | Клиент | ICMP | Эхо-ответ: к 10.00.00.100 от 10.00.00.22 |
3 | Клиент | Сервер | UDP | Src порт: неизвестен, (1041); Dst порт: неизвестен (389); Длина = 209 (0xD1) |
4 | Сервер | Клиент | UDP | Src порт: неизвестен, (389); Dst порт: неизвестен (1041); Длина = 188 (0xBC) |
Преобразование имен
У каждого объекта в Active Directory есть соответствующее имя. Имеются различные форматы имен, такие, как основное имя пользователя (User principal name, UPN), различаемые имена (Distinguished names, DN), а также ранние имена «домен\пользователь» ("domain\user") из Windows NT. Вовсе не обязательно, чтобы имя было строковой записью. В качестве имени может выступать все, что уникальным образом идентифицирует объект. В зависимости от того, какой службе требуется указать имя в качестве параметра, может понадобиться преобразование имени из одного формата в другой.
Для преобразования имен из одного формата в другой используется API DsCrackNames. Более подробную информацию об этом можно найти в MSDN (Microsoft Developers Network). Перед тем, как клиент сможет воспользоваться этой функцией, ему необходимо будет выполнить привязку дескриптора к службе каталогов с помощью команды DSBind, а по завершении выполнения операции ему необходимо отменить привязку к службе каталогов с помощью DSUnbind.
Ниже в таблице представлен обмен пакетами, происходящий во время процесса трансляции. Общий объем трафика, генерируемого при этом, составляет приблизительно 6600 байтов.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | MSRPC | c/o RPC-привязка: UUID E1AF8308-5D1F- 11C9-91A4-08002B14A0FA call 0 |
2 | Сервер | Клиент | MSRPC | c/o RPC-привязка Ack: call 0x1 assoc grp 0xD52D xmit 0x16D0 recv 0x1 |
3 | Клиент | Сервер | MSRPC | c/o RPC-запрос: call 0x1 opnum 0x3 context 0x0 hint 0x84 |
4 | Сервер | Клиент | MSRPC | c/o RPC-ответ: call 0x1 context 0x0 hint 0x80 cancels 0x0 |
5 | Клиент | Сервер | MSRPC | c/o RPC-привязка: UUID E3514235-4B06- 11D1-AB04-00C04FC2DCD2 call 0 |
6 | Сервер | Клиент | MSRPC | c/o RPC-привязка Ack: call 0x1 assoc grp 0x1C04C xmit 0x16D0 recv 0x |
7 | Клиент | Сервер | MSRPC | c/o RPC Alt-Cont: UUID E3514235- 4B06-11D1-AB04-00C04FC2DCD2 call 0 |
8 | Сервер | Клиент | MSRPC | c/o RPC Alt-Cont Rsp: call 0x1 assoc grp 0x1C04C xmit 0x16D0 recv 0x |
9 | Клиент | Сервер | MSRPC | c/o RPC-запрос: call 0x1 opnum 0x0 context 0x0 hint 0x38 |
10 | Сервер | Клиент | MSRPC | c/o RPC-ответ: call 0x1 context 0x0 hint 0x3C cancels 0x0 |
11 | Клиент | Сервер | MSRPC | c/o RPC-запрос: call 0x2 opnum 0xC context 0x0 hint 0x6E |
12 | Сервер | Клиент | MSRPC | c/o RPC-ответ: call 0x2 context 0x0 hint 0xB4 cancels 0x0 |
13 | Клиент | Сервер | MSRPC | c/o RPC-запрос: call 0x3 opnum 0xC context 0x0 hint 0x6E |
14 | Сервер | Клиент | MSRPC | c/o RPC-ответ: call 0x3 context 0x0 hint 0xAC cancels 0x0 |
15 | Клиент | Сервер | MSRPC | c/o RPC-запрос: call 0x4 opnum 0x1 context 0x0 hint 0x14 |
16 | Сервер | Клиент | MSRPC | c/o RPC-ответ: call 0x4 context 0x0 hint 0x18 cancels 0x0 |
LDAP RootDSE
Затем клиент запрашивает информацию из LDAP RootDSE. RootDSE является стандартным атрибутом, определенным в спецификации LDAP 3.0. RootDSE содержит информацию о сервере каталога, включая информацию о его характеристиках и конфигурации. Ответ будет содержать стандартный набор данных в соответствии с документом RFC 2251. Одним из элементов, который будет возвращен в этом ответе, будет поддерживаемый механизм Simple Authentication и Security Layer (SASL). В этом случае возвращается GSS-SPNEGO.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | LDAP | ProtocolOp: SearchRequest (3) |
2 | Сервер | Клиент | LDAP | ProtocolOp: SearchResponse (4) |
3 | Клиент | Сервер | Kerberos | KRB_TGS_REQ |
4 | Сервер | Клиент | Kerberos | KRB_TGS_REP |
5 | Клиент | Сервер | LDAP | ProtocolOp: BindRequest (0) |
6 | Сервер | Клиент | LDAP | ProtocolOp: BindResponse (1) |
Загрузка групповой политики
Затем на компьютер загружаются соответствующие объекты групповой политики. После этого клиент завершает вызов RPC, необходимый для преобразования его имени в различающееся имя, и выполняет с помощью протокола LDAP поиск информации политики, необходимой для данного компьютера, а затем загружает ее с помощью протокола SMB (Server Message Block).
Поиск политики
Ниже в таблице представлен обмен пакетами, происходящий, когда клиент выполняет операцию привязки дескриптора к каталогу LDAP. Для выполнения LDAP-запросов необходимо, чтобы клиент установил привязку дескрипторов к службе каталогов до того, как начнет поиск информации. На этом этапе процесса входа в систему клиента он выполняет привязку дескриптора к Active Directory для того, чтобы осуществить поиск групповой политики, которую необходимо применить к клиенту. В приведенной ниже последовательности пакетов также отображен LDAP-запрос клиента для определения того, какую групповую политику необходимо применить. Каждая операция привязки дескриптора генерирует трафик объемом около 1675 байтов. В этом случае при поиске политики генерируется около 3527 байтов сетевого трафика.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | LDAP | ProtocolOp: BindRequest (0) |
2 | Сервер | Клиент | LDAP | ProtocolOp: BindResponse (1) |
3 | Клиент | Сервер | LDAP | ProtocolOp: BindRequest (0) |
4 | Сервер | Клиент | LDAP | ProtocolOp: BindResponse (1) |
5 | Клиент | Сервер | TCP | .AP..., len: 173, seq: 978423034- 978423207, ack:3068556899, win:17069, src: 1048 dst: 389 |
6 | Сервер | Клиент | TCP | AP..., len: 294, seq:3068556899- 3068557193, ack: 978423207, win:16081, src: 389 dst: 1048 |
7 | Клиент | Сервер | TCP | ....S., len: 0, seq: 978497639- 978497639, ack: 0, win:16384, src: 1050 dst: 389 |
8 | Сервер | Клиент | TCP | .A..S., len: 0, seq:3068641675- 3068641675, ack: 978497640, win:17520, src: 389 dst: 1050 |
9 | Клиент | Сервер | TCP | .A...., len: 0, seq: 978497640- 978497640, ack:3068641676, win:17520, src: 1050 dst: 389 |
10 | Клиент | Сервер | LDAP | ProtocolOp: BindRequest (0) |
11 | Сервер | Клиент | LDAP | ProtocolOp: BindResponse (1) |
12 | Клиент | Сервер | TCP | .AP..., len: 129, seq: 978498933- 978499062, ack:3068642008, win:17188, src: 1050 dst: 389 |
13 | Сервер | Клиент | TCP | .AP..., len: 171, seq:3068642008- 3068642179, ack: 978499062, win:16098, src: 389 dst: 1050 |
14 | Клиент | Сервер | TCP | .AP..., len: 203, seq: 978499062- 978499265, ack:3068642179, win:17017, src: 1050 dst: 389 |
15 | Сервер | Клиент | TCP | .AP..., len: 201, seq:3068642179- 3068642380, ack: 978499265, win:17520, src: 389 dst: 1050 |
16 | Клиент | Сервер | TCP | .AP..., len: 467, seq: 978423207- 978423674, ack:3068557193, win:16775, src: 1048 dst: 389 |
17 | Сервер | Клиент | TCP | .AP..., len: 1273, seq:3068557193- 3068558466, ack: 978423674, win:17520, src: 389 dst: 1048 |
После того, как клиент определяет подходящую политику, он создает вторую DFS-ссылку. То же самое будет происходить в большинстве других случаев при попытках клиента соединиться с общим ресурсом Windows 2000.
Загрузка политик по протоколу SMB
Процесс завершается соединением клиента с SYSVOL (стандартным общим ресурсом контроллера домена) и загрузкой политик, что приводит к генерированию трафика общим объемом 1018 байтов.
В данном случае приведен пример очень простой конфигурации. Количество записей, показанных на рисунке, будет значительно больше, в случае более сложных настроек групповой политики.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | SMB | C подключение дерева & X, Общий ресурс = \\DCCLAB22.MAIN.LOCAL\SYSVOL |
2 | Сервер | Клиент | SMB | R подключение дерева & X, Тип = _ |
3 | Клиент | Сервер | SMB | C NT создание & X, Файл = \main.local\Policies\{31B2F340-016D- 11D2-945F-00C04FB984F9}\gpt.ini |
4 | Сервер | Клиент | SMB | R NT создание & X, FID = 0x4000 |
5 | Клиент | Сервер | SMB | C чтение & X, FID = 0x4000, чтение 0x1a at 0x00000000 |
6 | Сервер | Клиент | SMB | R чтение & X, чтение 0x1a |
Автоматическая подача заявок на сертификаты клиента
Каждый раз после применения объектов групповой политики происходит автоматическая подача заявок на сертификаты. Во время этого процесса происходит следующее:
• | Выполняется проверка статуса сертификатов компьютера. Если имеются проблемы с сертификатами, то выполняется автоматическая подача заявки. |
• | Выполняется загрузка сертификатов центра сертификации предприятия из корневого хранилища предприятия в Active Directory (процесс известен так же, как доверительная привязка инфраструктуры открытых ключей (PKI trust anchor)). |
• | Выполняется загрузка сертификатов центра сертификации, способного выдавать сертификаты смарт-карт из Active Directory. |
Клиент подает запрос для получения информации LDAP RootDSE (ниже в таблице приведен обмен пакетами), а затем использует LDAP для завершения процесса автоматической подачи заявки.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | DNS | DNS 0x3:Std Qry for _ldap._tcp.Site2._sites.dc._msdcs |
2 | Сервер | Клиент | DNS | DNS 0x3:Std Qry Resp. Auth. NS is dcclab.local. |
3 | Клиент | Сервер | DNS | DNS 0x4:Std Qry for _ldap._tcp.dc._msdcs.dcclab22.dcc |
4 | Сервер | Клиент | DNS | DNS 0x4:Std Qry Resp. Auth. NS is dcclab.local. of |
5 | Клиент | Сервер | LDAP | ProtocolOp: BindRequest (0) |
6 | Сервер | Клиент | LDAP | ProtocolOp: BindResponse (1) |
7 | Клиент | Сервер | LDAP | ProtocolOp: BindRequest (0) |
8 | Сервер | Клиент | LDAP | ProtocolOp: BindResponse (1) |
9 | Клиент | Сервер | LDAP | ProtocolOp: SearchRequest (3) |
10 | Сервер | Клиент | LDAP | ProtocolOp: SearchResponse (simple) (5) |
11 | Клиент | Сервер | LDAP | ProtocolOp: UnbindRequest (2) |
12 | Клиент | Сервер | LDAP | ProtocolOp: BindRequest (0) |
13 | Сервер | Клиент | LDAP | ProtocolOp: BindResponse (1) |
14 | Клиент | Сервер | LDAP | ProtocolOp: SearchRequest (3) |
15 | Сервер | Клиент | LDAP | ProtocolOp: SearchResponse (simple) (5) |
16 | Клиент | Сервер | LDAP | ProtocolOp: UnbindRequest (2) |
17 | Клиент | Сервер | LDAP | ProtocolOp: UnbindRequest (2) |
Более подробное рассмотрение третьего пакета показывает, что этот пакет является запросом на получение информации о конфигурации служб открытых ключей, используемых в домене. Ниже показано содержимое одного из пакетов:
LDAP: ProtocolOp: SearchRequest (3)
LDAP: ProtocolOp = SearchRequest
LDAP: Base Object = CN=Public Key
Services,CN=Services,CN=Configuration,DC=dcclab,DC
LDAP: Scope = Single Level
LDAP: Deref Aliases = Never Deref Aliases
LDAP: Size Limit = No Limit
LDAP: Time Limit = 0x00002710
LDAP: Attrs Only = 0 (0x0)
LDAP: Filter Type = Equality Match
LDAP: Attribute Type = cn
LDAP: Attribute Value = NTAuthCertificates
LDAP: Attribute Value = cACertificate
Синхронизация времени
Затем происходит обновление времени на клиентском компьютере, путем синхронизации с контроллером домена, выполняющим проверку подлинности. Ниже представлен обмен пакетами, соответствующий этому процессу синхронизации. Примите во внимание то, что при этом используется порт 123. Общий объем сетевого трафика, генерируемого при этом, равен 220 байтов.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | NTP | Src порт: неизвестен, (1051); Dst порт: протокол NTP (Network Time Protocol) (123); длина = 76 (0x4C) |
2 | Сервер | Клиент | NTP | Src порт: протокол NTP (Network Time Protocol), (123); Dst порт: Неизвестен (1051); длина = 76 (0x4C) |
Обновление системы DDNS
На последнем этапе процесса загрузки происходит обновление имени клиента в базе данных DNS. Процесс динамического обновления записей DNS в Windows 2000 основан на процедурах, описанных в документе RFC 2136.
Вначале клиент определяет, имеется ли у DNS-сервера центр, обслуживающий зону клиента. При этом генерируется сетевой трафик общим объемом 225 байтов.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | DNS | 0x1:Std Qry for dcclab24.main.local. of type SOA on class INET addr. |
2 | Сервер | Клиент | DNS | 0x1:Std Qry Resp. Auth. NS is main.local. of type SOA on class INET addr. : Name does not exist |
Затем клиент выполняет динамическое обновление своего имени на DNS-сервере. В случае, если обновляются как записи A RR, так и PTR RR клиента, то объем общего трафика, генерируемого при этом, будет равен 1800 байтов.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | DNS | DNS 0x4:Dyn Upd PRE records to dcclab24.dcclab.local. |
2 | Сервер | Клиент | DNS | 241 99.703125 00010233BFE7 INTEL F1A000 DNS 0x4:Dyn Upd Resp. PRE records to dcclab24.dcclab |
3 | Клиент | Сервер | DNS | DNS 0x5:Std Qry for 0.0.10.in- addr.arpa. of type SOA |
4 | Сервер | Клиент | DNS | 0x5:Std Qry Resp. for 0.0.10.in-addr.arpa. of type SOA |
5 | Клиент | Сервер | DNS | 0x6:Dyn Upd PRE/UPD records to 24.0.0.10.in- addr.arpa |
6 | Сервер | Клиент | DNS | 0x6:Dyn Upd Resp. PRE/UPD records to 24.0.0.10.in-addr.arpa |
Реальный объем трафика, генерируемого при динамическом обновлении, зависит от многих условий. Прежде всего он зависит от того, был ли клиент уже зарегистрирован. Затем на него может влиять конфликт с уже имеющейся записью. Также учитывается и то, используется ли DHCP. В данном примере предполагается, что те настройки, которые используются по умолчанию, позволяют клиенту обновлять только свои записи A RR, в то время как за обновление записей PTR RR отвечает DHCP-сервер.
И последним, но не менее важным, является то, что объем трафика также зависит от конфигурации DNS-сервера и от того, каким образом настроено безопасное динамическое обновление.
Примечание. В случае, если DDNS не используется, Вам необходимо отключить функцию динамического обновления на клиенте. Отключение этой функции позволит сэкономить сетевой трафик, генерируемый бесполезными попытками произвести обновление притом, что оно не поддерживается. Динамическое обновление можно отключить в дополнительных свойствах TCP/IP для соответствующего сетевого соединения. Ниже на рисунке показано, где именно эта функция отключается:
Завершение
Процесс загрузки компьютера завершается, когда клиент разрывает открытые соединения с контроллером домена, обмениваясь пакетами, указанными ниже в таблице. При этом генерируется 473 байта сетевого трафика.
Пакет | Источник | Получатель | Протокол | Описание |
1 | Клиент | Сервер | SMB | C отключение дерева |
2 | Сервер | Клиент | SMB | R отключение дерева |
3 | Клиент | Сервер | SMB | C отключение дерева |
4 | Сервер | Клиент | SMB | R отключение дерева |
5 | Клиент | Сервер | SMB | C выход & X |
6 | Сервер | Клиент | SMB | R выход & X |
Зная эту последовательность обмена пакетами при анализе трафика можно определить завершение процесса загрузки системы и начало процесса входа пользователя в систему. Теперь система готова к использованию. На экране отображается окно входа в систему.
Наверх страницы