“复制目录更改”在 Active Directory 中实际上授予什么权限?

“复制目录更改”在 Active Directory 中实际上授予什么权限?

我们需要授予服务 ID 将目录更改复制到 Active Directory 的权限。人们担心我们可能会意外让服务 ID 在 Active Directory 中写入数据,或者有人滥用服务 ID 并更改 Active Directory 数据。

有人知道“复制目录更改”的权利是什么吗?

答案1

http://support.microsoft.com/kb/303972

注意:无论使用哪种方法,为林中的每个域设置“复制目录更改”权限都可以发现 Active Directory 林中域中的对象。但是,启用连接目录的发现并不意味着可以执行其他操作。

要使用非管理帐户在 Active Directory 中创建、修改和删除对象,您可能需要根据需要添加其他权限。例如,要让 Microsoft Metadirectory Services (MMS) 在组织单位 (OU) 或容器中创建新的用户对象,必须明确授予正在使用的帐户“创建所有子对象”权限,因为“复制目录更改”权限不足以允许创建对象。

类似地,删除对象需要删除所有子对象的权限。

其他操作(例如属性流)可能会受到限制,这取决于分配给相关对象的特定安全设置,以及继承是否是一个因素。

答案2

现有的答案不能满足我的好奇心,我也不想让人们从我的目录中得到超出他们需要的信息。所以我做了更多的挖掘。

主要信息在这里:

http://support.microsoft.com/kb/891995

分解:

如果您想将程序的数据库与 AD(如 sharepoint/FIM)同步,您有两种方法可以询问 AD 自上次查询以来发生了什么变化。

您可以使用“DirSync”控件(LDAP 协议扩展)或者您可以去贫民窟并只使用 uSNChanged 轮询 - 但那里有限制。

“DirSync 控制搜索将返回对 Ac​​tive Directory 对象所做的所有更改,而不管该对象上设置的权限如何。”它甚至会返回逻辑删除的对象。

因此,要使用 DirSync LDAP 控件,您需要“复制目录更改”,或者成为域管理员。

据我所知,唯一可怕的是,他们几乎可以目录分区中的任何内容,无论标准权限如何。它们不能变任何事物。

但是 - 您的目录中可能有一些敏感的属性。

有关 DirSync 控制扩展的更多信息,请参见此处:

https://msdn.microsoft.com/en-us/library/ms677626(v=vs.85).aspx

真实测试:使用 DirSync 控件连接到 AD

这是您可以自己找到的真正方法。这个人就是那个男人。如果您想亲自看看 - 改编此 powershell 示例,以您授予权限的用户身份运行它,并查询用户对象(或其他内容)。

http://dloder.blogspot.com/2012/01/powershell-dirsync-sample.html

我检查了我们的 Sharepoint 帐户,看看我能得到什么。在我授予权限之前,我在尝试使用 DirSync 控件时遇到了访问被拒绝异常。

一旦我这样做了,我就可以恢复用户帐户中的几乎所有内容:

用户查询中返回的值得注意的安全相关属性,我很确定如果没有提升的权限您通常无法看到这些属性:

  • 用户帐户控制
  • 用户参数
  • msexchuseraccountcontrol
  • 最后密码设置
  • unicodePwd(空白。因此不返回散列域密码)
  • 锁定时间
  • 账户到期
  • unix用户密码(哎呀。如果你正在使用这个 - 它可见,但已散列。如果您有疑虑,请阅读此处或使用 unix 密码同步服务。)

我还检查了一个附加有 bitlocker 恢复密码的计算机帐户,但该属性在返回的结果中不可用。

如果您的环境中曾有 Unix 服务并同步过密码,那么您可能在此处有剩余数据。我们的一位长期用户在其帐户中设置了此密码。破解此密码后,只需尝试更改密码即可获得当前密码,这是可行的。

这已从我们的环境中删除,因此新用户在这里没有任何数据。

答案3

事实上,“复制目录更改”权限并不授予 DCPROMO 权限,也不可能使用此权限来拉回用户密码的散列值。

为了获得用户密码哈希的访问权限,必须授予“复制目录更改全部更多信息请参见https://social.technet.microsoft.com/Forums/windowsserver/en-US/cc72be66-30c4-420e-8de3-9085858037bc/difference-between-replicating-directory-changes-replicating-d

答案4

如果它对某人有帮助,我重写了引用的脚本来查询当前机器所在域之外的单独域:

Add-Type -AssemblyName System.DirectoryServices.Protocols

#defaults
$RootDSE = [ADSI]"LDAP://RootDSE"
$dcHostName = $RootDSE.dnsHostName
$distinguishedName = $RootDSE.defaultNamingContext

#or use the lines below for another DC on another domain
$dcHostName = "dc1.contoso.local"
$distinguishedName = (Get-ADDomain "contoso.local").DistinguishedName

$LDAPConnection = New-Object System.DirectoryServices.Protocols.LDAPConnection($dcHostName) 
$Request = New-Object System.DirectoryServices.Protocols.SearchRequest($distinguishedName, "(objectclass=*)", "Subtree", $null) 
$DirSyncRC = New-Object System.DirectoryServices.Protocols.DirSyncRequestControl($Cookie, [System.DirectoryServices.Protocols.DirectorySynchronizationOptions]::IncrementalValues, [System.Int32]::MaxValue) 
$Request.Controls.Add($DirSyncRC) | Out-Null 

$MoreData = $true

while ($MoreData) {

    $Response = $LDAPConnection.SendRequest($Request)

    $Response.Entries | ForEach-Object { 
        write-host $_.distinguishedName 
    }

    ForEach ($Control in $Response.Controls) { 
        If ($Control.GetType().Name -eq "DirSyncResponseControl") { 
            $Cookie = $Control.Cookie 
            $MoreData = $Control.MoreData 
        } 
    } 
    $DirSyncRC.Cookie = $Cookie 
}

相关内容