如何保护“DNS 奶酪” - 保护 AD 集成式 DNS 区域,避免意外删除

阅读我们发布的一篇有关 DNS 删除审核的文章后,想向大家提供一些防范措施。实际上我要感谢 Brent Whitlow、Bryan Zink 还有博客作者 Hilde。

我们的同事、同行及其他各界人士均提到过这一点,但我们希望“发出不同的声音”,从逻辑上跟进这篇 DNS 文章(或者有人可能会将此称为前传)。

下面是另外两篇优秀文章的链接:

我们开始吧…

**** 编辑 ****

与所有更改一样,人们应该始终保持小心谨慎,并于推广使用任何更改之前在实验室中进行验证。通常,我都会在自己发布的文章中做出相关呼吁,但并未在此处加以强调。非常抱歉。

此外,与大部分代码一样,此处提供的 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

这里提供了几种资源为您提供帮助… 立即行动,保护这块奶酪!