我们目前正在开展一个所谓的分拆项目,即一家大型公司 OLDCO 的一部分被单独出售,新实体将建立一个新的 Active Directory 域 NEWCO。在过渡阶段,OLDCO 域控制器以及 NEWCO 域控制器和客户端共享 IP 地址空间。NEWCO 域暂时信任 OLDCO 域,因此例如可以使用 OLDCO 用户帐户向 NEWCO 客户端计算机进行身份验证。
显然,在过渡阶段结束时,OLDCO AD 将会消失,这可能是通过网络分离来实现的,但这只会在遥远的未来发生。
我们现在正在寻找一种方法来确保我们可以测试应用程序对 OLDCO 的依赖性。也就是说,如果我们将应用程序 X 移动到属于 NEWCO 域成员的新服务器,我们如何才能确保我们不再使用任何 OLDCO 资源而不被察觉。
我们考虑实施一些可以轻松打开和关闭的防火墙规则,暂时阻止任何迁移的应用程序服务器访问 OLDCO 主控制器,这是“不再存在”的最佳模拟,但这是一个有效的测试吗?
例如,由于不太了解 AD 内部结构,我不知道只要存在信任,NEWCO 域控制器是否会缓存来自 OLDCO 域的任何数据,并且该缓存可能会在 OLDCO DC 消失的时间点过期,并且在看似成功的测试很久之后,我们仍会遇到问题。
以前有人成功做过这样的项目吗?或者有其他想法如何模拟 AD 森林中的雕刻?
答案1
标准、非只读域控制器不包含您所担心的缓存。只有复制拓扑中存在的正确集成的域控制器才会缓存有关彼此的信息,例如最新向量 (UTDV) 和可以使用 查看的其他 NTDS 细节ntdsutil
。
如果您测试的是南北流量(内部-外部)流量,我会考虑使用防火墙规则进行测试以模拟与相关资源的断开连接。
如果您测试的是东西向流量(内部到内部)流量,我会考虑使用组策略对象 (GPO) 在域控制器上启用高级审核策略。您最感兴趣的是下的Audit account logon events
和设置。您的 GPO 应该与针对 BUILTIN 域控制器组的安全筛选相链接。Audit logon events
Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Audit Policy
然后,您可以收集以下 ID 的事件查看器事件:
- 审核登录事件:4624、4625、4648、4634、4647、4672 和 4778。
- 审计账户登录事件:4678、4679、4770、4771、4774 和 4776。
我提供了一个 PowerShell 代码片段,您可以在相关域控制器上本地运行(以管理员身份),以查看过去十二 (12) 小时内所有匹配的事件:
Get-EventLog -LogName Security -After ((Get-Date).AddHours(-12)) | Where-Object { $_.EventId -in 4624, 4625, 4648, 4634, 4647, 4672, 4678, 4679, 4770, 4771, 4774, 4776, 4778 } | Select TimeWritten, Source, EventID, InstancedId, Message | Sort TimeWritten -Descending | Format-Table Auto
答案2
这是一个复杂的举动。
在您的 OLDCO 域控制器中激活成功的帐户登录审核。在安全日志中,您将看到之后针对 DC 进行的所有登录尝试,因此最后您将看到是否仍有某些东西对其进行身份验证,因为凭证未从您的 NEWCO 域控制器缓存。
请注意,它可以创建大量日志。请确保使用大 C 或将日志移到其他地方。
对于这样的举动你也需要考虑多件事;
如果您使用 Exchange,您可能最终会使用链接邮箱进行迁移。为此做好准备。
如果您使用 Windows 身份验证,则需要测试 SQL 实例,因为日志记录的所有用户信息都不适合 newco 域。要测试该部分,最简单的方法是将另一个 SQL 服务器联机到 newco 上并迁移数据以测试您的应用程序在生产之外是否仍能正常工作。
对于文件资源,您必须检查每个文件夹的安全组才能进行复制。因为当 oldco 域失效时,共享中定义的旧安全组将不再起作用。
您使用 radius 还是证书服务器?等等......
正如您所看到的,您需要做大量的文档工作才能正确地规划您的行动。