背景:近年来,针对企业的勒索病毒攻击愈发猖獗。试想一下,如果核心的Active Directory(AD)域控制器被勒索加密或硬件损坏无法启动,导致全公司认证瘫痪,作为安全/运维人员,该如何快速救火?
在多域控环境下,当主域控彻底故障且无法恢复时,我们不能坐以待毙。本文将手把手教你如何在辅助域控上强制夺取AD域五大操作主机角色(FSMO),并彻底清除故障残留,确保业务连续性。
1. 实验环境拓扑
为了还原真实场景,我们搭建了如下模拟环境:
DC01 (故障机)
操作系统:Windows Server 2022
IP地址:
192.168.232.100状态:原五大角色持有者,模拟断电/系统崩溃,彻底离线
DC02 (救援机)
操作系统:Windows Server 2022
IP地址:
192.168.232.101状态:正常运行,准备接管角色
Client01 (业务终端)
操作系统:Windows 10 Pro
IP地址:
192.168.232.200作用:模拟域内普通用户,验证故障期间及恢复后的业务可用性
高危警告:“强制夺取”仅适用于原FSMO角色持有者彻底损坏且永远不会再上线的情况。 如果原DC01后续可能恢复,请尽量使用“平滑迁移”而非“强制夺取”。若原DC01被强制夺权后又重新联网,可能会导致USN回滚等严重数据灾难!
2.为什么要关注五大角色?
当域环境中存在多个域控时,各个域控信息同步,互为备份,上面存储的域内信息都是一样的,既然域控制器存储的信息都是一样的,那么域控损坏是不是可以直接不管放弃呢?答案是并不是,域控服务器作用不取决于它是网络中的第几台域控制器,而取决于FSMO五种角色在网络中的分布情况,FSMO的五种角色,想必都或多或少有一些了解,简单说一下5个操作主机的概念:
架构主机 (Schema Master)
同一个时间内,整个林中只能有一台架构主机,负责更新活动目录架构(如添加新对象类型或属性),若该主机故障,将影响新软件安装等需要修改架构的操作
域命名主机 (Domain Naming Master)
同一个时间内,整个林中只能有一台域命名主机,管理域的创建、删除及重命名操作。缺失时无法新增或删除域
PDC (PDC Emulator)
每一个域内只能有一台域控制器扮演PDC主机的角色,处理旧版客户端兼容、时间同步、密码验证及组策略更新。域内所有DC需同步其时间设置,缺失可能导致时间同步问题。
RID池管理器(RID Master)
每一个域内只能有一台域控制器扮演RID主机的角色。分配全局唯一标识符的局部部分(Relative ID),故障时无法创建新安全主体(如用户/计算机账户)
基础结构主机 (Infrastructure Master)
维护跨域对象引用的一致性,确保用户/组信息在多个域中同步。缺失会导致域间引用错误。如果所有域控制器同时都是全局编录,则由哪台域控扮演都无所谓
3.实战:强制夺取五大角色
3.1 确认故障与环境
如果五个操作主机都在正常的域控制器中,直接进行清除故障主机即可
现在的DC01是这个新林中第一台域控制器,默认所有的操作主机都在这一台上面。
关闭DC01,模拟DC01无法启动
登录DC02,确认主机角色,确认DC01不可达
3.2 启动 ntdsutil 工具
一般强制占用顺序为:架构主机、域命名主机、PDC主机、RID主机、结构主机;注意当前域控的首选DNS一定要指向自己。不建议使用127.0.0.1,故障主机建议直接关机或者断网
以管理员身份运行 PowerShell 或 CMD,输入以下命令进入交互模式
ntdsutil Roles Connections Connect to server <当前域控服务器完整名字> Quit3.3 执行强制夺取命令
依次执行以下5条命令。注意:每输入一条,系统会尝试先安全转移,发现连不上DC01后,会弹出确认框,直接点【是】进行强制夺取。
3.3.1 占用架构主机:seize schema master
选择"是",每次运行强制占用都会先尝试安全转移主机角色,失败报错后会进行强制占用角色。
3.3.2 占用域命名主机:seize naming master
选择"是"
3.3.3 占用PDC主机:seize pdc
选择"是"
3.3.4 占用RID主机:seize rid master
选择"是"
3.3.5 占用基础结构主机:seize infrastructure master
选择"是"
3.3.6 验证结果
输入quit退出到CMD界面,运行以下命令查询当前角色持有者
如果显示的都是DC02,恭喜你,夺权成功!
3.4 清除故障主机的记录
夺权虽成功,但AD数据库里还有DC01的“幽灵记录”,必须彻底清除,否则日志会一直报错。
使用 ntdsutil 清除元数据
继续以管理员身份运行 PowerShell
ntdsutil Metadata cleanup Connections Connect to server <当前域控服务器完整名字> Quit接下来选择要删除的目标(请根据你的实际编号选择)
select operation target list domains select domain <编号> # 选择故障DC所在的域 list sites select site <编号> # 选择故障DC所在的站点 list servers in site select server <编号> # 选择故障DC最后执行删除
quit #返回上一层 remove selected server #删除故障机器系统会弹出确认对话框,确认无误后点击确定。
这是最后一步大扫除
3.4.1 去Active Directory 站点和服务删除DC01的残余记录
打开Active Directory 站点和服务,找到 DC01,右键删除。
3.4.2 去DNS管理中删除
打开DNS管理器,检查正向查找区域、_msdcs 等区域,删除所有与 DC01 相关的 A记录、NS记录和 SRV记录。
至此,DC01彻底被清除
通过以上步骤,我们成功在单台域控故障的情况下,保住了域环境的完整性。