网络专家NAP 强制故障排除

Joseph Davies

新的网络访问保护 (NAP) 平台内置于 Windows Vista、Microsoft Windows 2008 和 Windows Server XP SP3 操作系统,它可以强制实施计算机运行状况要求,帮助保护您的专用 Intranet。NAP 的关键组件是 NAP 客户端、NAP 强制点和 NAP 运行状况策略服务器。

NAP 客户端是一台能够提供运行状态信息的计算机,这些信息将用于评估系统的运行状况。NAP 强制点是一台计算机或网络访问设备,它使用 NAP,或者可以与 NAP 一同使用来要求对 NAP 客户端的运行状况进行评估,并提供受限网络访问或通信。NAP 运行状况策略服务器是运行 Windows Server® 2008 和网络策略服务器 (NPS) 服务的计算机,它可以存储运行状况要求策略并评估 NAP 客户端的运行状况。NAP 运行状况策略服务器和 NAP 强制点与远程身份验证拨号用户服务服务器和代理消息交换系统运行状况信息和受限访问指令。

在本专栏中,我将介绍运行状况要求策略的组件,NPS 服务如何处理 NAP 评估传入请求,以及如何排除 NAP 强制的最常见故障。

运行状况要求策略

NAP 运行状况评估的工作原理

NAP 运行状况策略服务器上的 NPS 服务使用以下流程评估运行状况:

  1. NPS 服务将传入请求消息与为其配置的连接请求策略组进行比较。对于 NAP,请求消息应该与指定 NPS 服务本地执行身份验证和授权的连接请求策略匹配。
  2. NPS 服务评估请求信息中的运行状况信息,该请求信息由包含运行状况信息的系统运行状况声明 (SSoH) 组成。NPS 服务将运行状况信息传递至其上安装的 SHV,而 SHV 将把运行状况评估信息返回给 NPS 服务。
  3. NPS 服务将请求消息和来自 SHV 的运行状况评估信息与相应的网络策略组进行比较。运行状况评估信息与基于 NAP 的网络策略的运行状况策略条件进行比较。运行状况策略条件指定运行状况兼容或不兼容的条件。NPS 服务将第一个匹配的网络策略应用到请求消息。
  4. 根据基于 NAP 的匹配网络策略及其相关的 NAP 设置,NPS 服务将创建系统运行状况声明响应 (SSoHR)。此响应包括来自 SHV 的运行状况评估信息,并指明 NAP 客户端的访问是否受限制,以及 NAP 客户端是否应该自动尝试修正其运行状况。
  5. NPS 服务将把 RADIUS 响应消息和 SSoHR 发送给 NAP 强制点。如果客户端的访问受限制,则响应消息还可以包含指定 NAP 客户端访问受限情况的指令。
  6. NAP 强制点将 SSoHR 发送到 NAP 客户端。

运行状况要求策略是连接请求策略、一个或多个网络策略、一个或多个运行状况策略和用于 NAP 强制方法的 NAP 设置的组合。要创建一个运行状况要求策略,需要使用“网络策略服务器”管理单元中的“配置 NAP 向导”。(有关评估流程的更多信息,请参阅“NAP 运行状况评估的工作原理”侧栏)。

连接请求策略 这些策略是有序的规则集,它们使 NPS 服务能够确定某个传入连接请求是应该本地处理,还是转发到另一个 RADIUS 服务器。NAP 运行状况策略服务器本地处理连接请求。

从基于 Windows® 的 NAP 强制点传入的 RADIUS 请求可以包含源标记,该标记用于指定 NAP 强制点的类型,如动态主机配置协议 (DHCP) 服务器或虚拟专用网络 (VPN) 服务器。

如果传入请求消息包含源标记,则 NAP 运行状况策略服务器上的 NPS 服务将尝试仅匹配那些带有匹配来源的连接请求策略(忽略所有其他连接请求策略)。如果传入请求消息不包含源标记,则 NPS 服务将尝试匹配那些带有非指定源的连接请求策略(忽略所有其他指定了来源的连接请求策略)。

