Windows Server для самых маленьких. Часть 4: первый контроллер домена
В прошлой части мы разобрали, что такое лес, домен, разделы каталога и глобальный каталог. Сегодня всё это появится на диске сервера dc1, который мы подготовили в части 1. Повышение сервера до контроллера — операция на десять минут и одну команду, но за эти десять минут меняется почти всё: исчезает локальная база учётных записей, появляются база каталога, DNS-зоны, общие папки и шесть новых служб. Пройдём по шагам и посмотрим на каждый.
Имя домена
Единственное решение, которое потом не изменить без боли, — имя домена. Переименование домена технически возможно (rendom), но на практике его не делает никто. Правила такие.
Домен должен быть поддоменом имени, которым вы владеете. corp.example.com, ad.example.com, internal.example.com — хорошо, если example.com зарегистрирован на организацию. Тогда имена серверов dc1.corp.example.com глобально уникальны, для них можно получить публично доверенные сертификаты, и ни с чьей чужой зоной они не пересекутся.
Не используйте .local и другие несуществующие TLD. Так советовали в 2000-х, и до сих пор встречаются домены company.local. Проблем две: .local зарезервирован под mDNS (протокол разрешения имён без сервера, которым пользуются macOS и Linux в локальной сети, и у них .local разрешается не через ваш DNS), а публичные удостоверяющие центры с 2015 года не выдают сертификаты на имена в несуществующих зонах. Домены .lan, .internal, .corp формально не заняты, но лишены первого преимущества: однажды ICANN может делегировать такой TLD, как случилось с .dev.
Не делайте имя домена равным публичному сайту. Домен example.com при www.example.com в интернете приводит к тому, что внутри сети имя example.com разрешается в контроллеры (они регистрируют A-запись самого имени домена, и убрать её нельзя), а сайт по короткому имени перестаёт открываться. Это называется split-brain DNS, и жить с ним можно, но незачем.
NetBIOS-имя — до 15 символов, по умолчанию первая метка DNS-имени в верхнем регистре: CORP. Оно видно пользователям в формате CORP\alice и на экране входа, и его тоже потом не поменять.
Итого: лес и домен corp.example.com, NetBIOS CORP.
Установка роли
Роль ставится без перезагрузки, как любая другая:
PS C:\> Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True No Success {Active Directory Domain Services, Group Policy Management, Remote Server Administration Tools, ...}
Это только двоичные файлы: службы каталога ещё не настроены и не запущены. -IncludeManagementTools добавляет модули PowerShell ActiveDirectory, ADDSDeployment, GroupPolicy и, на Desktop Experience, оснастки. Роль DNS Server мы отдельно не ставим: команда повышения установит её сама.
Что появилось:
PS C:\> Get-Command -Module ADDSDeployment
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Add-ADDSReadOnlyDomainControllerAccount 1.0.0.0 ADDSDeployment
Cmdlet Install-ADDSDomain 1.0.0.0 ADDSDeployment
Cmdlet Install-ADDSDomainController 1.0.0.0 ADDSDeployment
Cmdlet Install-ADDSForest 1.0.0.0 ADDSDeployment
Cmdlet Test-ADDSDomainControllerInstallation 1.0.0.0 ADDSDeployment
Cmdlet Test-ADDSDomainControllerUninstallation 1.0.0.0 ADDSDeployment
Cmdlet Test-ADDSDomainInstallation 1.0.0.0 ADDSDeployment
Cmdlet Test-ADDSForestInstallation 1.0.0.0 ADDSDeployment
Cmdlet Test-ADDSReadOnlyDomainControllerAccountCreation 1.0.0.0 ADDSDeployment
Cmdlet Uninstall-ADDSDomainController 1.0.0.0 ADDSDeployment
Модуль из десяти командлетов, по одному на каждый сценарий: новый лес, новый домен в существующем лесу, дополнительный контроллер, контроллер только для чтения, понижение. В этой серии мы воспользуемся всеми, кроме Install-ADDSDomain. До Windows Server 2012 то же самое делала утилита dcpromo с файлом ответов, и слово «dcpromo» до сих пор означает «повысить до контроллера».
Параметры повышения
Install-ADDSForest принимает два десятка параметров. Важные:
| Параметр | Что задаёт | Наш выбор |
|---|---|---|
-DomainName |
DNS-имя корневого домена леса | corp.example.com |
-DomainNetbiosName |
NetBIOS-имя; без параметра — первая метка | CORP |
-ForestMode, -DomainMode |
функциональные уровни леса и домена | WinThreshold (2016) |
-InstallDns |
поставить роль DNS и создать зоны | да |
-CreateDnsDelegation |
создать делегирование в родительской зоне | нет: родительская зона не у нас |
-DatabasePath, -LogPath, -SysvolPath |
где лежать NTDS и SYSVOL |
по умолчанию, C:\Windows\NTDS и C:\Windows\SYSVOL |
-SafeModeAdministratorPassword |
пароль режима восстановления служб каталогов | задаём |
-NoRebootOnCompletion |
не перезагружаться автоматически | нет, пусть перезагрузится |
-Force |
не задавать вопросов | да, в скрипте |
Функциональный уровень определяет, какие возможности каталога включены, и ограничивает, какие версии Windows Server могут быть контроллерами: при уровне 2016 контроллером не станет Windows Server 2012 R2. Уровни бывают Win2008, Win2008R2, Win2012, Win2012R2, WinThreshold (так в коде называется 2016; отдельных уровней для 2019 и 2022 нет) и, начиная с Windows Server 2025, Win2025. Уровень 2025 требует, чтобы все контроллеры были 2025, и нужен только для новых возможностей этой версии — страниц базы по 32 КБ вместо 8 и некоторых улучшений Kerberos. Для лабораторного леса из одних 2025 его можно выбрать сразу; для организации, где через год может понадобиться контроллер на 2022, лучше 2016. Поднять уровень можно всегда, опустить — нет.
Пароль DSRM (Directory Services Restore Mode) — отдельный пароль, не связанный ни с одной учётной записью домена. Контроллер можно загрузить в особый безопасный режим, где служба каталога не запущена, а база доступна как файл: так восстанавливают каталог из резервной копии или чинят повреждённую базу. Войти в этот режим можно только локальным Administrator с паролем DSRM, потому что доменные учётные записи в нём не работают: каталог не запущен. Пароль нужно записать туда же, куда вы записываете пароли от гипервизора: он понадобится в самый плохой день, и сменить его без работающего каталога нельзя. Пока каталог работает, сменить можно: ntdsutil "set dsrm password" "reset password on server null" q q.
Пути. В продуктивной среде базу и журналы кладут на отдельный диск по тем же причинам, что у любой базы данных: место и производительность. Для лаборатории хватит системного диска.
Проверка и повышение
У каждого Install-* в модуле есть парный Test-*, который делает все проверки, но ничего не меняет:
PS C:\> $dsrm = Read-Host -AsSecureString 'DSRM password'
PS C:\> Test-ADDSForestInstallation -DomainName corp.example.com -DomainNetbiosName CORP -ForestMode WinThreshold -DomainMode WinThreshold -InstallDns -SafeModeAdministratorPassword $dsrm
WARNING: Windows Server 2025 domain controllers have a default for the security setting named "Allow cryptography algorithms compatible with Windows NT 4.0" that prevents weaker cryptography algorithms when establishing security channel sessions.
For more information about this setting, see Knowledge Base article 942564 (http://go.microsoft.com/fwlink/?LinkId=104751).
WARNING: A delegation for this DNS server cannot be created because the authoritative parent zone cannot be found or it does not run Windows DNS server. If you are integrating with an existing DNS infrastructure, you should manually create a delegation to this DNS server in the parent zone to ensure reliable name resolution from outside the domain "corp.example.com". Otherwise, no action is required.
Message Context RebootRequired Status
------- ------- -------------- ------
Operation completed successfully Test.VerifyDcPromoCore.DCPromo.General.80 False Success
Оба предупреждения ожидаемы. Первое говорит, что контроллер откажет в защищённом канале клиентам с алгоритмами уровня NT 4.0, и это правильно. Второе — что он не смог создать делегирование corp в зоне example.com: зона example.com живёт у регистратора или хостера, а не на этом сервере. Делегирование нужно, если имена corp.example.com должны разрешаться из интернета; обычно не нужно.
Если Test- прошёл, выполняем то же самое без Test-:
PS C:\> Install-ADDSForest -DomainName corp.example.com -DomainNetbiosName CORP -ForestMode WinThreshold -DomainMode WinThreshold -InstallDns -CreateDnsDelegation:$false -SafeModeAdministratorPassword $dsrm -Force
WARNING: Windows Server 2025 domain controllers have a default for the security setting ...
WARNING: A delegation for this DNS server cannot be created ...
Message Context RebootRequired Status
------- ------- -------------- ------
You must restart this computer to complete the operation. DCPromo.General.4 True Success
Между предупреждениями и итоговой таблицей на экране несколько минут бегут строки прогресса: «Validating environment and user input», «Creating the NTDS settings object», «Configuring the DNS Server service», «Replicating the schema directory partition», «Creating the SYSVOL directory». После итоговой таблицы сервер перезагружается сам.
Что произошло за эти минуты
Разберём журнал, который оставляет повышение: C:\Windows\debug\DCPROMO.LOG — построчный протокол всего, что сделал мастер, и журнал событий Directory Service. Вот последовательность.
1. База. Из шаблона C:\Windows\System32\schema.ini создана C:\Windows\NTDS\ntds.dit с пятью разделами: схема (около 1500 классов и атрибутов базовой схемы), конфигурация леса, домен corp.example.com, DomainDnsZones и ForestDnsZones. У леса есть и один домен — он корневой, а значит, в нём созданы группы Enterprise Admins и Schema Admins.
2. Объекты домена. Контейнеры Users, Computers, Builtin, System, ForeignSecurityPrincipals, Managed Service Accounts, Program Data, OU Domain Controllers. Встроенные пользователи Administrator, Guest, krbtgt и группы — Domain Admins, Domain Users, Domain Computers, Domain Controllers, DnsAdmins и ещё три десятка. Два объекта групповой политики: Default Domain Policy и Default Domain Controllers Policy.
3. Учётные записи. Локальная база SAM на контроллере перестаёт использоваться. Локальный Administrator с его паролем, который вы задали при установке Windows, становится доменным CORP\Administrator: пароль тот же, SID — новый, с RID 500 в домене. Локальных пользователей и групп на контроллере с этого момента нет: Get-LocalUser вернёт ошибку. Сам сервер получает учётную запись компьютера DC1$ в OU Domain Controllers.
4. Kerberos. Создана учётная запись krbtgt со случайным паролем — это ключ, которым KDC шифрует все выдаваемые билеты TGT. Создан объект настроек NTDS для контроллера в разделе конфигурации (CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,…): этот объект и делает сервер контроллером с точки зрения остальных.
5. Роли. Все пять ролей FSMO — Schema Master, Domain Naming Master, PDC Emulator, RID Master, Infrastructure Master — назначены первому контроллеру, потому что других нет. Он же глобальный каталог. Что это за роли и почему их пять, разберём в части 17.
6. SYSVOL. Создана папка C:\Windows\SYSVOL, в ней папка домена с двумя политиками по умолчанию, настроена репликация DFS-R (пока в одиночестве) и опубликованы общие папки SYSVOL и NETLOGON.
7. DNS. Установлена роль DNS Server. Созданы зоны corp.example.com (в разделе DomainDnsZones) и _msdcs.corp.example.com (в ForestDnsZones), обе интегрированные в каталог, с безопасными динамическими обновлениями. Клиент DNS сервера переключён на 127.0.0.1. После перезагрузки Netlogon зарегистрирует в зонах SRV-записи и A-запись контроллера.
8. Сайт. Создан первый сайт Default-First-Site-Name, и контроллер помещён в него. Подсетей у сайта нет; мы переименуем его в Office и привяжем 192.168.1.0/24 в части про репликацию.
9. Службы. Включены и настроены на автозапуск: NTDS (Active Directory Domain Services, работает внутри lsass.exe), Kdc (Kerberos Key Distribution Center), Netlogon, DNS, DFSR, IsmServ (межсайтовый обмен сообщениями), ADWS (Active Directory Web Services). Служба времени W32Time переконфигурирована: контроллер с ролью PDC становится источником времени для домена.
После перезагрузки
Входим как CORP\Administrator с тем паролем, что был у локального администратора. На экране входа Server Core покажет домен в приглашении, Desktop Experience — в поле имени.
Первая проверка — что всё запустилось:
PS C:\> Get-Service NTDS, Kdc, Netlogon, DNS, DFSR, ADWS, W32Time | Format-Table Name, Status, StartType -AutoSize
Name Status StartType
---- ------ ---------
NTDS Running Automatic
Kdc Running Automatic
Netlogon Running Automatic
DNS Running Automatic
DFSR Running Automatic
ADWS Running Automatic
W32Time Running Automatic
Что знает о себе домен:
PS C:\> Get-ADDomain | Select-Object Name, DNSRoot, NetBIOSName, DomainMode, DomainSID, PDCEmulator, RIDMaster, InfrastructureMaster, ReplicaDirectoryServers
Name : corp
DNSRoot : corp.example.com
NetBIOSName : CORP
DomainMode : Windows2016Domain
DomainSID : S-1-5-21-3623811015-3361044348-30300820
PDCEmulator : dc1.corp.example.com
RIDMaster : dc1.corp.example.com
InfrastructureMaster : dc1.corp.example.com
ReplicaDirectoryServers : {dc1.corp.example.com}
PS C:\> Get-ADForest | Select-Object Name, ForestMode, RootDomain, SchemaMaster, DomainNamingMaster, GlobalCatalogs, Sites
Name : corp.example.com
ForestMode : Windows2016Forest
RootDomain : corp.example.com
SchemaMaster : dc1.corp.example.com
DomainNamingMaster : dc1.corp.example.com
GlobalCatalogs : {dc1.corp.example.com}
Sites : {Default-First-Site-Name}
Пять ролей на одном сервере, один глобальный каталог, один сайт. DomainSID — тот префикс, с которого начинаются SID всех пользователей и групп этого домена, из прошлой части.
Сам контроллер:
PS C:\> Get-ADDomainController | Select-Object HostName, IPv4Address, Site, IsGlobalCatalog, IsReadOnly, OperatingSystem, OperationMasterRoles
HostName : dc1.corp.example.com
IPv4Address : 192.168.1.10
Site : Default-First-Site-Name
IsGlobalCatalog : True
IsReadOnly : False
OperatingSystem : Windows Server 2025 Standard Evaluation
OperationMasterRoles : {SchemaMaster, DomainNamingMaster, PDCEmulator, RIDMaster, InfrastructureMaster}
Файлы на диске, как обещано в прошлой части:
PS C:\> Get-ChildItem C:\Windows\NTDS | Select-Object Name, Length
Name Length
---- ------
edb.chk 8192
edb.log 10485760
edb00001.log 10485760
ntds.dit 25165824
temp.edb 2162688
PS C:\> Get-SmbShare | Where-Object Name -in 'SYSVOL','NETLOGON' | Select-Object Name, Path
Name Path
---- ----
NETLOGON C:\Windows\SYSVOL\sysvol\corp.example.com\SCRIPTS
SYSVOL C:\Windows\SYSVOL\sysvol
База в 25 МБ — это пустой домен: схема, конфигурация и сотня объектов. С тысячей пользователей она вырастет до сотен мегабайт, с Exchange в схеме — ещё в несколько раз.
DNS:
PS C:\> Get-DnsServerZone | Format-Table ZoneName, ZoneType, IsDsIntegrated, ReplicationScope, DynamicUpdate -AutoSize
ZoneName ZoneType IsDsIntegrated ReplicationScope DynamicUpdate
-------- -------- -------------- ---------------- -------------
_msdcs.corp.example.com Primary True Forest Secure
corp.example.com Primary True Domain Secure
TrustAnchors Primary True Forest None
PS C:\> Get-DnsServerResourceRecord -ZoneName _msdcs.corp.example.com -RRType Srv | Format-Table HostName, @{n='Target'; e={$_.RecordData.DomainName}}, @{n='Port'; e={$_.RecordData.Port}} -AutoSize
HostName Target Port
-------- ------ ----
_ldap._tcp.dc dc1.corp.example.com. 389
_ldap._tcp.Default-First-Site-Name._sites.dc dc1.corp.example.com. 389
_kerberos._tcp.dc dc1.corp.example.com. 88
_kerberos._tcp.Default-First-Site-Name._sites.dc dc1.corp.example.com. 88
_ldap._tcp.gc dc1.corp.example.com. 3268
_ldap._tcp.Default-First-Site-Name._sites.gc dc1.corp.example.com. 3268
_ldap._tcp.pdc dc1.corp.example.com. 389
_ldap._tcp.7a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9.domains dc1.corp.example.com. 389
Две зоны домена и служебная TrustAnchors для DNSSEC. Записи _msdcs — те самые из прошлой части; их зарегистрировал Netlogon при старте, и он будет перерегистрировать их каждый час. Если какая-то запись пропадёт, nltest /dsregdns заставит его сделать это сейчас.
dcdiag
Главный инструмент проверки контроллера — dcdiag, набор из тридцати тестов, которые проверяют всё от подключения до репликации и DNS. На свежем контроллере он должен быть зелёным целиком:
PS C:\> dcdiag
Directory Server Diagnosis
Performing initial setup:
Trying to find home server...
Home Server = dc1
* Identified AD Forest.
Done gathering initial info.
Doing initial required tests
Testing server: Default-First-Site-Name\DC1
Starting test: Connectivity
......................... DC1 passed test Connectivity
Doing primary tests
Testing server: Default-First-Site-Name\DC1
Starting test: Advertising
......................... DC1 passed test Advertising
Starting test: FrsEvent
......................... DC1 passed test FrsEvent
Starting test: DFSREvent
......................... DC1 passed test DFSREvent
Starting test: SysVolCheck
......................... DC1 passed test SysVolCheck
Starting test: KccEvent
......................... DC1 passed test KccEvent
Starting test: KnowsOfRoleHolders
......................... DC1 passed test KnowsOfRoleHolders
Starting test: MachineAccount
......................... DC1 passed test MachineAccount
Starting test: NCSecDesc
......................... DC1 passed test NCSecDesc
Starting test: NetLogons
......................... DC1 passed test NetLogons
Starting test: ObjectsReplicated
......................... DC1 passed test ObjectsReplicated
Starting test: Replications
......................... DC1 passed test Replications
Starting test: RidManager
......................... DC1 passed test RidManager
Starting test: Services
......................... DC1 passed test Services
Starting test: SystemLog
......................... DC1 passed test SystemLog
Starting test: VerifyReferences
......................... DC1 passed test VerifyReferences
Running partition tests on : ForestDnsZones
...
Running partition tests on : Schema
...
Running enterprise tests on : corp.example.com
Starting test: LocatorCheck
......................... corp.example.com passed test LocatorCheck
Starting test: Intersite
......................... corp.example.com passed test Intersite
Что проверяет каждый важный тест, и что означает его падение:
| Тест | Что проверяет |
|---|---|
| Connectivity | контроллер находится по DNS и отвечает по LDAP и RPC |
| Advertising | контроллер объявляет себя как DC, GC, KDC, источник времени (флаги из nltest /dsgetdc) |
| SysVolCheck, NetLogons | общие папки SYSVOL и NETLOGON опубликованы и доступны |
| KccEvent, Replications, ObjectsReplicated | топология репликации построена, партнёры отвечают, объекты реплицированы |
| KnowsOfRoleHolders, RidManager | контроллер знает владельцев FSMO; у него есть пул RID для новых объектов |
| MachineAccount | учётная запись DC1$ на месте, с правильными флагами и SPN |
| Services | все службы из списка выше запущены |
| SystemLog, DFSREvent, FrsEvent | в системном журнале и журнале DFSR нет ошибок за последний час |
| LocatorCheck | в лесу находятся владельцы PDC, GC, KDC, источник времени |
Один тест по умолчанию не запускается — DNS, потому что долгий. Он отдельно и обязателен после установки:
PS C:\> dcdiag /test:dns /v
Testing server: Default-First-Site-Name\DC1
Starting test: DNS
DNS Tests are running and not hung. Please wait a few minutes...
...
Summary of DNS test results:
Auth Basc Forw Del Dyn RReg Ext
_________________________________________________________________
Domain: corp.example.com
dc1 PASS PASS WARN PASS PASS PASS n/a
......................... corp.example.com passed test DNS
Семь подтестов: авторитетность зоны, базовая настройка, форвардеры, делегирование, динамическая регистрация, регистрация записей, внешнее имя. WARN у форвардеров — мы их ещё не настроили, и сервер ходит в интернет через корневые серверы (root hints); это работает, но в части 7 поставим форвардеры явно. Запомните этот вывод: когда через год кто-то пожалуется, что «домен медленно работает», dcdiag /test:dns будет первым, что вы запустите.
Два менее формальных признака здорового контроллера — в журнале Directory Service событие 1000 («Microsoft Active Directory Domain Services startup complete») и 1394 («All problems preventing updates to the Active Directory Domain Services database have been cleared»), а в журнале DFS Replication событие 4602 («The DFS Replication service successfully initialized the SYSVOL replicated folder»):
PS C:\> Get-WinEvent -LogName 'Directory Service' -MaxEvents 200 | Where-Object Id -in 1000, 1394 | Format-Table TimeCreated, Id, Message -Wrap
PS C:\> Get-WinEvent -LogName 'DFS Replication' | Where-Object Id -eq 4602 | Select-Object TimeCreated, Id
Пока 4602 не появилось, папки SYSVOL и NETLOGON не публикуются, и контроллер не объявляет себя клиентам. На первом контроллере это занимает секунды, на дополнительном зависит от репликации.
Клиент DNS контроллера
Повышение переключило DNS-клиент сервера на 127.0.0.1. Это работает, но нам нужнее явный адрес: в части про второй контроллер мы поставим первым DNS-сервером партнёра, а себя — вторым, и объясним, почему. Пока ставим себя:
PS C:\> Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses 192.168.1.10
PS C:\> Register-DnsClient
PS C:\> Resolve-DnsName dc1.corp.example.com
Name Type TTL Section IPAddress
---- ---- --- ------- ---------
dc1.corp.example.com A 1200 Answer 192.168.1.10
И форвардер на роутер или DNS провайдера, чтобы имена из интернета разрешались через него, а не через корневые серверы напрямую:
PS C:\> Add-DnsServerForwarder -IPAddress 192.168.1.1
PS C:\> Resolve-DnsName www.vitaliy.org -Server 192.168.1.10 | Select-Object Name, IPAddress
Подробно про зоны, форвардеры и всё остальное — в части 7, но без этой строки клиенты домена, которые мы сейчас подключим, останутся без интернета по именам.
Первые члены домена
Контроллер без клиентов бесполезен. Вводим в домен рядовой сервер srv1 и рабочую станцию ws1. На каждом из них два шага, и первый важнее второго.
Шаг 1: DNS. Машина должна спрашивать имена у контроллера. С DNS от роутера она домен не найдёт, как бы правильно всё остальное ни было настроено — вспомните DC Locator из прошлой части.
PS C:\> Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses 192.168.1.10
PS C:\> Resolve-DnsName _ldap._tcp.dc._msdcs.corp.example.com -Type SRV | Select-Object NameTarget, Port
NameTarget Port
---------- ----
dc1.corp.example.com 389
Если SRV-запись нашлась, домен найдётся. В сети с DHCP это делает опция 6 в области, и в части 8 мы её настроим, чтобы не ходить по машинам руками.
Шаг 2: вступление.
PS C:\> Add-Computer -DomainName corp.example.com -Credential CORP\Administrator -Restart
Команда спросит пароль, создаст в каталоге учётную запись SRV1$ в контейнере Computers (или в OU из параметра -OUPath), установит для машины защищённый канал с контроллером, запишет на машину секрет учётной записи компьютера и перезагрузит. При вступлении машина сама регистрирует свою A-запись в зоне corp.example.com, получает DNS-суффикс corp.example.com и переводит сетевой профиль интерфейса в Domain.
На контроллере новые объекты видны сразу:
PS C:\> Get-ADComputer -Filter * | Select-Object Name, DNSHostName, Enabled, DistinguishedName
Name DNSHostName Enabled DistinguishedName
---- ----------- ------- -----------------
DC1 dc1.corp.example.com True CN=DC1,OU=Domain Controllers,DC=corp,DC=example,DC=com
SRV1 srv1.corp.example.com True CN=SRV1,CN=Computers,DC=corp,DC=example,DC=com
WS1 ws1.corp.example.com True CN=WS1,CN=Computers,DC=corp,DC=example,DC=com
Проверка защищённого канала с члена домена, если что-то пошло не так: Test-ComputerSecureChannel -Verbose, а восстановление без вывода из домена — Test-ComputerSecureChannel -Repair -Credential CORP\Administrator. Эта команда чинит ошибку «The trust relationship between this workstation and the primary domain failed», которую рано или поздно видит каждый, кто откатывал виртуальную машину к старому снимку: машина меняет пароль своей учётной записи раз в 30 дней, и после отката старый пароль контроллеру уже не известен.
Первая учётная запись
Работать под CORP\Administrator не нужно: это учётная запись с RID 500, которую не блокирует политика блокировок, которую видно в каждом журнале как «Administrator» без имени человека и которую нельзя удалить. Правило простое: у каждого администратора своя именная учётная запись в Domain Admins, а встроенная получает длинный пароль и лежит в сейфе.
PS C:\> New-ADUser -Name 'Alice Admin' -SamAccountName alice.admin -UserPrincipalName alice.admin@corp.example.com -AccountPassword (Read-Host -AsSecureString 'Password') -Enabled $true
PS C:\> Add-ADGroupMember -Identity 'Domain Admins' -Members alice.admin
PS C:\> Get-ADGroupMember 'Domain Admins' | Select-Object Name, SamAccountName
Name SamAccountName
---- --------------
Administrator Administrator
Alice Admin alice.admin
Отдельная учётная запись для повседневной работы без прав администратора появится у Alice в части про PowerShell для AD, где мы разберём модуль ActiveDirectory целиком. А пока — выйти из Administrator, войти как CORP\alice.admin и убедиться, что домен принимает:
PS C:\> whoami /groups | Select-String 'Domain Admins'
CORP\Domain Admins Group S-1-5-21-3623811015-3361044348-30300820-512 Mandatory group, Enabled by default, Enabled group
Почему первый контроллер — самый важный сервер
На этом сервере сейчас сходится всё: он единственный хранит каталог, единственный выдаёт билеты Kerberos, единственный отвечает на DNS-запросы домена, он источник времени для всех членов домена, и он владеет всеми пятью ролями FSMO. Если он выключится, ни один пользователь не войдёт ни на одну машину домена (кешированные учётные данные позволят войти локально на рабочую станцию, но ни одного сетевого ресурса она не откроет).
Такое положение терпимо ровно до части 10, где появится второй контроллер. До этого момента стоит сделать две вещи: не экспериментировать на dc1 с тем, что можно сделать на srv1, и записать пароль DSRM. Ещё одна привычка, которую стоит завести сейчас: контроллер домена — это контроллер домена, и ничего больше. На нём не ставят SQL Server, не поднимают веб-приложения, не держат файловые шары с документами. Исключения — DNS и DHCP, которые с контроллером традиционно живут вместе и о которых следующие после LDAP и Kerberos части.
Каталог есть, и в нём уже сотня объектов, созданных без нашего участия. Самое время заглянуть внутрь и посмотреть, как они устроены на самом деле — не глазами оснастки, а глазами протокола, по которому с ними работает любая программа.
Дальше — Часть 5: LDAP изнутри. Как устроено имя объекта и из чего состоит атрибут, что такое RootDSE и зачем он отвечает всем без пароля, как писать LDAP-фильтры, как читать каталог через ldp.exe и ADSI Edit, что лежит в CN=System и в схеме, и какие правки там ломают домен без возможности отката.
Серия «Windows Server для самых маленьких»
- Windows Server с нуля — редакции, Server Core, установка, первые команды PowerShell, имя, сеть, время, обновления, роли.
- Диски и сеть: diskpart, netsh и их PowerShell-замены — разметка дисков и сетевой стек через старые утилиты и модули Storage, NetTCPIP, NetSecurity, и что умеют только утилиты.
- Как устроен Active Directory — лес, домен, OU, объекты, разделы каталога, глобальный каталог, SYSVOL, DC Locator и протоколы домена.
- Первый контроллер домена (эта статья) — имя домена, роль AD DS,
Install-ADDSForestи что происходит при повышении,dcdiag, первые члены домена и первая учётная запись администратора. - LDAP изнутри — операции протокола, имена и атрибуты, схема, RootDSE, фильтры,
ldp.exeи ADSI Edit, и что в каталоге нельзя трогать.
Оставить комментарий могут только зарегистрированные пользователи.
Войдите на сайт или зарегистрируйтесь, чтобы оставить комментарий.