我注意到 Active Directory 的身份验证行为存在差异,当使用来自 NPS 服务器的 CHAP 时,核心版本无法正确进行身份验证。
我在专用网络上重现了该问题,如下所示:
- Windows Server 2016 核心上的 1 个域控制器 (ad+dns)
- Windows Server 2016 GUI 上的 1 个域控制器(ad+dns)(同一域)
- Windows Server 2016 上的 1 个 nps 服务器充当 radius 服务器(域成员)
- 1 个工作站模拟 RADIUS 身份验证(使用 radlogin)
我在我的网络上使用 CHAP 来执行 802.11x MAB(Mac 地址旁路)。这用于对无法支持更好的身份验证协议(如 EAP-TLS)的设备进行身份验证。
为了使 CHAP 正常工作,Active Directory 必须知道密码。与这些设备匹配的用户帐户具有使用可逆加密存储密码的标志。
NPS 有一个非常基本的配置:
- 一个具有共享密钥的 Radius 客户端,用于接收来自我的交换机的请求(此处为 radlogin)
- 用于检查用户组的网络策略,在 CHAP 中进行身份验证
我已经启用了 NPS 登录审核。您可以在本地组策略中找到设置:本地计算机策略 > 计算机配置 > Windows 设置 > 安全设置 > 高级审核 Poolicy 配置 > 系统审核策略 - 本地 > 登录/注销 > 审核网络策略服务器。
当 NPS 根据核心域控制器对用户进行身份验证时,我在安全日志(在事件查看器上)上看到了事件 ID 6273:
Network Policy Server denied access to a user.
Contact the Network Policy Server administrator for more information.
User:
Security ID: NULL SID
Account Name: 77b6e93eb3f0
Account Domain: LAB-RADIUS
Fully Qualified Account Name: LAB-RADIUS\77b6e93eb3f0
Client Machine:
Security ID: NULL SID
Account Name: -
Fully Qualified Account Name: -
Called Station Identifier: 00-0c-29-f4-f2-62
Calling Station Identifier: 77-b6-e9-3e-b3-f0
NAS:
NAS IPv4 Address: 192.168.12.25
NAS IPv6 Address: -
NAS Identifier: RADIUS_TEST_CLIENT
NAS Port-Type: Ethernet
NAS Port: 10
RADIUS Client:
Client Friendly Name: radius-client
Client IP Address: 192.168.12.25
Authentication Details:
Connection Request Policy Name: wired
Network Policy Name: -
Authentication Provider: Windows
Authentication Server: radius.lab-radius.lab
Authentication Type: MD5-CHAP
EAP Type: -
Account Session Identifier: -
Logging Results: Accounting information was written to the local log file.
Reason Code: 16
Reason: Authentication failed due to a user credentials mismatch. Either the user name provided does not map to an existing user account or the password was incorrect.
当我对 GUI 域控制器执行相同操作时,我获得了成功(evenid 6772)。我暂时切断了 RADIUS 服务器和 DC 之间的通信,以强制 RADIUS 使用另一个 DC 进行身份验证。
两个域控制器的部署完全相同,位于同一个 OU 上,并应用了相同的 GPO。
Wireshark 向我展示了 NPS 和域控制器之间的身份验证是通过 DCERPC 和 NetrLogonSamlogonEx 远程调用完成的。当它失败时,我得到了 STATUS_PROCEDURE_NOT_FOUND (0xc000007a)。当它成功时,我得到了 VALIDATION_SAM_INFO2 结果。
在 Windows Server Core 上安装 Active Directory 时,使用图形化 Windows 变体时缺少什么?
注意:我非常清楚 CHAP 很糟糕。问题是为什么会出现这个问题以及如何在核心域控制器上修复它,而不是什么会更好。CHAP 是我的 NAS 唯一支持的协议(甚至不是 PAP)
答案1
微软的一位代表给了我答案。
Microsoft 不支持使用 NPS 和 Core DC 进行 CHAP 身份验证。这是设计使然,尽管其文档中没有任何地方指出这一点。