Share via


了解 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