Detección de permisos delegados en Active Directory
Oct 27, 2016
Los permisos de seguridad en Active Directory pueden ser un tema complicado. No solo Microsoft los oculta por defecto en Users and Computers, tampoco hay una herramienta integrada para obtener una imagen completa de cómo se han aplicado los permisos a AD.
In this article, I’ll take you through the basics of delegating, removing permissions, using built–in tools to find permissions that have been delegated, and finally a custom PowerShell script that scans AD.
¿Por qué delegar?
Imagina que eres el director de una gran empresa con varios departamentos: finanzas, RRHH, ventas, alta dirección. Si cada usuario que olvidara su contraseña tuviera que llamar al servicio de asistencia técnica, estarías inundado de llamadas.
En cambio, podría delegar permisos al jefe de cada departamento para que pueda restablecer las contraseñas de su propio equipo.
Otro caso de uso clásico para la delegación es la capacidad del personal para enviar correos electrónicos como si fueran otros, ya sea una bandeja de entrada compartida o un asistente personal enviando correos en nombre de su jefe.
¿Dar a todos el rol de Domain Admin?
Podrías haber pensado—vale, vamos a dar a cada jefe de departamento permisos de Domain Admin, así podrán restablecer las contraseñas cuando sea necesario.
Aunque esto es técnicamente cierto, entonces podrían hacer cualquier cosa que tú puedas hacer, incluyendo el acceso a datos de usuario. Violación de datos ¡en proceso!
Cómo delegar permisos en AD
La forma correcta de lograr esto, por supuesto, es mediante el uso de Delegation. Esto le permitirá seleccionar individualmente los permisos que desea otorgar.
1. Abra Active Directory Users and Computers y conéctese a su dominio de prueba favorito.
2. Haga clic derecho en la Unidad Organizativa del departamento a la que desea otorgar permiso para restablecer contraseñas.
3. Encuentre la opción 'Delegate Control' (esta debería ser la primera opción en la lista). Haga clic en esta y presione Siguiente.
4. Ahora se le solicitará que elija usuarios o grupos a los cuales desea delegar control—estas son las personas a quienes desea permitir realizar una tarea.
Es ALTAMENTE recomendable que cree un grupo de seguridad para cada conjunto de permisos que está delegando (es decir, uno para ‘Sales – Password Reset Ability’, ‘HR – Password Reset Ability’). Esto le permite agregar o quitar usuarios de estos grupos muy fácilmente en el futuro, en lugar de lidiar directamente con los permisos.
5. Continúe y agregue un grupo. (En la figura de abajo he añadido a nuestro equipo de alta dirección.)
6. Presione siguiente y luego elija la opción 'Restablecer contraseñas de usuario y forzar cambio de contraseña en el próximo inicio de sesión'.
7. Presione siguiente y luego finalizar—¡y listo!
Eliminando permisos delegados en AD
Ahora que ha completado el asistente, es posible que se pregunte cómo verificar que realmente delegó permisos y cómo eliminarlos de nuevo.
1. Desde Users and Computers, presione el menú Ver y asegúrese de que la opción ‘Advanced Features’ esté marcada.
2. Al marcar esta casilla, podrá ver la pestaña de seguridad cuando elija Propiedades en objetos de Active Directory.
Haga clic derecho en la misma OU a la que acaba de delegar permisos y elija Propiedades, luego la pestaña Seguridad.
3. Elija 'Avanzado' y luego desplácese hacia arriba y hacia abajo hasta encontrar el grupo al que acaba de otorgar permisos. Debería ver el permiso 'Reset Password' listado bajo 'Access'.
4. Si quisiera eliminar este permiso, podría seleccionarlo y presionar Eliminar, pero déjelo en su lugar por ahora y presione Cancelar.
Como puede ver, encontrar permisos delegados es bastante difícil, especialmente cuando se considera que puede delegar no solo a las OU, sino también a los grupos de seguridad e incluso a los propios objetos de usuario.
Simplifique el análisis de permisos de AD
Vea cómo Netwrix Access Analyzer puede descubrir riesgos en su entorno de Active Directory
Búsqueda de permisos (Usando DSACLS)
Entonces, un escenario de pesadilla para considerar es que alguien ha restablecido la contraseña del jefe y necesitas averiguar quién tenía permiso para hacerlo. (Si tuvieras Netwrix Auditor instalado, podrías echar un vistazo allí, pero por ahora asumiremos que no lo tienes.)
1. En Users and Computers, navegue hasta el objeto de usuario para el que desea verificar los permisos.
2. Haga clic derecho y seleccione 'Elegir propiedades', luego 'Editor de atributos'
3. Desplácese y haga doble clic en ‘distinguishedName’. Copie esta cadena para usarla más tarde.
4. Abra un símbolo del sistema y escriba ‘dsacls’, seguido de pegar la cadena que acaba de copiar, encerrada entre comillas:
5.Presione enter.
6. En este punto probablemente te darás cuenta de que hay demasiados permisos en pantalla, tienes dos opciones:
a. Utilice |more al final del comando para mostrar una pantalla completa a la vez.
b. Redirija la salida a un archivo de texto y lea ese archivo en su lugar utilizando > filename.txt.
7. Opté por la 2ª opción, abrí el archivo en el bloc de notas y finalmente descubrí que el grupo de alta dirección tiene permisos para restablecer la contraseña del jefe.
Búsqueda de permisos (Usando PowerShell)
Ahora que has descubierto la delegación, podrías estar preguntándote si hay alguna delegación que desconoces, ya sea de empleados anteriores o de administradores malintencionados.
He creado un breve script de PowerShell que buscará en cada tipo de objeto delegable y listará las dos delegaciones de permisos comunes: restablecer contraseña y 'enviar como' (de Exchange).
Aquí hay una muestra de ejecución de un dominio:
Para usar este script en tu propio dominio:
1. Abra Active Directory Users and Computers y navegue hasta el dominio (o Unidad Organizativa) que está investigando.
2. Haga clic derecho y seleccione Propiedades.
3. En la pestaña 'Attribute Editor', busque la propiedad 'distinguishedName'.
4. Selecciónelo y presione Ver, luego copie la LDAP Path. Lo necesitará más tarde.
5. Descargue una copia del script desde GitHub:
https://raw.githubusercontent.com/thephoton/activedirectory-delegation-searcher/master/search.ps1
6. Haga clic derecho y edite el script utilizando PowerShell ISE.
7. Edite la línea 6 ($bSearch = …), reemplazando DOMAINCONTROLLER con el nombre de uno de los DCs de su dominio.
8. Edite la línea 6, reemplazando LDAP con la ruta que copió en el paso 4.
9. Guarde el script y presione ejecutar.
10. Permita que el script busque en su Active Directory; el progreso se informa en la consola y cuando se complete recibirá un popup detallando los objetos que tienen permisos delegados a ellos, ¡podría sorprenderse!
Si necesita más información sobre cómo detectar quién modificó los permisos en Active Directory, consulte nuestro how-to. También hay una free tool from Netwrix que proporciona información útil sobre quién tiene permisos para qué en Active Directory y en los recursos compartidos de archivos.
Tutorial de Windows PowerShell Scripting para Principiantes
Aprende másCompartir en
Aprende más
Acerca del autor
Matt Hopton
Consultor
Gerente de Redes TIC, Consultor de TI y emprendedor. Además de trabajar como Gerente de Redes en Sir Thomas Rich's School, Matt desarrolla y aloja sitios web para empresas locales, desarrolla software y proporciona recomendaciones de hardware.
Aprende más sobre este tema
Crear usuarios de AD en masa y enviar sus credenciales por correo electrónico usando PowerShell
Cómo crear, cambiar y probar contraseñas usando PowerShell
Cómo agregar y eliminar grupos de AD y objetos en grupos con PowerShell
Atributos de Active Directory: Último inicio de sesión
Confianzas en Active Directory