Развёртывание Active Directory с нуля для компании на 30 человек
К нам в ITfresh регулярно приходят молодые компании, которые выросли с пяти человек до тридцати и поняли, что управлять учётками в режиме «у каждого свой пароль на ноутбуке» больше нельзя. Этот материал — пошаговый план, по которому мы за рабочую неделю превращаем хаос рабочих групп в управляемый домен Active Directory на Windows Server 2022. Без воды, со всеми командами PowerShell и реальными значениями параметров, которые мы используем у клиентов.
Зачем малой компании Active Directory
Когда сотрудников 5-10, можно жить на peer-to-peer: расшаренные папки, локальные учётные записи, общая почта в облаке. Но при 25-30 сотрудниках начинается боль:
- Уволили человека — обходим пять компьютеров и сменим пароли везде. Часть забываем, бывший сотрудник через месяц логинится на сетевую шару с заметками о клиентах.
- Поставили новый сервер 1С — раздаём права вручную, запутываемся, кто к чему имеет доступ.
- Хотим единый принтер на этаже — каждому пользователю настраиваем вручную.
- Нужна централизованная парольная политика — её просто негде применить.
- Бухгалтерия требует, чтобы у юристов не было доступа к финансовым папкам — без AD это держится на честном слове.
AD решает всё это разом: единая база пользователей, групповые политики, централизованное управление сетевыми ресурсами, понятный аудит. Дополнительный бонус — корректная работа сервера 1С, файлового сервера на DFS, сетевых принтеров через Print Management и почтового сервера (если у вас on-premise Exchange или альтернатива).
Подготовка: что должно быть на столе до начала работ
Перед началом проекта я согласовываю с заказчиком:
- Имя домена. Я использую схему corp.company.ru, где company.ru — реальный внешний домен. Никогда не company.local (.local зарезервирован под mDNS), никогда не company.ru напрямую (split-brain DNS).
- NetBIOS-имя. До 15 символов латиницей: CORP, COMPANYRU и т.п.
- Адресный план. Например 192.168.10.0/24 для пользователей, 192.168.20.0/24 для серверов, 192.168.30.0/24 для гостевого Wi-Fi.
- Имена серверов. Договариваюсь о схеме: DC01, DC02, FS01, 1C-APP01, 1C-DB01.
- Учётные записи break-glass. Создаём две: моя инженерная da-semenov и резервная break-glass-001 с длинным паролем в сейфе клиента.
- Источник времени. Внешний NTP — pool.ntp.org или time.windows.com, синхронизация на PDC Emulator.
- Лицензии. Windows Server 2022 Standard на каждый физический хост, плюс CAL по числу пользователей. Для офиса 30 человек — 30 User CAL.
По железу: для офиса 30 человек я ставлю два виртуальных контроллера на разных физических хостах гипервизора. Минимальные требования к каждому DC: 4 vCPU, 8 GB RAM, 80 GB SSD под систему + 40 GB под NTDS, SYSVOL и логи. Это с запасом на 5-7 лет роста.
Этап 1. Базовая настройка первого сервера
Ставлю Windows Server 2022 Standard в редакции Desktop Experience. Server Core я люблю, но для малого офиса, где админ заказчика тоже будет иногда заходить — GUI удобнее. После установки выполняю первые команды:
# Переименовать сервер
Rename-Computer -NewName "DC01" -Restart
# После перезагрузки — настроить статический IP
New-NetIPAddress -InterfaceAlias "Ethernet0" `
-IPAddress 192.168.20.10 `
-PrefixLength 24 `
-DefaultGateway 192.168.20.1
# DNS пока на самого себя через 127.0.0.1 (заменим после установки роли)
Set-DnsClientServerAddress -InterfaceAlias "Ethernet0" `
-ServerAddresses ("127.0.0.1")
# Часовой пояс Москва
Set-TimeZone -Id "Russian Standard Time"
# Все доступные обновления — критично перед dcpromo
Install-Module PSWindowsUpdate -Force
Get-WindowsUpdate -AcceptAll -Install -AutoReboot
После всех обновлений я выполняю проверку дисков, отключаю IPv6 на интерфейсе (если он не используется в инфраструктуре — иначе AD начнёт выдавать предупреждения о динамической регистрации) и убеждаюсь, что Windows Defender активен и базы свежие.
Этап 2. Установка роли AD DS
Установка происходит в два шага: сначала добавляем роль, потом запускаем повышение до контроллера домена.
# Установка роли AD DS вместе с инструментами управления
Install-WindowsFeature -Name AD-Domain-Services `
-IncludeManagementTools
# Установка роли DNS — без него dcpromo всё равно поставит, но явно лучше
Install-WindowsFeature -Name DNS -IncludeManagementTools
Теперь повышаем сервер до DC и создаём новый лес. Это эквивалент классического dcpromo, но в современной форме:
$DSRMPassword = ConvertTo-SecureString "СложныйПарольDSRM!2026" -AsPlainText -Force
Install-ADDSForest `
-DomainName "corp.company.ru" `
-DomainNetbiosName "CORP" `
-DomainMode "WinThreshold" `
-ForestMode "WinThreshold" `
-InstallDns:$true `
-DatabasePath "C:\Windows\NTDS" `
-LogPath "C:\Windows\NTDS" `
-SysvolPath "C:\Windows\SYSVOL" `
-SafeModeAdministratorPassword $DSRMPassword `
-NoRebootOnCompletion:$false `
-Force:$true
Параметр WinThreshold — это уровень функциональности «Windows Server 2016», который остаётся максимальным для лесов AD до сих пор (даже на Windows Server 2025). Microsoft не повышала функциональный уровень с 2016 года — все новые фичи едут отдельно, а не через раздутие FFL.
После перезагрузки сервер становится контроллером домена. Проверяю работоспособность:
# Состояние DC
dcdiag /v /c
# Проверка SYSVOL и DFSR
Get-DfsrState
Get-DfsrMembership -GroupName "Domain System Volume"
# Проверка репликации (для одного DC покажет, что реплицировать не с кем)
repadmin /replsummary
# Проверка DNS
nslookup corp.company.ru
nslookup -type=SRV _ldap._tcp.dc._msdcs.corp.company.ru
На этом моменте у нас есть рабочий домен с одним контроллером. Дальше — структура и второй DC.
Этап 3. Проектирование OU и групп безопасности
Хорошая структура OU — это половина успеха проекта. Я никогда не оставляю пользователей в дефолтном контейнере CN=Users, потому что на него нельзя привязать GPO. Стандартный шаблон, который я разворачиваю для офиса 30 человек:
$Domain = "DC=corp,DC=company,DC=ru"
# Корневые OU
New-ADOrganizationalUnit -Name "Sotrudniki" -Path $Domain -ProtectedFromAccidentalDeletion $true
New-ADOrganizationalUnit -Name "Workstations" -Path $Domain -ProtectedFromAccidentalDeletion $true
New-ADOrganizationalUnit -Name "Servers" -Path $Domain -ProtectedFromAccidentalDeletion $true
New-ADOrganizationalUnit -Name "Groups" -Path $Domain -ProtectedFromAccidentalDeletion $true
New-ADOrganizationalUnit -Name "ServiceAccounts" -Path $Domain -ProtectedFromAccidentalDeletion $true
New-ADOrganizationalUnit -Name "PrivilegedAccounts" -Path $Domain -ProtectedFromAccidentalDeletion $true
# Подразделения внутри Sotrudniki
$DepartmentsPath = "OU=Sotrudniki,$Domain"
"Buhgalteria","Prodazhi","Marketing","IT","Rukovodstvo","Razrabotka" |
ForEach-Object {
New-ADOrganizationalUnit -Name $_ -Path $DepartmentsPath -ProtectedFromAccidentalDeletion $true
}
# Зеркальная структура для Workstations
$WSPath = "OU=Workstations,$Domain"
"Buhgalteria","Prodazhi","Marketing","Rukovodstvo","Razrabotka" |
ForEach-Object {
New-ADOrganizationalUnit -Name $_ -Path $WSPath -ProtectedFromAccidentalDeletion $true
}
# Серверные OU
$SrvPath = "OU=Servers,$Domain"
New-ADOrganizationalUnit -Name "FileServers" -Path $SrvPath -ProtectedFromAccidentalDeletion $true
New-ADOrganizationalUnit -Name "1C" -Path $SrvPath -ProtectedFromAccidentalDeletion $true
New-ADOrganizationalUnit -Name "Apps" -Path $SrvPath -ProtectedFromAccidentalDeletion $true
Группы безопасности я создаю по модели AGDLP (Account → Global → Domain Local → Permission). Для каждого подразделения — Global-группа с пользователями, а на ресурсах права назначаются через Domain Local-группы:
$GroupsPath = "OU=Groups,DC=corp,DC=company,DC=ru"
# Глобальные группы — содержат пользователей
"GG_Buhgalteria","GG_Prodazhi","GG_Marketing","GG_IT","GG_Rukovodstvo" |
ForEach-Object {
New-ADGroup -Name $_ -GroupScope Global -GroupCategory Security -Path $GroupsPath
}
# Domain Local группы — назначаются на ресурсы (примеры)
"DL_Share_Buh_Read","DL_Share_Buh_Modify",
"DL_Share_Common_Read","DL_Share_Common_Modify",
"DL_1C_Buh_Users","DL_1C_Sales_Users" |
ForEach-Object {
New-ADGroup -Name $_ -GroupScope DomainLocal -GroupCategory Security -Path $GroupsPath
}
# Связываем
Add-ADGroupMember -Identity "DL_Share_Buh_Modify" -Members "GG_Buhgalteria"
Add-ADGroupMember -Identity "DL_Share_Common_Read" -Members "GG_Buhgalteria","GG_Prodazhi","GG_Marketing","GG_Rukovodstvo"
Этап 4. Заведение пользователей
Когда структура готова, заводим учётки. Я никогда не делаю это руками через ADUC при создании 30+ учёток — только импорт из CSV:
$Users = Import-Csv -Path "C:\install\users.csv" -Delimiter ";" -Encoding UTF8
foreach ($User in $Users) {
$UPN = "$($User.Login)@corp.company.ru"
$Password = ConvertTo-SecureString $User.InitialPassword -AsPlainText -Force
$OUPath = "OU=$($User.Department),OU=Sotrudniki,DC=corp,DC=company,DC=ru"
New-ADUser `
-Name "$($User.Surname) $($User.GivenName)" `
-GivenName $User.GivenName `
-Surname $User.Surname `
-SamAccountName $User.Login `
-UserPrincipalName $UPN `
-DisplayName "$($User.Surname) $($User.GivenName)" `
-EmailAddress $User.Email `
-Title $User.Position `
-Department $User.Department `
-Office $User.Office `
-OfficePhone $User.Phone `
-Path $OUPath `
-AccountPassword $Password `
-Enabled $true `
-ChangePasswordAtLogon $true
# Добавление в групповую безопасность
Add-ADGroupMember -Identity "GG_$($User.Department)" -Members $User.Login
}
В CSV-файле — колонки Login, Surname, GivenName, Email, Position, Department, Office, Phone, InitialPassword. Файл я готовлю вместе с HR заказчика, начальные пароли генерирую через [System.Web.Security.Membership]::GeneratePassword(14,3) и передаю клиенту в зашифрованном виде.
Этап 5. Установка второго контроллера домена
Один DC — это потенциальная катастрофа. Поднимаю второй на отдельной физической ноде гипервизора. Базовая настройка такая же: имя DC02, статический IP 192.168.20.11, в DNS-настройках сетевой карты первичный — 192.168.20.10 (DC01), вторичный — 127.0.0.1.
Install-WindowsFeature -Name AD-Domain-Services,DNS -IncludeManagementTools
$DSRMPassword = ConvertTo-SecureString "СложныйПарольDSRM!2026" -AsPlainText -Force
$Cred = Get-Credential -Message "Учётка Domain Admin"
Install-ADDSDomainController `
-DomainName "corp.company.ru" `
-InstallDns:$true `
-Credential $Cred `
-DatabasePath "C:\Windows\NTDS" `
-LogPath "C:\Windows\NTDS" `
-SysvolPath "C:\Windows\SYSVOL" `
-SafeModeAdministratorPassword $DSRMPassword `
-SiteName "Default-First-Site-Name" `
-NoGlobalCatalog:$false `
-ReadOnlyReplica:$false `
-Force:$true
После перезагрузки проверяю репликацию между DC01 и DC02:
repadmin /replsummary
repadmin /showrepl
dcdiag /e /v
Если всё в порядке — на DC01 меняю DNS-настройки сетевой карты: первичный 192.168.20.11 (DC02), вторичный 127.0.0.1. На DC02 — наоборот. Это правильная схема: каждый DC спрашивает «соседа», а себя как fallback.
Этап 6. Распределение FSMO-ролей
В лесу AD есть пять ролей хозяина операций (FSMO): Schema Master, Domain Naming Master, RID Master, PDC Emulator, Infrastructure Master. По умолчанию все они на первом DC. В офисе на 30 человек я обычно оставляю их все на DC01, но проверяю, что они там и что я знаю, как их перенести при необходимости.
# Где сейчас FSMO
netdom query fsmo
# Перенос (graceful) — если планово
Move-ADDirectoryServerOperationMasterRole `
-Identity "DC02" `
-OperationMasterRole PDCEmulator,RIDMaster,InfrastructureMaster,SchemaMaster,DomainNamingMaster
# Захват (seize) — только если DC1 умер и не вернётся
Move-ADDirectoryServerOperationMasterRole `
-Identity "DC02" `
-OperationMasterRole PDCEmulator -Force
PDC Emulator — это сервер, на который должна быть направлена внешняя синхронизация времени. Настраиваю NTP только на держателе PDC, остальные DC синхронизируются с ним по умолчанию:
# На DC, держателе PDC Emulator
w32tm /config /manualpeerlist:"pool.ntp.org,0x9 time.windows.com,0x9" `
/syncfromflags:manual /reliable:yes /update
Restart-Service w32time
w32tm /resync /force
w32tm /query /status
Этап 7. DNS — корректная настройка под AD
DNS в AD — это нервная система. Все клиенты находят DC через SRV-записи в зоне домена. Проверяю и настраиваю:
# Создаём reverse-зону для адресного плана пользователей и серверов
Add-DnsServerPrimaryZone -NetworkId "192.168.20.0/24" -ReplicationScope "Domain"
Add-DnsServerPrimaryZone -NetworkId "192.168.10.0/24" -ReplicationScope "Domain"
# Включаем scavenging (очистка устаревших записей) — раз в 7 дней
Set-DnsServerScavenging -ScavengingState $true -ScavengingInterval 7.00:00:00 `
-ApplyOnAllZones
# Forwarders для разрешения внешних имён — Yandex и Cloudflare
Set-DnsServerForwarder -IPAddress 77.88.8.8,1.1.1.1
Я никогда не использую публичный DNS Гугла (8.8.8.8) у российских клиентов — слишком долгие пинги и риск замедления резолвинга в рабочее время.
Этап 8. DHCP — на отдельной роли с failover
В офисе 30 человек я разделяю DHCP по двум вариантам: либо ставлю роль DHCP на оба DC с настроенным failover в режиме Hot-Standby, либо настраиваю DHCP на роутере (MikroTik с failover между двух) и оставляю серверы только под AD. Первый вариант для классических Windows-инфраструктур:
Install-WindowsFeature -Name DHCP -IncludeManagementTools
# Авторизация в AD
Add-DhcpServerInDC -DnsName "DC01.corp.company.ru" -IPAddress 192.168.20.10
Add-DhcpServerInDC -DnsName "DC02.corp.company.ru" -IPAddress 192.168.20.11
# Создание области для пользовательской подсети
Add-DhcpServerv4Scope -Name "Users-VLAN10" `
-StartRange 192.168.10.50 `
-EndRange 192.168.10.250 `
-SubnetMask 255.255.255.0 `
-State Active `
-LeaseDuration 8.00:00:00
Set-DhcpServerv4OptionValue -ScopeId 192.168.10.0 `
-DnsServer 192.168.20.10,192.168.20.11 `
-DnsDomain "corp.company.ru" `
-Router 192.168.10.1
# Failover Hot-Standby между DC01 и DC02
Add-DhcpServerv4Failover -ComputerName "DC01.corp.company.ru" `
-PartnerServer "DC02.corp.company.ru" `
-Name "DHCP-Failover-Users" `
-ScopeId 192.168.10.0 `
-SharedSecret "ОченьДлинныйСекретДляФейловера2026!" `
-Mode HotStandby `
-ServerRole Active `
-ReservePercent 20
Этап 9. Базовые групповые политики (GPO)
Из коробки в AD создаются две дефолтные политики: Default Domain Policy и Default Domain Controllers Policy. Их я не трогаю — это плохая практика. Создаю отдельные GPO под конкретные задачи:
- GPO «Password Policy». Привязана к корню домена. Минимальная длина пароля — 12, сложность включена, история — 12, срок действия 180 дней, блокировка после 10 неудач на 15 минут.
- GPO «Workstation Baseline». Привязана к OU=Workstations. Запрет автозапуска USB, отключение SMBv1, включение SmartScreen, блокировка PowerShell для обычных пользователей через Constrained Language Mode, отключение LLMNR, включение SMB Signing.
- GPO «Server Baseline». Привязана к OU=Servers. RDP только из административной подсети, обязательный аудит, отключение неиспользуемых служб (Print Spooler на серверах БД и AD), запрет интерактивного логона для сервисных аккаунтов.
- GPO «Mapped Drives». Привязана к OU=Sotrudniki. Через Group Policy Preferences монтирую сетевые диски: O:\ — общий обмен (DL_Share_Common_Modify), B:\ — бухгалтерия (только для GG_Buhgalteria через Item-Level Targeting).
- GPO «Printers». Раздача принтеров по подразделениям через GPP Item-Level Targeting (фильтр по группе безопасности).
- GPO «BGInfo». Информация о компьютере на рабочем столе для удобной службы поддержки — имя ПК, IP, залогиненный пользователь.
Все GPO создаются и тестируются на одной тестовой OU перед привязкой к боевой:
New-GPO -Name "Workstation Baseline" -Comment "ITfresh, базовый hardening рабочих станций"
New-GPLink -Name "Workstation Baseline" -Target "OU=Workstations,DC=corp,DC=company,DC=ru" -LinkEnabled Yes
# Применить немедленно для теста
Invoke-GPUpdate -Computer "PC-TEST-01" -RandomDelayInMinutes 0 -Force
Этап 10. Ввод компьютеров в домен
Этот этап я планирую на вечер пятницы и субботу: чтобы в понедельник утром люди уже логинились в домен. На каждом компьютере выполняется одна команда:
$Cred = Get-Credential -Message "Доменная учётка с правом ввода"
Add-Computer -DomainName "corp.company.ru" `
-Credential $Cred `
-OUPath "OU=Buhgalteria,OU=Workstations,DC=corp,DC=company,DC=ru" `
-Restart
Заранее я создаю для службы поддержки специальную группу SG_JoinComputers с делегированными правами создавать computer-объекты в нужных OU — чтобы инженеры не использовали Domain Admin для рутинной операции.
После перезагрузки на каждом ПК подкатываются GPO, монтируются сетевые диски, настраиваются принтеры. Я отдельно проверяю, что профиль пользователя корректно создаётся, что мигрировали закладки браузера и почтовые настройки — это ключевой UX-момент, который определяет, будут пользователи ругаться на новый домен или нет.
Этап 11. Что обязательно сделать в первый месяц после внедрения
Инженер закончил, домен работает, пользователи в восторге — но проект ещё не закрыт. В течение первого месяца я обязательно выполняю:
- Включаю AD Recycle Bin (один раз и навсегда):
Enable-ADOptionalFeature -Identity "Recycle Bin Feature" -Scope ForestOrConfigurationSet -Target "corp.company.ru"; - Настраиваю System State Backup обоих DC на отдельный сервер за пределами домена;
- Тестирую восстановление одного DC из бэкапа в изолированной сети — это единственный способ убедиться, что бэкап рабочий;
- Разворачиваю Windows LAPS для управления локальными админами на рабочих станциях;
- Устанавливаю PingCastle и провожу первый аудит — обычно даже на свежем домене он находит 5-10 точек улучшения;
- Настраиваю мониторинг через Wazuh или Zabbix: репликация, свободное место в NTDS, ошибки в журнале Directory Service.
На третий месяц планирую первый плановый перезапуск DC по очереди для применения накопившихся CU — этот регламент мы потом повторяем ежеквартально.
Типичные ошибки, которые я вижу у других подрядчиков
За 15 лет на подхвате после других интеграторов я насмотрелся на одни и те же грабли:
- Один DC. «Сэкономили на втором» — потом теряют сутки на восстановление, когда умирает диск.
- Домен в зоне .local или совпадающий с публичным. Боль с почтой, MDM, сертификатами, mDNS-устройствами.
- Все пользователи в CN=Users. На контейнер нельзя привязать GPO — приходится изобретать костыли.
- FSMO не размечены и не задокументированы. Когда умирает PDC, никто не знает, на каком DC что было.
- Нет резервной break-glass-учётки. Уволили админа, забыли его пароль восстановления — паралич.
- DHCP только на одном сервере. Сервер ушёл на обновление — пол-офиса без интернета.
- Парольная политика на 8 символов и без блокировки. Подбор учётки за час, и до свидания.
Все эти ошибки лечатся за пару дней, но когда домен уже эксплуатируется год, миграция и переименования стоят дороже изначального проекта.
FAQ
Нужны ли два контроллера домена для офиса на 30 человек?
Да, обязательно. Один контроллер — это единая точка отказа: умрёт сервер или диск, и весь офис не сможет логиниться, открывать шары, печатать. Второй DC даёт отказоустойчивость и стоит для виртуальной среды копейки — это просто ещё одна VM на 4 GB RAM. Мы в ITfresh ставим минимум два DC даже для офисов на 10-15 человек.
Какую версию Windows Server выбрать в 2026 году?
Windows Server 2022 — основной выбор для новых проектов: проверен временем, поддержка до 2031 года, стабильно работает с любым гипервизором. Windows Server 2025 — если заказчик хочет максимально свежий стек или планирует SMB over QUIC. Windows Server 2019 ставлю только в случаях, когда у клиента жёсткие требования совместимости со старым ПО.
Можно ли совместить AD DS, DNS и DHCP на одном сервере?
DNS — да, это штатная конфигурация и AD без локального DNS не работает. DHCP технически совместить можно, но в нашей практике мы выносим DHCP либо на отдельную VM, либо на роутер MikroTik с failover между двух — это снимает нагрузку с DC и упрощает обновление контроллеров без перезагрузки сети.
Как назвать домен, чтобы потом не было проблем?
Никогда не называйте домен реальным внешним доменом компании (например company.ru) — будут split-brain DNS и боль с почтой. Используйте поддомен внешнего: corp.company.ru или ad.company.ru. Не используйте .local — этот суффикс зарезервирован для mDNS (Bonjour) и ломает работу некоторых приложений. NetBIOS-имя пишите латиницей до 15 символов, без дефисов.
Сколько времени и денег займёт развёртывание AD под ключ?
Для офиса на 30 человек — 3-5 рабочих дней инженера. Сюда входит проектирование, развёртывание двух DC, настройка DNS/DHCP, миграция учёток из рабочих групп, базовые GPO, заведение пользователей, ввод компьютеров в домен, обучение администратора заказчика. В тарифе ITfresh такая разовая работа обходится в 60-100 тысяч рублей в зависимости от наличия серверного железа.
Развернём Active Directory под ключ за рабочую неделю
Семёнов Е.С. и команда ITfresh: проектирование, два контроллера на Windows Server 2022, OU, GPO, миграция учёток, обучение вашего администратора. Разовая работа или полный аутсорсинг — на ваш выбор.
- Telegram: @ITfresh_Boss
- Телефон: +7 903 729-62-41