例如,来自启用 NAP 的 DHCP 服务器的传入请求指定了 DHCP 的源标记。NPS 服务尝试将来自 DHCP 服务器的请求与带有 DHCP 来源的连接请求策略进行匹配。来自启用 802.1X 的交换机和无线接入点的传入请求不指定源标记。NPS 服务尝试将这些请求与不带指定来源的连接请求策略进行匹配。

用于本地或远程处理评估的连接请求策略是应用到传入请求的策略子集有序列表中第一个匹配的连接请求策略。如果请求与所有连接请求策略都不匹配,则该请求将被拒绝。

网络策略 这些策略是有序的规则集,它们指定在何种情况下允许或拒绝与传入请求消息对应的连接尝试。每条规则都包含授权访问或拒绝访问的访问许可、一组条件、一组限制及网络策略设置。如果授权连接,则网络策略限制和设置可以指定一组连接限制。对于 NAP,网络策略可以指定运行状况策略条件以检查运行状况要求和强制行为设置。

正如连接请求策略一样,网络策略使用源标记来确定尝试使用哪条网络策略匹配传入请求。如果传入请求消息包含源标记,则 NPS 服务会尝试将请求仅与那些带有匹配源的网络策略进行匹配(忽略所有其他网络策略)。如果传入请求消息不包含源标记,则 NPS 服务将尝试匹配那些带有非指定源的网络策略(忽略所有其他指定了来源的网络策略)。

用于授权或运行状况评估的网络策略是应用到连接尝试的策略子集有序列表中第一个匹配的网络策略。如果尝试与所有网络策略都不匹配,则该请求将被拒绝。

运行状况策略 这些策略允许您根据已安装的系统运行状况验证器 (SHV) 指定运行状况要求,它们将用于运行状况评估,并确定 NAP 客户端是否必须通过任何或所有选定的 SHV。例如,兼容的 NAP 客户端的运行状况策略可以指定该客户端必须通过所有运行状况检查。而不兼容的 NAP 客户端的运行状况策略可以指定客户端必须有一项或所有运行状况检查未通过。

网络访问保护设置 设置包括安装在 NAP 运行状况策略服务器上用于运行状况要求和错误条件的 SHV 配置,以及修正服务器组,该服务器组指定可供不兼容 NAP 客户端访问的一组服务器,这些客户端对 DHCP 和 VPN 强制方法的网络访问有限制。

确定 NAP 强制故障的范围

逻辑方法对排除任何故障都会很有帮助。故障排除时要询问的一些常见问题包括:什么起作用?什么不起作用?起作用和不起作用的事件如何相关?不起作用的事件是否曾经起过作用?如果是这样,则自上次起作用以来做了什么更改?

显然,当处理有关 NAP 强制故障时,这些问题是当务之急。在部署 NAP 强制方法之前,连接是否正常?例如,在部署 IPsec 强制之前,Internet 协议安全性 (IPsec) 服务器或域隔离是否正常?在部署 802.1X 强制之前,802.1X 身份验证是否正常?部署 VPN 强制之前,VPN 远程访问是否正常?在部署 DHCP 强制之前,DHCP 是否正常?

另外,特定的 NAP 强制方法以前是否正常?如果是,那么 NAP 客户端、NAP 强制点或 NAP 运行状况策略服务器上发生了什么变化?从上述问题的答案中,您能够确定开始排除故障的项目,从而使您能够隔离引发故障的组件、层或配置问题。

为了对 NAP 强制问题进行一般故障排除,您需要确定问题的范围。第一步,指出是否是 NAP 强制出现了问题。对于 IPsec 强制,还需要确定 NAP 客户端是否已为 IPsec 对等协商和数据保护设置了正确的 IPsec 策略组。对于 DHCP 强制,需要确定 NAP 客户端是否能够与 DHCP 服务器交换 DHCP 消息。对于 802.1X 和 VPN 强制,需要确定 NAP 客户端是否能够成功进行身份验证。例如,如果您的 VPN 客户端无法对 VPN 连接进行身份验证,那将需要检验 VPN 客户端的身份验证设置和凭据。

