当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何备份Active Directory域控制器?

作者:精品下载站 日期:2024-12-14 20:12:16 浏览:14 分类:玩电脑

如何备份Active Directory域控制器?


在本文中,我们将讨论 Active Directory 域控制器备份,并了解如何使用 PowerShell 和内置 Windows Server 工具配置自动 AD 备份。

我需要备份 Active Directory 吗?

很多次我从管理员同事那里听说,如果您有多个(3 个、8 个等)分布在不同地理位置的域控制器,则根本不需要备份 AD。由于使用多个 DC,您已经提供了域容错能力。这是当所有DC同时故障趋于0时的架构,如果其中一台域控制器发生故障,您可以在同一站点上快速部署新的域控制器并使用ntdsutil删除旧的域控制器。

然而,在我的实践中,我遇到过所有域控制器都被损坏的各种情况:在一种情况下,由于勒索软件使用 mimikatz 工具捕获域管理员密码,所有域控制器(尽管在不同的城市有 20 多个域控制器)都被加密,在另一种情况下,复制损坏的 NTDS.DIT 文件导致域故障。

所以你可以而且应该备份你的广告。您必须至少定期备份关键域控制器和 FSMO(灵活单主操作)角色所有者。您可以使用以下命令获取具有 FSMO 角色的域控制器列表:

netdom query fsmo

获取上次 Active Directory 域控制器备份日期

您可以使用repadmin工具检查当前Active Directory域控制器上次备份的时间:

repadmin /showbackup

可以看到,在本例中,DC 和 AD 分区的最后一次备份时间是 2017 年 2 月 18 日(很可能自部署域控制器以来尚未进行过备份)。

[玩转系统] 如何备份Active Directory域控制器?

您可以使用以下命令获取域中所有 DC 的备份状态:

repadmin /showbackup *

如果您的域控制器在虚拟机上运行并且您使用快照对其进行备份(请参阅 Hyper-V 备份示例),则备份日期将不会因明显原因而更新。大多数现代备份工具都有一个选项,您可以检查以指定它是 DC,并且 LDAP 目录中的数据必须在备份期间更新。

使用Windows Server Backup备份AD域控制器

如果您没有任何特殊的备份软件,您可以使用内置的Windows Server Backup(该组件已取代NTBackup工具)。您可以在 Windows Server Backup GUI 中配置自动备份任务,但它有一些限制。主要缺点是新的服务器备份总是会覆盖以前的服务器备份。

使用 WSB 备份域控制器时,您将创建系统状态备份。系统状态包括 Active Directory 数据库 (NTDS.DIT)、组策略对象、SYSVOL 目录内容、注册表、IIS 元数据、AD CS 数据库以及其他系统文件和资源。备份是通过卷影复制服务 (VSS) 创建的。

您可以使用 Get-WindowsFeature PowerShell cmdlet 检查是否安装了 Windows Server Backup:

Get-WindowsFeature Windows-Server-Backup

[玩转系统] 如何备份Active Directory域控制器?

如果未安装 WSB,您可以使用 PowerShell 添加它:

Add-Windowsfeature Windows-Server-Backup -Includeallsubfeature

或者通过服务器管理器 -> 功能安装Windows Server Backup。

[玩转系统] 如何备份Active Directory域控制器?

我会将这个 AD 域控制器的备份保存到专用备份服务器上的共享网络文件夹中。例如,备份目录的路径可能如下所示:

\mun-back1\backup\dc01

。配置此文件夹的 NTFS 权限:仅向域管理员域控制器组授予读取和写入访问权限。

[玩转系统] 如何备份Active Directory域控制器?

使用 PowerShell 备份 Active Directory

让我们尝试使用 PowerShell 备份域控制器。为了保留多级AD备份副本,我们将每个备份副本存储在单独的目录中,并以备份创建日期作为文件夹名称。

