了解 Active Directory 的 UserAccountControl 属性
Dougga 又来了。本文并非密码策略博文,我终于摆脱了这个问题。但是,又忍不住在本文中加入了一些密码相关内容。
用户和计算机包含一项所谓的 UserAccountControl 属性,用于指示这些帐户的一些行为和特征。Active Directory 管理员应该注意到这个属性,那么如何进行解释呢?该属性值是位掩码,并可通过启用或关闭掩码的不同位来启用功能。有关该主题的文章很多(此处推荐一篇),因此我只会通过一些例子进行介绍,最后还会布置一项作业。
当在 ADSI 编辑或 LDP 中查看 UserAccountControl 属性时,该值会以十进制或十六进制的形式表示。因此,重要的是了解这些值的转换方法。由于是位掩码,还需要了解二进制。我会带领大家查看两个简短示例,并会出些题目供大家自行完成。我不会教大家如何转换这些值,必要时可使用计算器。
本文后面还提供了位掩码表,并对这些值进行了解释。我从协议规范 MS-ADTS 中复制了这个表。查看该表,您可能会发现从前遇到过的一些常见设置。您需要使用该表解读示例及完成作业,以便按表查询少数几个字母值。
继续介绍示例并布置作业。
示例 1 :
域控制器的默认值:532480
将 532480 转换为二进制和十六进制数:
二进制:1000 0010 0000 0000 0000
十六进制:0x82000
将二进制值置于顶行,以使用下表对该位进行解释。对于域控制器而言,域控制器的默认值与 TD 和 ST 排成一行。
注意:第二行是 0 – 31 位(32 位)的计数器。
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
||||||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
X |
X |
X |
X |
X |
PS |
NA |
TA |
PE |
DR |
DK |
ND |
TD |
SR |
X |
DP |
X |
X |
ST |
WT |
ID |
X |
N |
X |
ET |
CC |
NR |
L |
HR |
X |
D |
X |
结果如下:
SERVER_TRUST_ACCOUNT
TRUSTED_FOR_DELEGATION
示例 2 :
域控制器设置为“无需密码”在 Active Directory 风险评估 (ADRaaS) 中很常见。您可以重新设置该值,只需创建一个计算机帐户,将该计算机加入域,然后将其提升为域控制器即可。除 ADRaaS 以外,DCdiag 还可以通过以下输出发现问题:
<SNIP FROM DCDIAG>
Starting test: MachineAccount
Checking machine account for DC DC101 on DC DC101.
Warning: Attribute userAccountControl of DC101 is:
0x82020 = ( PASSWD_NOTREQD | SERVER_TRUST_ACCOUNT | TRUSTED_FOR_DELEGATION )
Typical setting for a DC is
0x82000 = ( SERVER_TRUST_ACCOUNT | TRUSTED_FOR_DELEGATION )
DCdiag is good at showing that three bits are set
PASSWD_NOTREQD
SERVER_TRUST_ACCOUNT
TRUSTED_FOR_DELEGATION
<END DCDIAG SNIP>
再次使用该表,其中两位与域控制器的默认设置相同,但同时还额外添加一位来设置 “PASSWD_NOTREQD”。
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
||||||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
X |
X |
X |
X |
X |
PS |
NA |
TA |
PE |
DR |
DK |
ND |
TD |
SR |
X |
DP |
X |
X |
ST |
WT |
ID |
X |
N |
X |
ET |
CC |
NR |
L |
HR |
X |
D |
X |
将 1000 0010 0000 0010 0000 转换为十进制和十六进制数
十进制:532512
十六进制:0x82020
注意:要解决这个问题,请使用 ADSIedit 打开域控制器的属性,然后编辑该域控制器的 useraccountcontol 属性,将其设置为 532480。
作业(请在下方作答):
使用下表确定这些值的含义。
1) 典型用户十进制值为 512(十进制)
2) 现行工作站或服务器值为 0x1000(十六进制)
加分题:
您期望为获得委派信任的 IIS 服务器设置什么值?
表和位值含义:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
X |
X |
X |
X |
X |
PS |
NA |
TA |
PE |
DR |
DK |
ND |
TD |
SR |
X |
DP |
X |
X |
ST |
WT |
ID |
X |
N |
X |
ET |
CC |
NR |
L |
HR |
X |
D |
X |
X |
未使用。必须为零并忽略。 |
D (ADS_UF_ACCOUNT_DISABLE, 0x00000002) |
指定不对帐户启用身份验证。 |
HR (ADS_UF_HOMEDIR_REQUIRED, 0x00000008) |
指定需要 homeDirectory 属性。 |
L (ADS_UF_LOCKOUT, 0x00000010) |
指定帐户暂时锁定。 |
NR (ADS_UF_PASSWD_NOTREQD, 0x00000020) |
指定密码长度策略(如 [MS-SAMR] 3.1.1.8.1 部分所示)不适用于此用户。 |
CC (ADS_UF_PASSWD_CANT_CHANGE, 0x00000040) |
指定用户无法更改他/她的密码。 |
ET (ADS_UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED, 0x00000080) |
指定明文密码将继续生效。 |
N (ADS_UF_NORMAL_ACCOUNT, 0x00000200) |
指定帐户是代表典型用户的默认帐户类型。 |
ID (ADS_UF_INTERDOMAIN_TRUST_ACCOUNT, 0x00000800) |
指定帐户用于实现域间信任。 |
WT (ADS_UF_WORKSTATION_TRUST_ACCOUNT, 0x00001000) |
指定帐户是加入此域的计算机的计算机帐户。 |
ST (ADS_UF_SERVER_TRUST_ACCOUNT, 0x00002000) |
指定帐户是 DC 计算机帐户。 |
DP (ADS_UF_DONT_EXPIRE_PASSWD, 0x00010000) |
指定帐户的密码未过期。 |
SR (ADS_UF_SMARTCARD_REQUIRED, 0x00040000) |
指定需要使用智能卡才能登录帐户。 |
TD (ADS_UF_TRUSTED_FOR_DELEGATION, 0x00080000) |
由 Kerberos 协议使用。此位指示必须设置 "OK as Delegate" 票证标记(如 [RFC4120] 2.8 部分所示)。 |
ND (ADS_UF_NOT_DELEGATED, 0x00100000) |
由 Kerberos 协议使用。此位指示在请求可转发或可代理票证标记时,此帐户的票证授权票 (TGT) 和此帐户获取的服务票证并未标记为可转发或可代理。有关详细信息,请参阅 [RFC4120]。 |
DK (ADS_UF_USE_DES_KEY_ONLY, 0x00200000) |
由 Kerberos 协议使用。此位指示此帐户的 Kerberos 协议中仅使用 des-cbc-md5 或 des-cbc-crc 密钥,参见 [RFC3961] 定义。 |
DR (ADS_UF_DONT_REQUIRE_PREAUTH, 0x00400000) |
由 Kerberos 协议使用。此位指示无需该帐户即可显示有效 preauthentication 数据,如 [RFC4120] 7.5.2 节所述。 |
PE (ADS_UF_PASSWORD_EXPIRED, 0x00800000) |
指定用户的密码年限已经超出最长密码年限策略。 |
TA (ADS_UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION, 0x01000000) |
由 Kerberos 协议使用。一旦设置,此位指示帐户(当作为服务运行时)获得了 S4U2self 服务票证(按 [MS-SFU] 中指定)并设置了可转发标记。如果清除此位,S4U2self 服务票证中将不会设置可转发标记。 |
NA (ADS_UF_NO_AUTH_DATA_REQUIRED, 0x02000000) |
由 Kerberos 协议使用。一旦设置,此位指示当密钥分发中心 (KDC) 为此帐户发放服务服务票证时,不得包含特权属性证书 (PAC)。有关详细信息,请参阅 [RFC4120]。 |
PS (ADS_UF_PARTIAL_SECRETS_ACCOUNT, 0x04000000) |
指定帐户为只读域控制器 (RODC) 的计算机帐户。如果设置此位,同时也必须设置 ADS_UF_WORKSTATION_TRUST_ACCOUNT。此标记仅可通过 DC 功能级别为 DS_BEHAVIOR_WIN2008 或更高级别的 DC 进行解释。 |
作业(答案):
1) 典型用户十进制值为 512(十进制)
该值转换为二进制是 10 0000 0000
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||||||||||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
X |
X |
X |
X |
X |
PS |
NA |
TA |
PE |
DR |
DK |
ND |
TD |
SR |
X |
DP |
X |
X |
ST |
WT |
ID |
X |
N |
X |
ET |
CC |
NR |
L |
HR |
X |
D |
X |
这与 Normal_Account 的 N 一致
2) 典型工作站或服务器值为 0x1000(十六进制)
该值转换为二进制是 1 0000 0000 0000
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||||||||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
X |
X |
X |
X |
X |
PS |
NA |
TA |
PE |
DR |
DK |
ND |
TD |
SR |
X |
DP |
X |
X |
ST |
WT |
ID |
X |
N |
X |
ET |
CC |
NR |
L |
HR |
X |
D |
X |
这与 WT (Workstation_Trust_Account) 一致
加分题:
您希望为获得委派信任的 IIS 服务器设置什么值?
典型服务器值为 4096,如果您添加 TD(信任委派),即十六进制值 0x80000 或十进制值 524,288,将期望设置为 528,384
小结
通过了解上述值,您可以编写一个简短脚本,以便通过特定设置(如已禁用 Kerberos 预验证,或配置仅使用 Kerberos DES 加密的帐户)来查找帐户。这两项设置是 AD 风险评估期间需要审核的两项额外设置,但从上面的表中可以看出还包含其他设置。
Doug“全面掌控用户帐户控制”Gabbard