如果您已经确定问题是 NAP 强制,那下一步是确定其范围。是否会影响应用所有 NAP 强制方法的全部 NAP 客户端?是否会影响应用特定强制方法的所有 NAP 客户端?是否会影响应用特定强制方法的所有 NAP 客户端和 NAP 强制点?是否会影响属于特定组成员的所有 NAP 客户端?该问题是否仅影响特定的 NAP 客户端?

例如,如果应用所有 NAP 强制方法的任何 NAP 客户端都遇到了问题,那很可能是因为 NAP 运行状况策略服务器上的配置出了问题。如果在应用特定 NAP 强制方法时,所有 NAP 客户端都遇到问题,则 NAP 客户端的组策略设置可能存在配置问题,或者是 NAP 运行状况策略服务器上特定 NAP 强制方法的运行状况要求策略出现了问题。如果只有特定的 NAP 客户端遇到 NAP 强制问题,则这些 NAP 客户端上可能存在 NAP 强制配置问题。

常见的 NAP 强制故障

NAP 资源

无限制访问 如 NAP 客户端拥有无限制访问权限(即访问不受限制),可能是 NAP 运行状况策略服务器已将该 NAP 客户端评估为兼容的客户端。而这正是您所需要的。但是,也有可能因为 NAP 客户端没有接收到 SSoHR 而获得无限制的访问权限,通常在没有对 NAP 客户端进行运行状况评估时会出现这种情况。如果没有进行 NAP 运行状况评估,就不会有 SSoHR 发回到 NAP 客户端,该 NAP 客户端将会获得无限制访问权限。

例如,针对 DHCP 强制配置的 NAP 客户端会将其 SSoHR 发送给它的 DHCP 服务器。如果运行 Windows Server 2008 的 DHCP 服务器没有针对 NAP 进行配置,它就不会将运行状况评估请求消息发送给 NAP 运行状况策略服务器。此外,为那些无法到达 NAP 运行状况策略服务器的 NAP 配置的 Windows Server 2008 DHCP 服务器默认情况下将为无限制访问分配地址配置。

当 NAP 运行状况策略服务器由于传入请求匹配不需要 NAP 运行状况评估的网络策略而不执行运行状况评估时,也有可能导致无限制的访问。有关确定匹配 NAP 客户端请求的网络策略方面的信息,请参阅本专栏“分步排除 NAP 强制故障”一节。

受限访问 具有受限访问的 NAP 客户端已由 NAP 运行状况策略服务器评估为不兼容。如果 NAP 客户端本来应该获得无限制的访问却只获得了受限访问,那将需要根据与 NAP 客户端请求匹配网络策略对应的运行状况策略设置来检验 NAP 客户端的运行状况。

无自动修正 当正确配置时,NAP 客户端可以自动修正其运行状态。如果 NAP 客户端无法自动修正,则需要检验匹配 NAP 客户端请求的网络策略的 NAP 强制设置是否选中“Enable Auto-Remediation of Client Computers”(启用客户端计算机自动修正)复选框。

另一个可能会影响自动修正的问题是受限 NAP 客户端无法连接修正服务器下载更新。对于 IPsec 强制,需要检验修正服务器是否已应用了正确的 IPsec 策略。对于 802.1X 强制,需要检查匹配网络策略中用于指定访问控制列表 (ACL) 或虚拟局域网标识符 (VLAN ID) 的设置,并检验您的交换机或无线接入点 (AP) 的 ACL 或 VLAN 配置。对于 VPN 或 DHCP 强制,需要检查匹配网络策略中用于修正服务器组的设置,并确保所有修正服务器都配置为该组的成员。对于 DHCP 强制,需要确保 NAP 客户端的 DHCP 作用域选项配置正确,例如用于 NAP 用户类的 “默认网关”选项值。

