Magic Quadrant™ para la gestión de acceso privilegiado 2025: Netwrix reconocida por cuarto año consecutivo. Descarga el informe.

Plataforma
Centro de recursosBlog
Una guía para los atributos vinculados de Active Directory

Una guía para los atributos vinculados de Active Directory

Feb 20, 2017

El atributo vinculado de Active Directory es un tipo especial de atributo utilizado para describir las relaciones entre objetos. Esta publicación explica qué son los atributos vinculados y cómo funcionan.

Contenido relacionado seleccionado:

¿Qué hace que un atributo sea un atributo vinculado?

Every attribute in Active Directory is defined by an AttributeSchema object in the Active Directory schema partition. The AttributeSchema objects that define linked attributes are the only schema objects that possess a populated LinkID attribute. Accordingly, identifying all of the linked attributes in a domain is as easy as using PowerShell to search the schema for objects with a populated LinkID, like this:

      Get-ADObject -SearchBase (Get-ADRootDSE).SchemaNamingContext -LDAPFilter "(LinkID=*)"
      

Los atributos vinculados generalmente existen en pares, un enlace directo y un enlace inverso, que está definido por el valor del atributo LinkID:

  • Enlace directo — El valor de LinkID siempre es un número par positivo.
  • Enlace de retorno — El valor de LinkID siempre es un número entero impar positivo; de hecho, es el valor del LinkID del enlace directo asociado más uno.

Los atributos con los valores de LinkID más pequeños son el atributo Member y el atributo MemberOf, que se utilizan para rastrear la pertenencia a grupos en Active Directory. Así que modifiquemos nuestro script de PowerShell para limitar la salida solo a esos dos atributos:

Image

La salida nos indica varios hechos importantes sobre estos dos atributos:

  • El valor de LinkID del atributo Member es 2, lo cual es un número entero par. Eso significa que el atributo Member es un enlace directo.
  • The LinkID value of the MemberOf attribute is 3, which is an odd integer. That means the MemberOf attribute is a back link.
  • El valor de LinkID del enlace de retorno MemberOf es el valor de LinkID del enlace directo del atributo Member más uno (3 = 2 + 1). Eso significa que el atributo Member y el atributo MemberOf son atributos vinculados asociados.

Se puede utilizar un script de PowerShell ligeramente diferente para recuperar directamente el nombre del enlace hacia adelante o hacia atrás asociado a un atributo vinculado, aunque no te indica explícitamente si el atributo es un enlace hacia adelante o hacia atrás. Tendrías que mirar el valor de LinkID y determinarlo por ti mismo.

Image

¿Cómo funcionan los atributos vinculados de Active Directory?

Ahora que hemos establecido lo que son los atributos vinculados y cómo identificarlos, es hora de explorar su comportamiento.

Los atributos vinculados almacenan información sobre una relación entre dos objetos, en contraste con los atributos convencionales de Active Directory, que almacenan información sobre un objeto. Esta diferencia funcional se refleja en el hecho de que Active Directory almacena los valores de los atributos vinculados de manera diferente a como almacena los valores de otros atributos.

Cómo se almacenan los atributos vinculados

Los datos de Active Directory se almacenan en el archivo de base de datos ntds.dit. Los valores de los atributos convencionales se guardan en una tabla llamada datatable. Los atributos vinculados tienen su propia tabla dedicada, la apropiadamente denominada link_table. Si echamos un vistazo dentro de una instantánea del archivo de base de datos ntds.dit de mi laboratorio, podemos ver cómo Active Directory almacena los valores de los atributos vinculados:

Image

Las referencias de objeto en la link_table hacen uso de la etiqueta de nombre distinguido del objeto (DNT), que en realidad es la clave primaria interna de los registros en la datatable ntds.dit. Esto evita que los cambios en el nombre distinguido de un objeto requieran una actualización de las entradas asociadas de la link_table.

La captura de pantalla resalta tres campos importantes en la link_table:

  • link_DNT — Una referencia a un objeto de enlace directo.
  • backlink_DN — Una referencia al objeto de enlace inverso asociado.
  • link_base — Una referencia al LinkID del atributo de enlace directo. Este campo utiliza el valor de LinkID del enlace directo para identificar la relación que se está rastreando entre los dos objetos (aunque, como puedes ver en la captura de pantalla, los valores en la tabla son en realidad el valor de LinkID dividido por 2).

Consecuencias prácticas de este enfoque para almacenar atributos vinculados

