如何保护“DNS 奶酪” - 保护 AD 集成式 DNS 区域,避免意外删除
阅读我们发布的一篇有关 DNS 删除审核的文章后,想向大家提供一些防范措施。实际上我要感谢 Brent Whitlow、Bryan Zink 还有博客作者 Hilde。
我们的同事、同行及其他各界人士均提到过这一点,但我们希望“发出不同的声音”,从逻辑上跟进这篇 DNS 文章(或者有人可能会将此称为前传)。
下面是另外两篇优秀文章的链接:
- AskDS 文章 – https://blogs.technet.com/b/askds/archive/2013/06/04/two-lines-that-can-save-your-ad-from-a-crisis.aspx
- Eric Jansen 的文章 - https://cbfive.com/blog/post/Protecting-DNS-Zones-from-Accidental-Deletion.aspx
我们开始吧…
**** 编辑 ****
与所有更改一样,人们应该始终保持小心谨慎,并于推广使用任何更改之前在实验室中进行验证。通常,我都会在自己发布的文章中做出相关呼吁,但并未在此处加以强调。非常抱歉。
此外,与大部分代码一样,此处提供的 PowerShell 代码也应视作“示例代码”。
**** 结束编辑 *****
在旧“域”分区的 DNS 区域中:
您可以使用 AD 用户和计算机 GUI 呈现 Active Directory 发展史上最出色的复选框之一… 或者,再进一步,我们可以使用 PowerShell(当然可以!)
全域性和全林性应用程序分区中的区域均存储在 AD 中的其他位置:
为实施保护,我们使用 PowerShell 切换应用程序分区区域对象上的“protectedfromaccidentaldeletion”属性,因为 GUI 中的任何位置均未显示相关设置。J(嘿,产品组,你们收到过这项微妙的功能请求吗?)
全域性应用程序分区
将所有脆弱分区枚举到一个简洁的 UI 框中:
Get-ADObject -Filter 'ObjectClass -like "dnszone"' -SearchScope Subtree -SearchBase "DC=DomainDnsZones,DC=domain,DC=lab" -properties ProtectedFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion -eq $False} | Select name,protectedfromaccidentaldeletion | out-gridview
实施保护
Get-ADObject -Filter 'ObjectClass -like "dnszone"' -SearchScope Subtree -SearchBase "DC=DomainDnsZones,DC=domain,DC=lab" -properties ProtectedFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion -eq $False} | Set-ADObject –ProtectedFromAccidentalDeletion $true
执行检查
Get-ADObject -Filter 'ObjectClass -like "dnszone"' -SearchScope Subtree -SearchBase "DC=DomainDnsZones,DC=domain,DC=lab" -properties ProtectedFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion -eq $True} | Select name,protectedfromaccidentaldeletion | out-gridview
全林性应用程序分区
将所有脆弱分区枚举到一个简洁的 UI 框中:
Get-ADObject -Filter 'ObjectClass -like "dnszone"' -SearchScope Subtree -SearchBase "DC=ForestDnsZones,DC=domain,DC=lab" -properties ProtectedFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion -eq $False} | Select name,protectedfromaccidentaldeletion | out-gridview
实施保护
Get-ADObject -Filter 'ObjectClass -like "dnszone"' -SearchScope Subtree -SearchBase "DC=ForestDnsZones,DC=domain,DC=lab" -properties ProtectedFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion -eq $False} | Set-ADObject –ProtectedFromAccidentalDeletion $true
执行检查
Get-ADObject -Filter 'ObjectClass -like "dnszone"' -SearchScope Subtree -SearchBase "DC=ForestDnsZones,DC=domain,DC=lab" -properties ProtectedFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion -eq $True} | Select name,protectedfromaccidentaldeletion | out-gridview
旧域分区
将所有脆弱分区枚举到一个简洁的 UI 框中:
Get-ADObject -Filter 'ObjectClass -like "dnszone"' -SearchScope Subtree -SearchBase "CN=MicrosoftDNS,CN=System,DC=domain,DC=lab" -properties ProtectedFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion -eq $False} | Select name,protectedfromaccidentaldeletion | out-gridview
实施保护
Get-ADObject -Filter 'ObjectClass -like "dnszone"' -SearchScope Subtree -SearchBase "CN=MicrosoftDNS,CN=System,DC=domain,DC=lab " -properties ProtectedFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion -eq $False} | Set-ADObject –ProtectedFromAccidentalDeletion $true
执行检查
Get-ADObject -Filter 'ObjectClass -like "dnszone"' -SearchScope Subtree -SearchBase "CN=MicrosoftDNS,CN=System,DC=domain,DC=lab " -properties ProtectedFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion -eq $True} | Select name,protectedfromaccidentaldeletion | out-gridview
注意:如果日后需要删除其中某个区域,只需使用 PowerShell 将目标区域的“ProtectedFromAccidentalDeletion”属性切换为 FALSE:
Set-ADObject "DC=DOMAIN_APP_PARTITION.COM,DC=DomainDnsZones,DC=domain,DC=lab" protectedFromAccidentalDeletion $False
这里提供了几种资源为您提供帮助… 立即行动,保护这块奶酪!