无 NAP 支持评估 对于任何 NAP 强制方法,需要检验是否已在 NAP 客户端上启用了相应的强制客户端。对于 802.1X 和 VPN 强制,需要检验 NAP 客户端是否已对连接请求策略和 NAP 客户端启用的 PEAP 身份验证方法系统运行了状况检查(即选中“Protected EAP Properties”(受保护的 EAP 属性)对话框中的“Enable Quarantine Checks”(启用隔离检查)复选框)。

NAP 客户端无限制,但无法连接 Intranet 对于 IPsec 强制,需要检验兼容 NAP 客户端的 IPsec 策略和 intranet 计算机的 IPsec 策略是否都包含一组常见的协商和保护设置。对于 802.1X 强制,需要确认用于兼容 NAP 客户端的网络策略是为 intranet 而不是受限网络指定了 ACL 或 VLAN ID。检验您交换机或无线 AP 上用于 intranet 的 ACL 或 VLAN ID 配置。对于 VPN 强制,需要确保没有为兼容 NAP 客户端的网络策略设置限制 VPN 客户端流量的 IP 数据包筛选器。

NAP 强制故障排除分步指南

要为特定 NAP 客户端排除 NAP 强制故障,可以先配置 NAP 客户端,检查 NAP 客户端事件日志,然后转到 NAP 运行状况策略服务器以确定 NPS 服务如何处理 NAP 客户端的请求。

步骤 1:检查 NAP 客户端配置 NAP 客户端配置包含 Windows 服务、强制客户端和 NAP 强制专用设置。要显示 NAP 客户端状态和配置信息,可以使用 netsh nap client show state 和 netsh nap client show configuration 命令。

请注意,如果 NAP 客户端设置由组策略提供,则所有的 NAP 客户端设置都将由组策略指定,且所有本地 NAP 客户端设置都将被忽略。在这种情况下,可以使用 netsh nap client show grouppolicy 命令显示基于组策略的 NAP 客户端配置,并通过组策略进行更改。

对于运行 Windows Vista® 的计算机上的 IPsec 强制,可以使用 net start 命令检验 Network Access Protection Agent、IKE 和 AuthIP IPsec Keying Module,以及 IPsec Policy Agent 服务是否已启动。使用 netsh nap client show configuration 命令检验是否已启用 IPsec 依赖方强制客户端。如果需要,可以使用“NAP 客户端配置”管理单元启用 IPsec 依赖方强制客户端或使用 netsh nap client set enforcement 79619 enabled 命令。应该使用提升的权限从命令提示符下执行 Netsh nap client set enforcement 命令。

对于运行 Windows Vista 的计算机上的 802.1X 强制,可以使用 net start 命令检验 Extensible Authentication Protocol、Network Access Protection Agent、Wired AutoConfig(用于有线连接的 802.1X 强制)和 WLAN AutoConfig(用于无线连接的 802.1X 强制)服务是否已启动。

再次使用 netsh nap client show configuration 命令检验是否已启用 EAP 隔离强制客户端。如果需要,可以使用“NAP 客户端配置”管理单元启用 EAP 隔离强制客户端,或使用 netsh nap client set enforcement 79623 enabled 命令。检验是否已为有线或无线连接“受保护的 EAP 身份验证”方法的属性选择了“Enable Quarantine Checks”(启用隔离检查)复选框。

对于运行 Windows Vista 的计算机上的 VPN 强制,可以使用 net start 命令检验 Extensible Authentication Protocol、Network Access Protection Agent 和 Remote Access Connection Manager 服务是否已启动。

使用 netsh nap client show configuration 命令的输出检验是否已启用远程访问隔离强制客户端。如果需要,可以使用“NAP 客户端配置”管理单元启用远程访问隔离强制客户端或使用 netsh nap client set enforcement 79618 enabled 命令。检验是否已为 VPN 连接“受保护的 EAP 身份验证”方法的属性选择了“Enable Quarantine Checks”(启用隔离检查)复选框。

