Cómo mantener DNS a salvo: Protegiendo las zonas integradas a AD de borrados accidentales.
Articulo Original (https://blogs.technet.com/b/askpfeplat/archive/2013/11/25/how-to-save-the-dns-cheese-protect-ad-integrated-dns-zones-from-accidental-deletions.aspx)
Como seguimiento al reciente artículo sobre la auditoria para eliminaciones DNS, aquí les tenemos un poquito sobre prevención.
Compañeros nuestros, nuestros pares en otras áreas y muchos otros han cubierto esto pero decidimos igual proporcionar nuestro propio aporte a forma de seguimiento lógico al artículo previamente mencionado sobre auditoría en DNS.
Aquí las ligas a algunos de otros valiosos artículos:
- De AskDS: https://blogs.technet.com/b/askds/archive/2013/06/04/two-lines-that-can-save-your-ad-from-a-crisis.aspx
- De Eric Jansen: https://cbfive.com/blog/post/Protecting-DNS-Zones-from-Accidental-Deletion.aspx
Empecemos…
Para zonas DNS en la partición de dominio:
Usted puede usar la consola de “Active Directory Users and Computers” para acceder a uno de los mejores “checkboxes” en la historia de AD… o, igual se puede usar powershell (¡¡¡obviamente!!! J):
Las zonas en las particiones de aplicación Domain-Wide y Forest-Wide son almacenadas en algún otro lugar dentro de AD:
Para proteger estas zonas hacemos uso de powershell para habilitar lo equivalente a la opción “Protect object from accidental deletion”, dado que esto no se puede acceder todavía desde ninguna interfaz gráfica (hey Grupo de Producto, ¿cachaste ésta petición? J)
Partición de aplicación Domain-wide
Para enumerar todas las zonas dns vulnerables en una “cajita” gráfica:
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
Para protegerlas:
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
Para checarlas:
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
Partición de aplicación Forest-wide
Para enumerar todas las zonas dns vulnerables en una “cajita” gráfica:
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
Para protegerlas:
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
Para checarlas:
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
Partición de dominio (legacy)
Para enumerar todas las zonas dns vulnerables en una “cajita” gráfica:
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
Para protegerlas:
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
Para checarlas:
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
Nota: Si se requiere eliminar alguna de estas zonas en el futuro lo único que habría de hacer es cambiar el atributo ‘ProtectedFromAccidentalDeletion’ a FALSE with PowerShell:
Set-ADObject “DC=DOMAIN_APP_PARTITION.COM,DC=DomainDnsZones,DC=domain,DC=lab" protectedFromAccidentalDeletion $False
Bueno, ahora que ya tiene usted un poco más de recursos de ayuda… ¡¡¡es hora de ir y proteger su DNS!!!