域控宕机!如何强制夺取五大角色恢复业务?

背景: 近年来,针对企业的勒索病毒攻击愈发猖獗。试想一下,如果核心的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 <当前域控服务器完整名字>
Quit

3.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彻底被清除

通过以上步骤,我们成功在单台域控故障的情况下,保住了域环境的完整性。

相关推荐
BingoGo16 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack17 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1234 天前
matlab画图工具
开发语言·matlab
dustcell.4 天前
haproxy七层代理
java·开发语言·前端