Ver o Eliminar Permisos Delegados de Active Directory

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).

Relacionado :Administración de Active Directory con PowerShell

Aunque el Asistente de delegación de control proporciona una forma sencilla de delegar permisos, no existe el asistente correspondiente para eliminar los 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.

Cuando se trabaja con Dsrevoke.exe recientemente, pude solucionar el primer problema, pero luego me encontré con el segundo problema. Por razones de organización, cambiar el nombre de las unidades organizativas para eliminar el carácter de barra diagonal no era 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.

Debido a estos problemas, decidí ver si había alguna alternativa incorporada a Dsrevoke.exe. De partida en las versiones recientes de Windows, el Dsacls.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.

Primero decidí escribir un script simple para buscar unidades organizativas y llamar a Dsacl.exe para eliminar los permisos delegados de cada unidad organizativa. Sin embargo, cuando pensé en cómo quería diseñar un script de este tipo, se me ocurrió que también me gustaría ver una lista de las unidades organizativas que tenían permisos delegados a un usuario o grupo en particular. Revoke.exe y Dsacls.exe puede producir una lista de permisos, pero la salida es muy larga y técnica. Quería algo más simple.

Debido a las limitaciones de Dsrevoke.exe y Dsacls.exe, y mi deseo de obtener una salida más corta, decidí escribir un script de Windows PowerShell para obtener la funcionalidad que quería. El resultado es Remove-DSACE. ps1. Antes de hablar de este script, sin embargo, necesito proporcionar información de fondo sobre lo que sucede cuando se utiliza el Asistente de Delegación de Control, así como cubrir algunos conceptos básicos de seguridad de Windows.

Agregar permisos delegados con el Asistente

Como mencioné anteriormente, el Asistente de Delegación de Control proporciona una forma fácil 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 hacer esto, debe realizar estos pasos:

  1. Abra la consola de Usuarios y equipos de Active Directory.
  2. Haga clic con el botón secundario en la unidad organizativa Todos los usuarios 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.

Figura 1: Inicio del Asistente de Delegación de Control

  1. En la página Usuarios o grupos del asistente, haga clic en el botón Agregar.
  2. 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 Figura 2.
Figura 2: Introducir el Nombre del Grupo
Figura 2: Introducir el nombre del Grupo
  1. 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 Figura 3.
Figura 3: Asegurarse De Que el Nombre del Grupo Aparezca En la Lista
Figura 3: Asegurarse De Que el Nombre del Grupo Aparece En la Lista
  1. 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 Figura 4.
Figura 4: Seleccionar las Tareas a Delegar
Figura 4: Seleccionar las Tareas a Delegar

  1. Verifique la información en la página final del asistente y haga clic en Finalizar.

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. La figura 5 muestra el cuadro de diálogo Configuración de seguridad avanzada que aparece.

 Figura 5: Revisión de la DACL para la Unidad organizativa de Todos los Usuarios
Figura 5: Revisión de la DACL para la unidad organizativa de todos los Usuarios

ACL, ASEs y Fideicomisarios—¡Ay!

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), administrador y herencia. También debe comprender estos conceptos para usar Remove-DSACE. ps1.

ACL. Hay dos tipos de ACLs: ACLS discrecionales (DACL) y ACLs 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).

ACE. Un LCA 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 5 muestra la DACL para la unidad organizativa de Todos los usuarios. En esta figura, el término entrada de permiso es sinónimo de ACE.

Fideicomisario. Un administrador 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 5, 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. La figura 6 muestra el DACL para la unidad organizativa contable. La DACL de la Unidad organizativa Contable contiene dos ASEs para el grupo de restablecimiento de contraseñas, pero estos ASEs se heredan de la unidad organizativa Todos los usuarios (es decir, la columna Heredada de lee OU=Todos los usuarios,DC=fabrikam,DC=local).

 Figura 6: Revisión de la DACL para la unidad organizativa de contabilidad
Figura 6: Revisión de la DACL para la unidad organizativa de contabilidad

Introducción de Remove-DSACE. ps1

Escribí Remove-DSACE.ps1 (abreviatura de remove directory service ACEs) para lograr los siguientes objetivos:

  • Encuentra unidades organizativas que contengan ASEs no heredados que contengan un fideicomisario.
  • Recurse a sub-OUs si se solicita.
  • Eliminar ASEs no heredados que contengan un administrador.
  • Produzca una salida concisa.

La sintaxis del script es la siguiente:

Remove-DSACE path 

El parámetro-Report o-Remove determina si el script listará o eliminará ASEs no heredados. Si especifica-Report, el script encuentra ASEs no heredados que contienen administradores, pero no los elimina. Si especifica-Remove, el script elimina los ASEs no heredados. Es muy importante entender que el script eliminará todos los ASEs no heredados para el administrador, no solo los ASEs agregados por el Asistente de Delegación de Control. Esto se debe a que no hay forma de determinar cómo se agregaron los ASEs no heredados.

Los parámetros-Report y-Remove son opcionales, pero el script asume el parámetro-Report de forma predeterminada. El script generará un error si especifica ambos parámetros al mismo tiempo.

Se utiliza el parámetro-Path para especificar uno o más nombres distinguidos (DNs) de AD OU. El nombre del parámetro-Path es opcional y acepta entradas de canalización. Aunque puede especificar varios DNS, no puede usar comodines.

El parámetro-Trustee nombra al trustee a encontrar en los ASEs. El script examina las DACL de cada unidad organizativa en busca de ASEs no heredados que contengan el fideicomisario nombrado. Puede especificar varios fideicomisarios utilizando una lista delimitada por comas o una matriz, pero no puede usar comodines. Puede especificar nombres de fideicomisario utilizando cualquiera de los formatos de nombre enumerados en la Tabla 1.

