Por Gonzalo Reyna

Recientemente recibimos una llamada de un cliente, donde uno de los administradores de manera accidental ejecuto un script que para borrar las cuentas locales de un equipo… en un controlador de dominio. El resultado es que todos los usuarios del dominio fueron borrados del ambiente en tan solo un par de segundos. La buena noticia es que este cliente había habilitado previamente el Recycle Bin, la mala noticia es que tardo mucho tiempo en recuperar todos los usuarios dado que era un ambiente muy grande.

Este tipo de problemas suceden de manera constante, y siempre es problemático para los clientes que tienen que lidiar con esto. Me ha tocado trabajar en situaciones donde la falta de protección adecuada a los objetos provoca muchos problemas en los ambientes de los clientes y en algunos casos les ha costado el trabajo a dichos administradores, todo por un clic dado de manera accidental. Pero, ¿cómo podemos evitar esto?

Si usted mira las propiedades de cualquier objeto en Active Directory, se dará cuenta que existe un checkbox llamado “Protect object from accidental deletion” en el tab de Object. Cuando esto se habilita, se establecen permisos para denegar la eliminación al grupo Everyone.

clip_image001

Con excepción de las Unidades Organizacionales, esta protección no esta habilitada de manera predeterminada en los objetos de Active Directory. Cuando se crea un objeto, es necesario establecerlo de manera manual. El reto, es como hacerlo cuando se tienen miles de objetos.

La respuesta: ¡Powershell! clip_image003

Dos simples líneas de Powershell van a habilitar la protección necesaria en todos los objetos dentro de Active Directory. El primer comando va a establecer esto para cualquier usuario o computadora (o cualquier objeto que tenga como valor dentro del atributo objectClass el valor user). El segundo comando establecerá la protección para cualquier Unidad Organizacional en la que no se ha establecido previamente:

Get-ADObject -filter {(ObjectClass -eq "user")} | Set-ADObject -ProtectedFromAccidentalDeletion:$true

Get-ADOrganizationalUnit -filter * | Set-ADObject -ProtectedFromAccidentalDeletion:$true

Una vez que ejecute estos comandos, su ambiente estará protegido para eliminación accidental (o intencional) de los objetos.

Nota: Como prueba de concepto, evalué el script que el cliente uso con la protección habilitada y ninguno de mis objetos en el Directorio Activo fue eliminado.

Para la versión en inglés de este artículo visite http://blogs.technet.com/b/askds/archive/2013/06/04/two-lines-that-can-save-your-ad-from-a-crisis.aspx

En portugués, visite http://blogs.technet.com/b/latam/archive/2013/06/11/dois-comandos-que-podem-te-salvar-de-um-desastre-no-ad.aspx