如何在Active Directory中存储敏感数据?


11

我实质上是在Active Directory的任何OctetString属性中存储一个私钥(Hash)。

我的问题是,默认情况下哪个属性是安全的,并且在其中保留私有数据有意义?该值应被视为类似于密码,即使当前的AD密码,即使是管理员也无法访问(如果可能)。

这是Windows 2008R2 + Exchange 2010域上默认启用的属性列表的开头。

替代文字

更新:

有人知道八位字节字符串属性默认情况下不会向域中的所有用户公开“读取”权限吗?我不想公开存储我的哈希,不希望有人基于哈希构建彩虹表。

Answers:


11

大多数人在AD中存储数据时面临的问题是

  • 扩展架构(通常具有公司政治意义)

  • 使用现有属性并编辑权限(这会导致AD / ACL膨胀,从而增加DIT和后续复制的大小)

还有另一种选择...在我看来,最好的选择是使用AD的鲜为人知的功能来获取现有属性并将其标记为“机密”。

以下是有关流程的详细信息


Active Directory中的默认权限使经过身份验证的用户具有对所有属性的全部读取访问权限。这使得很难引入一个新的属性,该属性应防止所有人读取。

为了缓解这种情况,Windows 2003 SP1引入了一种将属性标记为机密的方法。通过修改架构中属性上的searchFlags值来实现此功能。SearchFlags包含多个位,代表属性的各种属性。例如,位1表示该属性已建立索引。新的位128(第7位)将属性指定为机密。

注意:您不能在基本模式属性(从“ top”派生的属性,例如通用名)上设置此标志。您可以通过使用LDP查看对象并检查对象的systemFlags属性来确定对象是否为基础架构对象。如果设置了第十位,则它是基础架构对象。

目录服务执行读取访问检查时,将检查机密属性。如果存在,则除了READ_PROPERTY访问之外,目录服务还需要对属性或其属性集进行CONTROL_ACCESS访问。

默认情况下,只有管理员具有对所有对象的CONTROL_ACCESS访问权限。因此,只有管理员才能读取机密属性。用户可以自由地将此权限委派给他们想要的任何特定组。可以使用DSACL工具,脚本或LDP的R2 ADAM版本来完成。在撰写本文时,无法使用ACL UI编辑器分配这些权限。

将属性标记为机密并添加需要查看属性的用户的过程分为3个步骤

  1. 确定标记“机密”的属性,或添加标记“机密”的属性。

  2. 将其标记为机密

  3. 向正确的用户授予Control_Access权限,以便他们可以查看属性。

有关更多详细信息和分步说明,请参阅以下文章:

922836如何在Windows Server 2003 Service Pack 1中将属性标记为机密

http://support.microsoft.com/default.aspx?scid=kb;EN-US;922836


1
Downvoter:为什么会得到-1?
goodguys_activate 2012年

我听说机密信息可能会严重影响性能。您是否知道有任何支持或反驳的文档?
Nic

@Nic发表这个问题……首先我听说了
goodguys_activate 2013年

2

为此,您始终可以使用新字段扩展Active Directory。

这是一个文档,其中包括有关添加新属性和限制对该属性的权限的说明。


谢谢。我的目标是在可能的情况下使用现有属性,因为我的客户在执行此操作时不敢妄想...他们在该方法中有太多的FUD ...我希望尽可能地使用原生的属性。
goodguys_activate

我可以理解他们的不情愿,但我不相信有任何好的候选属性没有按要求使用和保护。
Zoredache

1

该值应被视为类似于密码,即使当前的AD密码,即使是管理员也无法访问(如果可能)。

这是不正确的,甚至没有错。密码未保存。哈希已存储,域管理员可以访问该哈希。实际上,如果您愿意,甚至可以将AD配置为以可逆加密方式存储密码。

在AD中,您无法阻止域管理员。如果您删除权限甚至拒绝,则域管理员可以获取所有权并重新添加自己。这与Novell的NDS相反,后者的OU管理员不可撤消地锁定更高级别的管理员。

最好的办法是使用现有属性或新属性,并限制访问。您可以将管理员拒之门外,还可以对属性启用审核,以便记录所有访问或权限更改。


我存储的是应用程序专用密码的单向哈希。
goodguys_activate

这属于注释,因为它不会以任何方式回答问题。
MDMarra 2010年

马克-我的最后两句话是我对“在Active Directory中的哪里存储敏感数据?”这一问题的回答。
mfinni 2010年

@Maker-很有道理,这与@Zoredache上面发布的链接非常相​​似。那是本机答案:使用现有属性或新属性,并限制访问。如果您的客户专注于安全性,我的其他建议是还应启用该属性的审核。
mfinni 2010年

@Maker-如果它确实是单向哈希,那么无论如何它已经相当安全了,对吧?
mfinni 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.