Впервые функционал контроллера домена, доступного только на чтение (RODC — read-only domain controller), был представлен в Windows Server 2008. Основная цель RODC контроллера домена — возможность безопасной установки собственного контролера домена в удаленных филиалах и офисах с плохими WAN каналами и в которых сложно обеспечить физическую защиту сервера с ролью ADDS. Контроллер домена RODC содержит копию базы Active Directory, доступную только на чтение. Это означает, что никто, даже при получении физического доступа к такому контроллеру домена, не сможет изменить данные в AD (в том числе сбросить пароль администратора домена).
В этой статье мы рассмотрим, как установить новый контроллер домена RODC на базе Windows Server 2022/2019 и особенности управления им.
Что такое контроллера домена на чтение RODC?
Основные отличия RODC от обычных контроллеров домена, доступных для записи (RWDC):
- Контроллер домена RODC хранит копию базы AD, доступную только для чтения. Клиенты не могут вносить изменения в базу такого контролера домена;
- RODC не реплицирует данные AD и папку SYSVOL на другие контроллеры домена (RWDC) (используется односторонняя репликация);
- Контроллер RODC хранит полную копию базы AD, за исключением хэшей паролей объектов AD и других атрибутов, содержащих чувствительную информацию. Этот набор атрибутов называется Filtered Attribute Set (FAS). Сюда относятся такие атрибуты, как ms-PKI-AccountCredentials, ms-FVE-RecoveryPassword, ms-PKI-DPAPIMasterKeys и т.д. Можно добавить и другие атрибуты в этот набор, например пароли компьютеров, хранящиеся в открытом виде в атрибуте ms-MCS-AdmPwd при использовании LAPS;
- При получении контроллером RODC запроса на аутентификацию от пользователя, он перенаправляет этот запрос на ближайший RWDC контроллер;
- Контроллер RODC может кэшировать учетные данные некоторых пользователей (это ускоряет аутентификацию и позволяет пользователям авторизоваться на контроллере домена, даже при отсутствии связи с RWDC);
- Вы можете относительно безопасно предоставить административный доступ и RDP вход на контроллер домена пользователям без предоставления прав на других DC или Domain Admins (например, для доступа к серверу техническому специалисту филиала);
- DNS служба на RODС работает только на чтение.
Требования, которые должны быть выполнены для разворачивания Read-Only Domain Controller.
- На сервере должен быть назначен статический IP;
- Windows Firewall должен быть отключен или корректно настроен для прохождения трафика между DC и доступов от клиентов;
- В качестве DNS сервера должен быть указан ближайший RWDC контроллер;
- Вы можете установить RODC как на Windows Server Full GUI, так и на Windows Server Core редакцию.
- Не стоит размещать RODC в одном сайте с RWDC.
Установка RODC из графического интерфейса Server Manager
Откройте консоль Server Manager и добавьте роль Active Directory Domain Services (согласитесь с установкой всех дополнительных компонентов и средств управления).
На этапе указания настроек нового DC, укажите что нужно добавить новый контроллер домена в существующий домен (Add a domain controller to an existing domain), укажите имя домена и, если необходимо, данные учетной записи пользователя с правами администратора домена.
Выберите, что нужно установить роль DNS сервера, глобального каталога (GC) и RODC. Далее выберите сайт AD, в котором будет находится новый контролер и пароль для доступа в DSRM режиме.
Далее нужно указать пользователя, которому нужно предоставить административной доступ к контроллеру домена (Delegated administrator account), а также список учетных записей/групп, пароли которых разрешено (Accounts that are allowed to replicate passwords to the RODC) и запрещено (Accounts that are denied from replicating passwords to the RODC) реплицировать на данный RODC (можно задать позднее).
Укажите, что данные базы AD можно реплицировать с любого DC.
Replicate from ->
Any domain controller
Затем укажите пути к базе NTDS, ее журналам и папке SYSVOL (в случае необходимости их можно перенести на другой диск позднее).
После проверки всех условий, можно запустить установку роли ADDS.
Также вы можете развернуть RODC с помощью функции Staged. Она заключается в предварительном создании учетной записи компьютера RODC в консоли ADUC и базовой настройки. Для этого щелкните правой кнопкой по контейнеру Domain Controllers и выберите Pre-create Read-Only Domain Controller account.
При установке ADDS на сервере с таким же именем, появится надпись:
A Pre-created RODC account that matches the name of the target server exists in the directory. Choose whether to use this existing RODC account or reinstall this domain controller.
Выберите опцию Use existing RODC account, чтобы использовать настроенный аккаунт RODC в AD.
После завершения установки роли и перезагрузки сервера вы получите RODC контроллер. Вы можете проверьте состояние контроллера домена согласно статье.
При подключении консолью ADUC (dsa.msc) к RODC все кнопки создания новых объектов AD станут неактивными (серыми). Также на RODC нельзя изменить атрибуты объектов AD. Все остальные действия в консоли Active Directory, в том числе поиск, работают как обычно.
Установка контроллера домена на чтение (RODC) с помощью PowerShell
Для разворачивания нового RODC с помощью PowerShell, нужно установить роль ADDS и PowerShell модуль ADDS.
Add-WindowsFeature AD-Domain-Services, RSAT-AD-AdminCenter,RSAT-ADDS-Tools
Теперь можно запустить установку RODC:
Install-ADDSDomainController -ReadOnlyReplica:$true -DomainName yourdimain.com -SiteName "Default-First-Site-Name" -InstallDns:$true -NoGlobalCatalog:$false
После окончания работы командлет запросит перезагрузку сервера.
Выведите список DC в вашем домене с помощью командлета Get-ADDomainController из модуля AD PowerShell:
Get-ADDomainController -Filter * | Select-Object Name,IsReadOnly
У RODC значение атрибута IsReadOnly должно быть True
Чтобы вывести все RODC в домене, выполните:
Get-ADDomainController –filter {IsReadOnly –eq $true}
Если вы хотите сначала создать аккаунт RODC в домене, исопльзуйте такую команду:
Add-ADDSReadOnlyDomainControllerAccount -DomainControllerAccountName SPB-RO-DC1 -DomainName winitpro.ru -DelegatedAdministratorAccountName "winitpro\kbuldogov" -SiteName SPB_RO_Site
Затем при повышении Windows сервер до DC используйте команду:
Install-ADDSDomainController -DomainName winitpro.ru -Credential (Get-Credential) -LogPath "C:\Windows\NTDS" -SYSVOLPath "C:\Windows\SYSVOL" -ReplicationSourceDC "SPB-DC01.winitpro.ru" – UseExistingAccount
–Server
, который доступен у командлетов Set-ADUser, Set-ADComputer, New-ADUser и т.д.Политики репликации и кэширования паролей на RODC
На каждом RODC можно задать список пользователей, компьютеров и серверов, чьи хэши пароли можно или нельзя реплицировать на данный контролер домена.
По умолчанию в домене создаются две новые глобальные группы
- Allowed RODC Password Replication Group
- Denied RODC Password Replication Group
Первая группа по умолчанию пуста, а во второй содержатся административные группы безопасности, пароли пользователей которых нельзя реплицировать и кэшировать на RODC с целью исключения риска их компрометации. Сюда по-умолчанию входят такие группы, как:
- Group Policy Creator Owners
- Domain Admins
- Cert Publishers
- Enterprise Admins
- Schema Admins
- Аккаунт krbtgt
- Account Operators
- Server Operators
- Backup Operators
В группу Allowed RODC Password Replication Group обычно добавляются группы пользователей филиала, в котором находится RODC.
Если в домене развернутся несколько контроллеров домена на чтение, лучше создать такие группы для каждого RODC. Привязка групп к контроллеру домена RODC выполняется в свойствах сервера в консоли ADUC на вкладке Password Replication Policy .
В окне Advanced Password Replication Policy for RODC_name можно просмотреть:
- Accounts whose passwords are stored on this Read-Only Domian Controller – список пользователей и компьютеров, чьи пароли закешированы на этом RODC
- Accounts that have been authenticated to this Read-Only Domain – список пользователей и компьютеров, которые подключены через этот RODC
На вкладке Resultant Policy можно выбрать учетку пользователя и узнать, будет ли его пароль кэшироваться на RODC.
Вы можете управлять группами RODC с помощью PowerShell. Вывести список пользователей в группе AD:
Get-ADGroupMember -Identity "Denied RODC Password Replication Group" | ft Name, ObjectClass
Добавить в группу RODC всех активных пользователей из определенного OU Active Directory:
Get-ADUser -Filter {Enabled -eq "True"} -SearchBase 'OU=SPBOffice,DC=winitpro,DC=ru' | ForEach-Object {Add-ADGroupMember -Identity 'Allowed RODC Password Replication Group' -Members $_ -Confirm:$false }
Чтобы закешировать пароль пользователей из OU на RODC, используйте скрипт:
$users = Get-ADUser -Filter {Enabled -eq "True"} -SearchBase 'OU=SPBOffice,DC=winitpro,DC=ru'
foreach ($user in $users) {
Get-ADObject -identity $user | Sync-ADObject -Source SPB-DC01 ‑Destination SPB-RO-DC1 -PasswordOnly
}
Вывести список пользователей и компьютеров, чьи пароли находятся в кэше RODC можно с помощью командлета:
Get-ADDomainControllerPasswordReplicationPolicyUsage -Identity SPB-RO-DC1 ‑RevealedAccounts
Нельзя удалить пароль определенного пользователя из кэша RODC. Но вы можете сделать эти данные недействительными, сбросив пароль пользователя из оснастки ADUC или с помощью Set-ADAccountPassword.
Непонятно как заводить учетные записи компьютеров в филиале.
Тоже на главном сервере?
Так вы же заводите записи компьютеров не на RODC, а на нормальном контроллере домена!
Даже если в вашем офисе есть только, контроллер rodc, при включении компьютера в домен, запрос пересылается на ближайший стандартный контроллер.
И только потом, вы можете настроить репликацию созданной учетной записи компьютера на конкретный RODC
Олег, а если упадёт основной контроллер домена, то можно ли востановить потом его из RODC? и я так понимаю, что можно будет продолжать работать на RODC если кэшированы пароли, но с внесением изменений уже никак также в отсутсвии основного?
Насколько я понимаю, восстановить не получится.
Но при неработоспособном основном контроллере домена, можно работать с RODC, если пароли учетки хранятся на нем (ведь rodc конроллер предназначен именно для филиалов, подключенных через узкий/нестабильный/ периодически пропадающий канал)
для функционирования RODC достаточно уровня леса 2003 с расширенной схемой 2008 и выполненной /rodcprep или требуется наличие хотя бы одного контроллера на 2008?
просто у нас лес 2003, раньше была дочка на контроллере 2008. решили избавиться от дочернего домена и поставить туда RODC.
однако, при поднятии сервера до контроллера галочкой «Read Only Domain Controller» серая, а описании внизу написано, что требуется наличие контроллера домена на 2008 сервере.
Добрый день. А какие объекты можно передавать на RODC?
Если правильно понял Ваш вопрос, на RODC контроллер домена передаются (хранятся) все атрибуты всех объектов AD кроме паролей учетных записей (кроме списка разрешенных)
Не совсем понятно зачем ставить галку Global Catalog, или имеется ввиду что данные AD будут стягиваться с GC??
В мультидоменной инфраструктуре рекомендуется всем DC назначать роль Global Catalog (GC). Эту ускоряет поиск по дереву доменов, кроме того при отключении связи с филиалом (в котором стоит RODC) могут быть проблемы с проверкой членства в универсальных группах при логоне пользователей.
Развернул в филиале RODC и столкнулся с такой проблемой. RODC не входит в число NS-серверов домена. Говоря простыми словами — его нет в списке серверов при выполнении команды nslookup contoso.com. Команда возвращает список всех DNS-серверов домена, но RODC там нет.
Полагаю, это является причиной второй проблемы: не смотря на то, что я пытаюсь авторизоваться под пользователем, который в группе разрешенных к кешированию на RODC, logonserver при авторизации — этой мой PDC, расположенный в головном офисе. иными словами — не будет линка в головной офис — ни кто не сможет авторизоваться. Что я неправильно сделал?
Сергей, аналогичная проблема.. на филиале поднял RODC, но не могу подключиться по rdp, ругается на DNS, DNS показывает ошибку 4015: The DNS server has encountered a critical error from the Active Directory. Check that the Active Directory is functioning properly. The extended error debug information (which may be empty) is «000006BA: SvcErr: DSID-03210BEB, problem 5012 (DIR_ERROR), data 0». The event data contains the error.
nslookup тоже не показывает сервер RODC. И ещё в менеджере сервера вкладка Роли не раскрывается, пишет ошибка((
Пока решил свою проблему созданием A-записей в DNS на мастере и добавлением RODC в список NS-серверов. Не уверен, что это правильно. Где-то читал, что RODC не может быть NS-сервером. Может ошибаюсь. Итог этого рукожопства — RODC таки стал для клиентов в этом сайте logonserver-ом. Но. Если я кладу линк до мастера, начинаются прблемы с загрузками профилей и перенаправленными папками. Непонятно, зачем им мастер в таком случае, ведь DFS в этом сайте есть и профили он оттуда явно берет, и ссылается на DFS-сервер в этом сайте (он же RODC). Ничо не понимаю…
как это соотноситься с тем что иногда RODC может оcтаться без связи с RWDC и при этом нормально работать?
На RODС контроллере есть роль DNS сервера, но он доступен только для чтения. Обновления не разрешены. Поэтому при пропадании связи DNS запросы отрабатывают.
добрый день. А как быть с прописыванием IP DNS на RODC? Первым должен быть IP самого RODC, а вторым IP удаленного RWDC?
В качестве primary DNS на RODC нужно указать собственный IP адрес (но не 127.0.0.1), в качестве вторичного — IP адрес ближайшего RWDC.
Добрый день, а почему не loopback адрес? Насколько я понял сама MS рекомендует именно loopback адрес указывать: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff807362(v=ws.10)?redirectedfrom=MSDN
Не совсем понял как делегировать кому то право на создание удаление учеток групп именно в rodc ?
именно чтобы создавались юзвери и группы на родц ad
Вы недопоняли, как работает AD. Учетки хранятся на всех DC. На RODC вы только определяете пароли каких пользователей будут доступны на нем.
Т.е. как я понял, вам нужно создать некую OU, делегировать права на нее допустим администратору филиала. Он должен добавлять своих пользователей в определенные группы, чью пароли будут реплицироваться на RODC.
День добрый !
Полетела дисковая подсистема на RODC, восстановить систему невозможно. Какие могут быть проблемы при повторной установке RODC и что нужно указать, использовать существующую уч.запись или переустановка ? В материалах на сайте мелкософта такого не встретил.(
Есть задача дать доступ подрядчикам на машину в DMZ, но чтобы они заходили под доменными учётками. Из DMZ есть доступ только до RODC контроллера.
Я выполнил все предварительные настройки сервера по правилам для RODC, ввёл в домен. Собственно с этого момента начинаются проблемы:
— Долгая загрузка машины, ещё более долгий вход пользователя. Сначала user profile service, потом applying user settings. Вход юзера минут 10 занимает.
— в локальной группе админов появился юзер, который выглядит как SID. Вот как бывает, когда нет связи с доменом или учётка уже удалена и SID не сопоставляется с именем.
— Я могу зайти на машину с учёткой доменного админа и буду админом. Могу обычной юзерской и буду просто юзером. Зайти могу даже по RDP. Но в локальных группах нигде не вижу ни domain admins, ни domain users, ни отдельно учётки, под которыми захожу.
— Если пробую добавить в локальные группу кого-нибудь из домена, то мне доступен поиск, я могу найти любую учётку, но на моменте добавления в группу появляется ошибка «RPC server is unavailable»
— GPO не применяются. Я так понимаю как раз из-за этого долго входит юзер
Пробовал разные тесты:
— nltest работает, кроме команды /dclist:. Тут выдает ошибку Сannot DsBind to.Status = 1722 0x6ba RPC_S_SERVER_UNAVAILABLE I_NetGetDCList failed: Status = 87 0x57 ERROR_INVALID_PARAMETER
— Test-ComputerSecureChannel показывает False
Порты открыли все, которые указаны в документациях и статьях. Возможно даже больше, чем нужно. Все telnet проверки по разным портам от сервера к RODC проходят.
В логах ничего подходящего не увидел.
Подскажите пожалуйста, что может быть не так? Что ещё можно проверить?
Небольшое дополнение. Посмотрел netlogon.log, но не понял что не так.
Есть ощущение что самые важные строки вот эти:
11/24 19:33:51 [CRITICAL] [5916] NetpDcMatchResponse: DPC-RODC-PORTAL: domain.com.: Responder is not a writable server. 0x3e8fc
11/24 19:33:53 [MISC] [568] DsGetDcName function called: client PID=732, Dom:domain Acct:(null) Flags: FORCE DS WRITABLE NETBIOS RET_DNS
11/24 19:34:05 [CRITICAL] [1068] Unicode string: \\DPC-RODC-PORTAL.domain.com\PIPE\NETLOGON
11/24 19:34:05 [CRITICAL] [1068] domain: NlSessionSetup: Session setup: cannot I_NetServerReqChallenge 0xc0000022
Ещё если заходить на сервер и вводить echo %logonserver%, то показывает КД из основного сайта. Выглядит это так, как-будто сервер при входе почему-то начинает обращаться к обычному контроллеру, хотя все остальные запросы, внутри сеанса точно, идут на RODC, как и должны.
1) dmz и rodc в одном сайте?
2) учетная запись пользователя и компьютера добавлены в кеш RODC? если их там нет, то rodc отправляет запросы аутентфикации на rwdc
3) посмотрите что на вкалдке Accounts that have been authenticated to this Read-only Domain Controller
Работа клиента только с RODC невозможна, все равно он иногда будет обращаться к RWDC.
_https://learn.microsoft.com/ru-ru/previous-versions/windows/it-pro/windows-server-2008-r2-and-2008/cc754218(v=ws.10)
Исходя из статьи, клиенту доступ к RWDC не нужен, все запросы может передать RODC.
Вроде заработало.
Вероятных проблем было несколько. Я добавил роль DNS на RODC (раньше она была не нужна, а в этот раз не сразу про неё подумал), поставил на клиенте в качестве dns только RODC и…безопасники открыли все-все порты до RODC. Думаю помогло всё вместе. В плане портов скорее всего повлияли закрытые ранее 123 и 139
Не понятен момент — канал с удаленным филиалом ограничен. Клиенты из головной части общаясь к domain.local через DNS могут отрезолвить IP RODC сервера и пойти к нему, забив и так узкий канал. Как это обходить? Накручивать DNS, чтобы в головном в списке A записей не было RODC, а в филиале был только он? По другому не могу представить как оно может работать…
Зачем клиентам из центрального офиса лезть на RODC?
Если правильно натсроены сайты и вы не раздаете в настройках DNS клиентам IP адрес RODC, такой трафик будет минимален.
>>Зачем клиентам из центрального офиса лезть на RODC?
Так они туда полезут, если в DNS запись будет..
У нас маршрутизация работает через UNIX системы и оборудование CISCO. DNS используется bind на freebsd. Записи из DNS в AD попадают в bind на freebsd, и тот уже отдает их клиентам. DHCP у нас нет, адресация статическая. Видимо правильно я предполагаю, что надо будет как-то настроить bind, чтобы в головном отдавал одни IP для A записей домена, в филиале другие.
Windows клиенты используют такую процедуру поиска ближайшего контрллера домена:
_https://fallbackstatus.com/how-do-client-computers-locate-a-domain-controller/
По идее, если SRV записи для всех DC есть в вашем bind, то трафик клиентов к чужому сайту с RODC будет минимальным (только один раз при первом включении в сеть)
Когда клиент найдет контроллер домена в своем сайте, он закеширует информацию о DC и будет использовать его в качестве логон сервера.
Благодарю! Стало понятнее как оно работает) Буду пробовать..когда будем запускать контроллер в филиале..
Добрый день.
Почему не стоит размещать RODC в одном сайте с RWDC? Чем это грозит?
_https://learn.microsoft.com/en-us/answers/questions/621884/rodc-and-writable-dc-in-the-same-site
Понял, спасибо.
Доброго дня.
А как быть с доступом к SYSVOL, любой клиент ломится RWDC, даже если сайт указан именно для этой сети и обслуживает его именно эти RODC
Предположим, пытаемся открыть \\domain.local, без SMB доступа к RWDC, он просто не откроется
Попытка разрезольвить nslookup domain.local вернет IP всех RWDC но не RODC
Попытка ввести в домен новой машины которая предварительно создана и задан предварительный пароль на RODC, без доступа к RWDC заканчивается тем что сперва он не может пробиться лдапом, потом начинает ломится по SMB на RWDC