Aunque este enfoque de almacenamiento puede parecer un poco extraño, es un diseño realmente brillante que resulta en algunas consecuencias prácticas importantes:

  • Los valores de enlace directo se almacenan; los valores de enlace inverso se construyen. Este es fácilmente el concepto más importante que debes recordar de esta discusión: Los enlaces inversos no almacenan información. Dado que una asociación entre dos objetos es una entidad única, Active Directory no necesita almacenar más de una copia de una asociación. Cuando se consulta un enlace directo, Active Directory puede simplemente devolver las entradas de link_table donde el DNT del objeto consultado coincide con el valor en el campo link_DNT y el LinkID del enlace directo coincide con el valor en el campo link_base. Cuando se consulta un enlace inverso, Active Directory puede calcular sus valores devolviendo las entradas de link_table donde el DNT del objeto consultado coincide con el valor en el campo backlink_DNT y el LinkID del enlace directo asociado (calculado restando 1 del LinkID del enlace inverso) coincide con el valor en el campo link_base.
  • Los valores de enlace directo son editables; los valores de enlace inverso son de solo lectura. Una vez que sabes que Active Directory almacena solo los valores de los enlaces directos, esto probablemente parece obvio. Sin embargo, tiene una consecuencia importante: cuando se modifica un atributo vinculado, Active Directory actualiza el enlace directo, lo que modifica el objeto que posee ese enlace. El enlace inverso, que posee un valor de solo lectura construido, nunca puede ser modificado, por lo que el objeto que posee el enlace inverso tampoco se modifica.

    Para ilustrar por qué esto es importante, consideremos agregar un usuario a un grupo. Esta actualización modifica solo el atributo Miembro del grupo; el atributo MiembroDe del usuario no se modifica. Dado que el objeto del grupo tuvo un cambio material, los campos de metadatos que reflejan ese cambio (por ejemplo, los atributos “ModifyTimeStamp” y “WhenChanged”) se actualizan. Esos mismos campos de metadatos no se actualizan en el objeto del usuario porque, aunque su atributo MiembroDe ahora devolverá un valor diferente, el atributo MiembroDe en sí no fue modificado.
  • Los enlaces hacia adelante son obligatorios; los enlaces hacia atrás son opcionales. Algunos artículos sobre atributos vinculados afirman que siempre tienen tanto un enlace hacia adelante como uno hacia atrás. Aunque eso suele ser cierto, la presencia de un enlace hacia atrás no es estrictamente necesaria. De hecho, si utilizamos PowerShell para recuperar pares de atributos vinculados, podemos ver que no todos los enlaces hacia adelante en mi laboratorio tienen un enlace hacia atrás asociado:
Image

Beneficios de este enfoque para almacenar atributos vinculados

¿Recuerdas cómo mencioné que la forma en que se almacenan los atributos vinculados es bastante brillante? El enfoque de Active Directory para almacenar los valores de atributos vinculados en realidad produce dos beneficios realmente significativos.

Primero, almacenar solo los valores de enlaces directos y usarlos para calcular los valores de enlaces inversos asociados reduce el tamaño de la base de datos de Active Directory.

El otro beneficio clave, que es un poco menos obvio, proviene del hecho de que Active Directory almacena cada asociación individualmente. Dado que cada una de las asociaciones de un enlace directo tiene su propia entrada en la link_table, cada entrada puede mantener su propio Número de Secuencia de Actualización (USN). Este comportamiento se llama Replicación de Valor Vinculado (LVR) y permite que Active Directory replique cada asociación individual independientemente. Por ejemplo, si agregas un usuario a un grupo con 100 miembros existentes, solo se replica la entrada del usuario recién agregado. Esto puede reducir significativamente el volumen de replicación necesario para propagar cambios a los atributos vinculados.

Dato curioso

Antes de ponerle el lazo final a todo esto, hay otro comportamiento que vale la pena mencionar: Los valores de atributos vinculados se eliminan de los objetos borrados a menos que la Papelera de reciclaje de AD esté habilitada. Cuando un objeto que tiene un atributo vinculado es eliminado, aunque Active Directory mantiene el objeto en sí durante un tiempo como una tumba, las entradas asociadas de la tabla de enlaces también se eliminan. Habilitar la Active Directory Recycle Bin cambia este comportamiento y retiene las entradas asociadas de la tabla de enlaces durante el período de la tumba del objeto eliminado.

Conclusión

Debido a que los atributos vinculados de Active Directory se almacenan de manera diferente que otros atributos de Active Directory, se comportan de manera diferente. Esto es especialmente cierto en el caso de los atributos de enlace inverso. Si solo debes recordar una cosa de este artículo, tiene que ser el hecho de que los enlaces inversos son atributos construidos — sus valores no se almacenan directamente y, como resultado, realmente no se comportan en absoluto como otros atributos, especialmente con respecto a las actualizaciones. Active Directory generalmente hace un muy buen trabajo al ocultar sus comportamientos de back-end para ofrecer una experiencia de usuario consistente, pero entender estas diferencias subyacentes sobre los atributos y sus consecuencias puede prevenir problemas.

Cómo Netwrix puede ayudar

Asegure su Active Directory de principio a fin con la solución de seguridad de Active Directory de Netwrix. Le permitirá:

  • Descubra los riesgos de seguridad en Active Directory y priorice sus esfuerzos de mitigación.
  • Refuerce las configuraciones de seguridad en toda su infraestructura de TI.
  • Detecte y contenga rápidamente amenazas avanzadas, como los ataques de DCSync y Golden Ticket.
  • Responda a amenazas conocidas al instante con opciones de respuesta automatizadas.

Minimice las interrupciones del negocio con una rápida recuperación de Active Directory.

Compartir en

Aprende más

Acerca del autor

Asset Not Found

Joe Dibley

Investigador de seguridad

Investigador de seguridad en Netwrix y miembro del Equipo de Investigación de Seguridad de Netwrix. Joe es un experto en Active Directory, Windows y una amplia variedad de plataformas y tecnologías de software empresarial, Joe investiga nuevos riesgos de seguridad, técnicas de ataque complejas y las mitigaciones y detecciones asociadas.