对于运行 Windows Vista 的计算机上的 DHCP 强制,可以使用 net start 命令检验 Network Access Protection Agent 和 DHCP Client 服务是否已启动。如果需要,可以使用服务管理单元或 Sc.exe 工具启动这些服务,并将其配置为自动启动。

使用 netsh nap client show configuration 命令的显示结果检验是否已启用 DHCP 隔离强制客户端。如果需要,可以使用“NAP 客户端配置”管理单元启用 DHCP 隔离强制客户端或使用 netsh nap client set enforcement 79617 enabled 命令。

步骤 2:检查 NAP 客户端事件日志 使用事件查看器管理单元检查由 Network Access Protection Agent 服务创建的事件日志。在运行 Windows Vista 的计算机上,使用事件查看器管理单元查看 Applications and Services Logs\Microsoft\Windows\Network Access Protection\Operational 中的事件。在运行带有 SP3 的 Windows XP 的计算机上,使用事件查看器管理单元查看系统事件日志中的 NAP 事件。

从 NAP 客户端事件中,能够获得 NAP 客户端运行状况评估的关联 ID。可以使用此关联 ID 或 NAP 客户端的计算机名称在 NAP 运行状况策略服务器上查找对应的运行状况评估事件。图 1 显示带有关联 ID 的不兼容 NAP 客户端事件的示例。

Figure 1 Windows Vista NAP 客户端事件的示例

Figure 1** Windows Vista NAP 客户端事件的示例 **(单击该图像获得较大视图)

步骤 3:检查 NPS 事件日志 在 NAP 运行状况策略服务器上,使用事件查看器管理单元查看由 NPS 服务创建的事件,它位于 Windows Logs\Security log 目录中。要查看 NPS 事件,可以在事件查看器中打开“自定义视图”,“服务器角色”,然后单击“网络策略和访问服务”。要查看与事件相关的联机帮助主题,请单击事件“常规”选项卡中的“事件日志联机帮助”链接。

典型的 NAP 运行状况评估事件的事件 ID 为 6278(无限制访问)或 6276(受限访问)。根据 NAP 客户端的计算机名称(事件描述中“客户端机器”的“帐户名称”字段)或关联 ID(事件描述中“隔离信息”的“会话标识符”字段)找出相应的 NAP 运行状况策略服务器事件。

NPS 事件日志事件 6278 和 6276 包含关于 NAP 运行状况评估的信息,例如匹配的连接请求策略的名称(事件描述中“身份验证详细信息”的“代理策略名称”字段)和匹配的网络策略的名称(事件描述中“身份验证详细信息”的“网络策略名称”字段)。图 2 是事件 ID 6276 的“详细信息”选项卡示例,其中包含“Proxy Policy Name”(代理策略名称)、“Network Policy Name”(网络策略名称)和关联 ID(名为 QuarantineSessionID)。这是与图 1 中 Windows Vista NAP 客户端事件相对应的 NAP 运行状况策略事件。

Figure 2 NAP 运行状况策略服务器事件的示例

Figure 2** NAP 运行状况策略服务器事件的示例 **(单击该图像获得较大视图)

如果没有与 NAP 客户端事件对应的事件,则需要检验 Network Policy Server 服务是否已启动,NAP 强制点是否已针对 NAP 正确进行配置并使用 NAP 运行状况策略服务器作为 RADIUS 服务器。请检验 RADIUS 消息是否可以在 NAP 强制点和 NAP 运行状况策略服务器之间传递。

通过执行这三个步骤,您应该能够顺利找出为什么您的 NAP 强制无法按照预期的方式工作。有关 NAP 的更多详细信息,请参阅“NAP 资源”侧栏。

Joseph Davies 是 Microsoft 的一位技术撰稿人,从 1992 年起一直从事 Windows 网络方面的培训和编写工作。他曾为 Microsoft Press 编写了八本著作,是每月在线 TechNet 网络专家专栏的作者。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.