December 19, 2009

El mito del adminSDHolder...

Existe en todos los dominios y constantemente está en acción pero muchos lo ignoramos, es el adminSDHolder.
La definición técnica de dicho objeto la podemos encontrar en http://support.microsoft.com/kb/232199, básicamente lo que este hace es asegurarse que ningún security principal tenga altos derechos sobre otro que pertenezca a alguno de los grupos por defecto como Domain Admins, Account Operators u otros o, humanamente que Pedrito no le pueda cambiar la contraseña a Juanito, quien es el administrador del dominio, esto para dar un simple ejemplo.
Y dónde lo vemos, con el lindo ADSIEdit, en el contenedor System, por ejemplo CN=System,DC=bla-bla,DC=com.
Ahora bien, como lo vemos en accion? Pensemos en un escenario súper común, intentas migrar el buzón de correo de uno de tus compañeros y no lo logras, el error que se te muestra es relacionado a permisos en Active Directory pero tus permisos aparentan estar bien.
Si miras detenidamente el objeto, en la sección Avanzada, dentro de la etiqueta de Seguridad notaras que la herencia de permisos para dicho objeto esta deshabilitada, la podríamos habilitar pero en la próxima corrida del adminSDHolder los valores serán sobre-escritos.
En muchos casos con hacer esto tan simple podremos continuar nuestras tareas.
Ahora bien, casos de la vida real, en muchas empresas diferentes personas han realizado tareas técnicas en algún momento y luego dejaron esto de lado, muy comúnmente sus membresías no son ajustadas o bien lo hacen pero el adminSDHolder sigue monitoreando/afectando dichos objetos.
Entonces como sabe el adminSDHolder que debe auditar un objeto? Esto lo hace por medio del atributo adminCount. Lo más normal es que este no tenga valor alguno, pero en las cuentas protegidas verán que el valor es de 1.
Por razones de diseño este bit no se desactiva al remover las membresías. O sea que aunque yo remueva a mis antiguos administradores de los grupos privilegiados, cambiando asi sus permisos, el adminSDHolder continuara monitoreando dichos objetos y cambiando su ACL según sea necesario.
Los insto a hacer una rápida revisión de su ambiente, para determinar cuántas cuentas protegidas tienen en su ambiente!
adfind -f "(&(objectClass=user)(adminCount=1)(!(objectClass=computer)))" sAMAccountname memberOf
Esto les dará un listado de las cuentas de usuario protegidas por el adminSDHolder y la lista de grupos a que pertenezcan.
Cómo removerlo? Pues con ADSIEdit borren ese 1 del adminCount, luego busquen en objeto en ADUC, clic derecho Properties / Security / Advanced y denle clic en Restore Defaults. Bingo!
Hasta el 2010!

2 comments:

  1. Hola, gracias por tu post. De lo que entiendo, yo tengo un usuario que tiene el valor admincount=1 pero no es mienbro de ninguno de los grupos admin, operators ni ningun otro grupo privilegiado. Esto quiere decir que a este usuario lo pusieron en uno de estos grupos y luego lo removieron y por ello veo el valor del admincount=1? Hay algun forma de cambiar este atributo para varios usuarios con algun batchero?

    ReplyDelete
  2. Si, es correcto lo que observas. Disculpa que hasta ahora vi este comentario. En un rato te posteo como limpiar ese atributo.

    ReplyDelete