Para desbloquear totalmente esta sección, debe iniciar sesión
La delegación de Active Directory (AD) es una parte fundamental de la infraestructura de TI de muchas organizaciones. Al delegar la administración, puede otorgar a los usuarios o grupos solo los permisos que necesitan sin agregar usuarios a grupos privilegiados (por ejemplo, Administradores de dominio, Operadores de cuentas). La forma más sencilla de llevar a cabo la delegación es mediante el Asistente de delegación de control en el complemento Usuarios y equipos de Active Directory de Microsoft Management Console (MMC).
Aunque el Asistente de Delegación de control proporciona una forma sencilla de delegar permisos, no hay un asistente correspondiente para eliminar permisos delegados. Alguien en Microsoft debe haber notado esta deficiencia y creado un programa de línea de comandos llamado Dsrevoke.exe que puede eliminar las entradas de permisos agregadas por el Asistente de Delegación de Control.
Sin embargo, el Dsrevoke.el programa exe tiene dos limitaciones técnicas importantes, que se documentan en el artículo de Microsoft » Cuando se utiliza la herramienta de línea de comandos Dsrevoke para informar de permisos para todas las unidades organizativas en un dominio basado en Windows Server 2003, es posible que la herramienta no devuelva todas las entradas de control de acceso.»Estas limitaciones son:
- Revoke.exe solo puede encontrar hasta 1,000 unidades organizativas en una sola búsqueda. La solución alternativa sugerida para esta limitación es iniciar la búsqueda del programa en una unidad organizativa (UO) más anidada para reducir el número de resultados.
- Dsrevoke.exe falla si alguna unidad organizativa contiene un carácter de barra diagonal (/) en sus nombres. No hay otra solución para esta limitación que no sea cambiar el nombre de las unidades organizativas ofensivas.
Por razones de organización, cambiar el nombre de las unidades organizativas para eliminar el carácter de barra diagonal no suele ser una opción. Además, la barra es un carácter válido en un nombre de unidad organizativa, y Dsrevoke.exe debería funcionar sin importar si una unidad organizativa contiene una barra diagonal en su nombre o no. Además, trabajar alrededor del límite de 1000 unidades organizativas en mi entorno consumía mucho tiempo.
A partir de versiones recientes de Windows, las Dsacl.el programa exe proporciona una forma de eliminar los permisos agregados por el Asistente de Delegación de Control. Aunque no falla si una unidad organizativa contiene una barra diagonal en su nombre, Dsacls.exe no puede buscar subcontenedores para permisos como Dsrevoke.exe no.
Dsrevoke.exe y Dsacls.exe puede producir una lista de permisos, pero la salida es muy larga y técnica.
Necesitamos tener información de fondo sobre lo que sucede cuando usamos el Asistente de Delegación de Control, así como cubrir algunos conceptos básicos de seguridad de Windows.
¿Por qué delegar?
Imagine que es el jefe de una gran empresa con varios departamentos: finanzas, recursos humanos, ventas, alta dirección.
Si todos los usuarios que olvidaron su contraseña tuvieran que llamar al servicio de asistencia de TI, se llenarían de llamadas.
En su lugar, puede 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 posibilidad de que el personal envíe correos electrónicos entre sí, ya sea un buzón compartido o un asistente personal enviando correos electrónicos en nombre de su jefe.
¿Dar Administrador de dominio a todos?
Es posible que haya pensado, vamos a dar permisos de administrador de dominio a cada jefe de departamento, luego pueden restablecer las contraseñas cuando sea necesario.
Si bien esto es técnicamente cierto, entonces podrían hacer todo lo que pueda hacer, incluido el acceso a los datos del usuario.
Por lo tanto, tenga cuidado de dar el rol de Administrador de dominio a usuarios que no son de TI para reducir las tareas de administración: este enfoque puede provocar varios problemas.
Para comprender la información que se proporciona en el cuadro de diálogo Configuración de seguridad avanzada, debe conocer los siguientes conceptos de seguridad de Windows: lista de control de acceso (ACL), entrada de control de acceso (ACE), fideicomisario y herencia. También necesita comprender estos conceptos para usar Remove-DSACE. ps1.
ACL: Hay dos tipos de ACL: ACL discrecionales (DACL) y ACL de sistema (SACL). Una DACL identifica las cuentas a las que se permite o deniega el acceso a un objeto. Una SACL describe cómo un administrador quiere registrar los intentos de acceso a un objeto (es decir, la auditoría).
AS: Un ACL se compone de ASEs. Cada AS identifica a un fideicomisario y especifica el acceso del fideicomisario (permitir, denegar o auditar) para el objeto. El Asistente de Delegación de control agrega ASEs a la DACL de un contenedor de anuncios. La figura anterior muestra la DACL de la unidad organizativa de Todos los usuarios. En esta figura, el término entrada de permiso es sinónimo de ACE.
Fiduciario: Un fiduciario es la entidad (un usuario, grupo de seguridad o sesión de inicio de sesión) a la que se aplica un ACE. Cada AS se aplica a un único fideicomisario. En la Figura 5, el término Principal es sinónimo de fiduciario. La Figura 5 muestra que hay dos ASEs asignados al grupo de restablecimiento de contraseñas. En otras palabras, el grupo de Restablecimiento de contraseñas es el administrador (principal) de estos dos ASEs.
Herencia: Un ACE se puede aplicar directamente a un objeto, o se puede heredar del objeto padre del recurso. En la figura anterior, los dos ASEs de la unidad organizativa Todos los usuarios que contienen el grupo Restablecimiento de contraseñas como administrador no se heredan del contenedor principal (es decir, la columna Heredado de lee Ninguno) porque el Asistente de Delegación de Control los agregó directamente a la DACL.
Agregar permisos delegados con el Asistente
el Asistente de Delegación de control proporciona una forma sencilla de delegar permisos. Por ejemplo, supongamos que desea que los miembros del grupo Restablecimiento de contraseñas puedan restablecer las contraseñas de los usuarios de la unidad organizativa Todos los usuarios del dominio de AD. Para ello, debe realizar los siguientes pasos:
Abra la consola de Usuarios y equipos de Active Directory y, a continuación, haga clic con el botón secundario en la unidad organizativa Todos los usuarios (o cualquier unidad organizativa) y elija Control delegado, como se muestra en la Figura 1. Haga clic en el botón Siguiente para avanzar más allá de la página de bienvenida del asistente.
En la página Usuarios o grupos del asistente, haga clic en el botón Agregar.
En el cuadro de diálogo Seleccionar usuarios, equipos o grupos, introduzca el nombre del grupo (Restablecimiento de contraseña), haga clic en el botón Comprobar nombres para asegurarse de que el nombre del grupo es correcto y haga clic en Aceptar, como se muestra en la siguiente figura:
Después de asegurarse de que el nombre del grupo aparece en la página Usuarios o grupos, haga clic en Siguiente, como se muestra en la siguiente figura:
En la página Tareas a delegar, seleccione Restablecer contraseñas de usuario y forzar el cambio de contraseña en el siguiente inicio de sesión y haga clic en Siguiente, como se muestra en la siguiente figura:
Al hacer clic en el botón Finalizar, el Asistente de Delegación de control agrega los permisos solicitados a la unidad organizativa Todos los usuarios. Para ver los efectos de la delegación, haga clic con el botón secundario en la unidad organizativa Todos los usuarios, elija Propiedades y seleccione la ficha Seguridad. (Si la pestaña Seguridad no está visible, habilite la opción Características avanzadas en el menú Ver de la consola de Usuarios y equipos de Active Directory.)
Para obtener una vista detallada, puede hacer clic en el botón Avanzado. En la siguiente figura se muestra el cuadro de diálogo Configuración de seguridad avanzada que aparece.
Comprobar Permiso (Usando PowerShell)
Ahora que hemos descubierto la delegación, es posible que se pregunte si hay alguna delegación que no conozca, ya sea de empleados anteriores o de administradores maliciosos.
Hemos creado un breve script de PowerShell que buscará cada tipo de objeto delegable y enumerará las dos delegaciones de permisos comunes, restablecer contraseña y enviar-como (desde Exchange).
Aquí hay un ejemplo de ejecución desde un dominio:
Y aquí el código de script:
###### Search common delegation targets$filter = "(|(objectClass=domain)(objectClass=organizationalUnit)(objectClass=group)(sAMAccountType=805306368)(objectCategory=Computer))" ###### Search just OUs and Groups#$filter = "(|(objectClass=organizationalUnit)(objectClass=group))"###### More filters can be found here: http://www.ldapexplorer.com/en/manual/109050000-famous-filters.htm###### Connect to DOMAINCONTROLLER using LDAP path, with USERNAME and PASSWORD#$bSearch = New-Object System.DirectoryServices.DirectoryEntry("LDAP://DOMAINCONTROLLER/LDAP"), "USERNAME", "PASSWORD") ###### Connect to DOMAINCONTROLLER using LDAP path$bSearch = New-Object System.DirectoryServices.DirectoryEntry("LDAP://DOMAINCONTROLLER/LDAP") $dSearch = New-Object System.DirectoryServices.DirectorySearcher($bSearch)$dSearch.SearchRoot = $bSearch$dSearch.PageSize = 1000$dSearch.Filter = $filter #comment out to look at all object types$dSearch.SearchScope = "Subtree"####### List of extended permissions available here: https://technet.microsoft.com/en-us/library/ff405676.aspx$extPerms = '00299570-246d-11d0-a768-00aa006e0529', 'ab721a54-1e2f-11d0-9819-00aa0040529b', '0'$results = @()foreach ($objResult in $dSearch.FindAll()){ $obj = $objResult.GetDirectoryEntry() Write-Host "Searching... " $obj.distinguishedName $permissions = $obj.PsBase.ObjectSecurity.GetAccessRules($true,$false,) $results += $permissions | Where-Object { $_.AccessControlType -eq 'Allow' -and ($_.ObjectType -in $extPerms) -and $_.IdentityReference -notin ('NT AUTHORITY\SELF', 'NT AUTHORITY\SYSTEM', 'S-1-5-32-548') } | Select-Object ` @{n='Object'; e={$obj.distinguishedName}}, @{n='Account'; e={$_.IdentityReference}}, @{n='Permission'; e={$_.ActiveDirectoryRights}}}$results | Out-GridView
Para usar este script en su propio dominio:
- Abra Usuarios y equipos de Active Directory y navegue hasta el dominio (o Unidad Organizativa) que está investigando.
- Haga clic con el botón derecho y elija Propiedades.
- En la pestaña Editor de atributos, busque la propiedad distinguishedName.
- Selecciónelo y presione Ver, luego copie la ruta LDAP. Necesitarás esto más tarde.
- Editar línea 6 ($bSearch = …), reemplazando DOMAINCONTROLLER con el nombre de uno de los DCs de su dominio.
- Edite la línea 6, reemplazando LDAP con la ruta que copió anteriormente.
- Guarde el script y pulse ejecutar.
- Deje que el script busque en su Directorio activo; el progreso se informa en la consola y, cuando se complete, recibirá una ventana emergente que detalla los objetos que tienen permisos delegados.