Formato Ejemplo
Tabla 1: Formatos de nombre para el parámetro-Trustee
Formato de nomenclatura de Windows NT 4.0 (NT4) FABRIKAM\KenDyer
El DN del objeto CN = Ken Dyer, CN = Users, DC = fabrikam, DC = com
El nombre canónico del objeto fabrikam.com/Users/Ken Tintorero
Nombre principal de usuario del objeto (UPN)

Incluya el parámetro-Recurse si desea buscar unidades organizativas debajo de la unidad organizativa especificada. Si desea conectarse a un controlador de dominio (DC) específico, puede especificar el nombre del servidor con el parámetro
-ServerName. Los parámetros-Recurse y-ServerName son opcionales.

El script admite credenciales alternativas. El parámetro-Credential utiliza un objeto PSCredential que contiene el nombre de usuario y la contraseña que el script debe usar para conectarse al dominio.

El script también admite el parámetro-Confirm. El parámetro-Confirm solo es significativo en combinación con el parámetro-Remove. El parámetro-Confirm está habilitado de forma predeterminada, a menos que lo deshabilite especificando-Confirm: FALSE FALSE o estableciendo la variable Confirm ConfirmPreference en None. Solo debes desactivar el parámetro-Confirmar cuando estés absolutamente seguro de que estás eliminando los ASEs correctos.

El script produce objetos de salida que contienen las propiedades enumeradas en la Tabla 2.

Propiedad Descripción
Tabla 2: Propiedades del objeto de salida para Remove-DSACE.ps1
Ruta El DN de la Unidad organizativa
Trustee El nombre del trustee en formato DOMAIN \ name
ASEs El número de ASEs no heredados en el LCA de la unidad organizativa
Resultado * La palabra “Eliminado” o un mensaje de error
*La propiedad Result solo existe cuando se utiliza el parámetro-Remove.

El script solo incluye unidades organizativas con ASEs no heredados que contienen un administrador. Los ASEs heredados de un fiduciario no se incluyen en la salida. La figura 7 muestra dos ejemplos. El primer comando de la Figura 7 no produce resultados porque la DACL de la unidad organizativa de contabilidad no contiene AS no heredados para el grupo de restablecimiento de contraseñas. (La unidad organizativa de contabilidad tiene dos ASEs para el grupo Restablecimiento de contraseñas, pero estos ASEs se heredan de la unidad organizativa Todos los usuarios, como se muestra en la Figura 6.) El segundo comando de la Figura 7 produce una salida. Hay dos ASEs no heredados para el grupo Restablecimiento de contraseñas en la unidad organizativa Todos los usuarios (como se ve en la Figura 5).

 Figura 7: Comparación de la salida de dos Comandos
Figura 7: Comparación de la salida de dos comandos

Ejemplo del mundo real

Veamos cómo puede usar Remove-DSACE. ps1 en el mundo real. Supongamos que un administrador en la fábrica.el dominio local había utilizado el Asistente de Delegación de Control para delegar permisos al grupo de Personal de Secretariado en la unidad organizativa de Todos los Usuarios y algunas unidades organizativas debajo de ella, pero no recuerda cuáles unidades organizativas. Debe eliminar estos permisos delegados para poder delegarlos a otros grupos.

Primero, debe ver una lista de las unidades organizativas que tienen ASES no heredados que contienen el grupo de Personal de Secretaría. Para ello, puede utilizar el comando:

Remove-DSACE -Report ` -Path "OU=All Users,DC=fabrikam,DC=local" ` -Trustee "FABRIKAM\Secretarial_Staff" ` -Recurse | Format-List

Este comando y su salida se muestran en la Figura 8.

 Figura 8: Listado de las Unidades Organizativas Que Tienen ASEs No Heredados Que Contienen el Grupo de Personal de Secretaría
Figura 8: Listado de las unidades organizativas Que tienen ASEs No Heredados Que contienen el Grupo de Personal de Secretaría

En esta salida, puede ver que hay tres unidades organizativas que tienen AS no heredados que contienen el grupo de Personal de Secretaría. Una vez que haya verificado que puede eliminar estos ASEs, puede reemplazar el parámetro-Report con el parámetro-Remove y repetir el comando, como se muestra en la Figura 9. Como mencioné antes, si al grupo de Personal de Secretaría se le han asignado otros permisos fuera del Asistente de Delegación de Control, también se eliminarán.

 Figura 9: Eliminación de las Unidades Organizativas Que Tienen ASEs No Heredados Que Contienen el Grupo de Personal de Secretaría
Figura 9: Eliminar las Unidades organizativas Que Tienen ASEs No Heredados Que contienen el Grupo de Personal de Secretaría

Tomar el control de la Delegación de anuncios

El Asistente de Delegación de control es una herramienta muy útil, pero no hay una manera fácil de ver o revertir rápidamente sus efectos. Aunque puedes usar Dsrevoke.exe y Dsacls.exe para llevar a cabo estas tareas, estas herramientas tienen algunas limitaciones. Si usas el script Remove-DSACE.ps1 en su lugar, tendrás un mejor control sobre los permisos delegados en AD. Puede descargar este script haciendo clic en el botón Descargar el código situado en la parte superior de la página.

Vídeos relacionados de Brian Desmond (solo acceso VIP):
Sesión 1: Dominio de la Delegación de Permisos de Active Directory
Sesión 2: Dominio de la Delegación de Permisos de Seguridad de Active Directory

Leave a Reply