Import-Module ServerManager
[string]$date = get-date -f 'yyyy-MM-dd'
$path=”\mun-back1\backup\dc1\”
$TargetUNC=$path+$date
$TestTargetUNC= Test-Path -Path $TargetUNC
if (!($TestTargetUNC)){
New-Item -Path $TargetUNC -ItemType directory
}
$WBadmin_cmd = "wbadmin.exe START BACKUP -backupTarget:$TargetUNC -systemState -noverify -vssCopy -quiet"
Invoke-Expression $WBadmin_cmd

运行 PowerShell 脚本。将出现 wbadmin 控制台。它包含有关磁盘备份(卷影副本)创建过程的信息:

The backup operation to \mun-back1\backup\dc120-06-01 is starting.
Creating a shadow copy of the volumes specified for backup...

[玩转系统] 如何备份Active Directory域控制器?

我第一次尝试备份 DC 失败并出现错误(域控制器是 VMWare 虚拟机):

Detailed error: The filename, directory name, or volume label syntax is incorrect.
The backup of the system state failed [01.06.2020 8:31].

我打开了 WSB 错误日志 — C:\Windows\Logs\WindowsServerBackup\Backup_Error-01-06-2020_09-23-14.log。

文件中出现以下错误:

Error in backup of C:\windows\systemroot\ during enumerate: Error [0x8007007b] The filename, directory name, or volume label syntax is incorrect.

展望未来,我会说问题出在 VMWware Tools 驱动程序的错误路径中。

要修复该错误,请启动提升命令提示符并运行以下命令:

DiskShadow /L writers.txt
list writers detailed

[玩转系统] 如何备份Active Directory域控制器?

获取列表后,输入 quit 并打开 C:\Windows\System32\writers.txt。找到其中包含“windows\”的字符串。

就我而言,我找到的字符串如下所示:

File List: Path = c:\windows\systemroot\system32\drivers, Filespec = vsock.sys

如您所见,使用了 VSOCK.SYS 驱动程序的错误路径。

[玩转系统] 如何备份Active Directory域控制器?

要更正路径,请打开注册表编辑器并转到注册表项HKLM\SYSTEM\CurrentControlSet\Services sock。

ImagePath 值更改为

\systemroot\system32\DRIVERS\vsock.sys

System32\DRIVERS\vsock.sys

[玩转系统] 如何备份Active Directory域控制器?

再次运行备份脚本。

如果备份成功,您将在日志中看到以下消息:

The backup operation successfully completed.
The backup of volume (C:) completed successfully.
The backup of the system state successfully completed [01.06.2020 09:52].

查看最近一次DC备份的时间:

repadmin /showbackup

现在它说最后一次域控制器备份是在今天执行的。

[玩转系统] 如何备份Active Directory域控制器?

服务器上域控制器备份的目录大小约为9GB。事实上,我们有一个 VHDX 文件,您可以使用它从 WSB 恢复操作系统,或者您可以手动挂载 VHDX 文件并从中复制您需要的文件或文件夹。

[玩转系统] 如何备份Active Directory域控制器?

如果Active Directory中有多个DC,则无需备份所有DC。为了节省空间,定期备份 Active Directory 数据库 - ntds.dit 文件就足够了。为此,请使用以下命令:

$WBadmin_cmd = "wbadmin start backup -backuptarget:$path -include:C:\Windows\NTDS\ntds.dit -quiet"
Invoke-Expression $WBadmin_cmd

此类备份的大小仅为 50-500MB,具体取决于 AD 数据库的大小。

对于自动 AD 备份,请在 DC 上创建 C:\PS\Backup_AD_DC.ps1 脚本。使用任务计划程序根据计划运行它。您可以从 GUI 或使用 PowerShell 创建计划程序任务。主要要求是任务必须在

NT AUTHORITY\SYSTEM

选中以最高权限运行选项的帐户。对于日常 AD 域控制器备份,创建以下计划任务:

$Trigger= New-ScheduledTaskTrigger -At 02:00am -Daily
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\Backup_AD_DC.ps1"
Register-ScheduledTask -TaskName "BackupAD-DC-daily" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force

因此,我们已经配置了 AD 备份,我们将在下一篇文章中讨论从域控制器系统状态备份恢复 AD 的方法。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