使用 Microsoft Entra ID 控制对 VPN 连接的条件访问

本操作指南介绍如何使用 Microsoft Entra ID 条件访问向 VPN 用户授予对您的资源的访问权限。 使用针对虚拟专用网 (VPN) 连接的 Microsoft Entra 条件访问,可帮助保护 VPN 连接。 条件访问是基于策略的评估引擎,允许你为任何 Microsoft Entra 连接的应用程序创建访问规则。

先决条件

在开始为 VPN 配置条件访问之前,必须满足以下先决条件:

配置 EAP-TLS 以忽略证书吊销列表 (CRL) 检查

除非 NPS 服务器完成证书链(包括根证书)的吊销检查,否则 EAP-TLS 客户端无法连接。 由 Microsoft Entra ID 颁发给用户的云证书没有 CRL,因为它们是短期证书,生存期仅为一小时。 NPS 上的 EAP 需要配置为忽略 CRL 缺失。 由于身份验证方法是 EAP-TLS,因此只需在 EAP\13 下添加此注册表值。 如果使用其他 EAP 身份验证方法,则也应在相应的注册表项下添加注册表值。

在本部分,你将添加 IgnoreNoRevocationCheckNoRevocationCheck。 默认情况下,IgnoreNoRevocationCheckNoRevocationCheck 设置为 0(禁用)。

若要详细了解 NPS CRL 注册表设置,请参阅配置网络策略服务器证书吊销列表检查注册表设置

重要

如果 Windows 路由和远程访问服务器 (RRAS) 使用 NPS 将 RADIUS 调用中转到另一个 NPS,则必须在这两台服务器上设置 IgnoreNoRevocationCheck=1

不执行此项注册表更改会导致使用云证书和 PEAP 的 IKEv2 连接失败,但使用本地 CA 颁发的客户端身份验证证书的 IKEv2 连接仍可正常工作。

  1. 在 NPS 服务器上打开 regedit.exe。

  2. 导航到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\PPP\EAP\13。

  3. 选择“编辑”>“新建”,然后选择“DWORD (32 位)值”并输入 IgnoreNoRevocationCheck。

  4. 双击“IgnoreNoRevocationCheck”并将“值”数据设置为 1。

  5. 选择“编辑”>“新建”,然后选择“DWORD (32 位)值”并输入 NoRevocationCheck。

  6. 双击“NoRevocationCheck”并将“值”数据设置为 1。

  7. 选择“确定”,然后重新启动服务器。 仅仅是重启 RRAS 和 NPS 服务并不足够。

注册表路径 EAP 扩展
HKLM\SYSTEM\CurrentControlSet\Services\RasMan\PPP\EAP\13 EAP-TLS
HKLM\SYSTEM\CurrentControlSet\Services\RasMan\PPP\EAP\25 PEAP

创建使用 Microsoft Entra 进行 VPN 身份验证的根证书

在本部分,你将使用 Microsoft Entra ID 配置用于 VPN 身份验证的条件访问根证书,这会在租户中自动创建名为“VPN 服务器”的云应用。 若要配置针对 VPN 连接的条件性访问,需要:

  1. 在 Azure 门户中创建一个 VPN 证书。
  2. 下载该 VPN 证书。
  3. 将证书部署到 VPN 和 NPS 服务器。

重要

在 Azure 门户中创建 VPN 证书后,Microsoft Entra ID 将立即开始使用它向 VPN 客户端颁发生存期较短的证书。 必须立即将 VPN 证书部署到 VPN 服务器,以避免 VPN 客户端的凭据验证出现任何问题。

当用户尝试 VPN 连接时,VPN 客户端会调用 Windows 10 客户端上的 Web 帐户管理器 (WAM)。 WAM 调用 VPN 服务器云应用。 满足条件访问策略中的条件和控制后,Microsoft Entra ID 会以短期(1 小时)证书的形式向 WAM 颁发令牌。 WAM 将该证书置于用户的证书存储中,并将控制权转交给 VPN 客户端。 

然后,VPN 客户端将 Microsoft Entra ID 颁发的证书发送到 VPN 进行凭据验证。 

注意

Microsoft Entra ID 使用 VPN 连接边栏选项卡中最近创建的证书作为颁发者。 Microsoft Entra 条件访问 VPN 连接叶证书现在支持强证书映射,这是 KB5014754 引入的基于证书的身份验证要求。 VPN 连接叶证书现在包括 SID 扩展 (1.3.6.1.4.1.311.25.2),其中包含从 onPremisesSecurityIdentifier 属性获取的用户 SID 的编码版本。

若要创建根证书,请执行以下操作

  1. 以全局管理员身份登录到 Azure 门户
  2. 在左侧菜单中,按下 Microsoft Entra ID
  3. Microsoft Entra ID 页面上的管理部分中,按下安全
  4. 在“安全性”页面的“保护”部分中,单击“条件访问”。
  5. 在“条件访问 | 策略”页面的“管理”部分中,单击“VPN 连接”。
  6. 在“VPN 连接”页,单击“新建证书”
  7. 在“新建”页面上,执行以下步骤:a. 对于“选择持续时间”,请选择 1 年、2 年或 3 年。 b. 选择“创建”。

配置条件访问策略

在本部分,你将为 VPN 连接配置条件访问策略。 在“VPN 连接”边栏选项卡中创建第一个根证书时,会自动在租户中创建一个“VPN 服务器”云应用程序。

创建一个分配到 VPN 用户组的条件访问策略,并将“云应用”的范围限定为“VPN 服务器”:

  • 用户:VPN 用户
  • 云应用:VPN 服务器
  • 授予(访问控制):“需要多重身份验证”。 可根据需要使用其他控制。

过程:此步骤说明如何创建最基本的条件访问策略。  可根据需要使用其他条件和控制。

  1. 在“条件访问”页面顶部的工具栏中,选择“添加”。

    在“条件性访问”页面上选择“添加”

  2. 在“新建”页上的“名称”框中,输入策略的名称。 例如,输入“VPN 策略”。

    在“条件性访问”页面上添加策略名称

  3. 在“分配”部分,选择“用户和组”。

    选择用户和组

  4. 在“用户和组”页,执行以下步骤

    选择测试用户

    a. 选择“选择用户和组”。

    b. 选择“选择”。

    c. 在“选择”页上选择“VPN 用户”组,然后选择“选择”。

    d. 在“用户和组”页上选择“完成”。

  5. 在“新建”页,执行以下步骤

    选择云应用

    a. 在“分配”部分选择“云应用”。

    b. 在“云应用”页上选择“选择应用”。

    d. 选择“VPN 服务器”

  6. 在“新建”页上的“控制”部分,选择“授予”打开“授予”页。

    选择“授权”

  7. 在“授权”页,执行以下步骤

    选择“需要多重身份验证”

    a. 选择“需要多重身份验证” 。

    b. 选择“选择”。

  8. 在“新建”页上的“启用策略”下,选择“开”。

    启用策略

  9. 在“新建”页上选择“创建”。

将条件访问根证书部署到本地 AD

在本部分,你会将用于 VPN 身份验证的受信任根证书部署到本地 AD。

  1. 在“VPN 连接”页上选择“下载证书”。

    注意

    对于某些需要将 base64 证书用于部署的配置,可以使用“下载 base64 证书”选项。

  2. 使用企业管理员权限登录到已加入域的计算机,然后在管理员命令提示符下运行以下命令,以将云根证书添加到“Enterprise NTauth”存储:

    注意

    对于 VPN 服务器未加入 Active Directory 域的环境,必须手动将云根证书添加到“受信任的根证书颁发机构”存储。

    命令 描述
    certutil -dspublish -f VpnCert.cer RootCA 在“CN=AIA”和“CN=Certification Authorities”容器下创建两个“Microsoft VPN root CA gen 1”容器,并发布每个根证书作为两个“Microsoft VPN root CA gen 1”容器的 cACertificate 属性的值。
    certutil -dspublish -f VpnCert.cer NTAuthCA 在“CN=AIA”和“CN=Certification Authorities”容器下创建一个“CN=NTAuthCertificates”容器,并发布每个根证书作为“CN=NTAuthCertificates”容器的 cACertificate 属性的值。
    gpupdate /force 加快将根证书添加到 Windows 服务器和客户端计算机的过程。
  3. 验证根证书是否存在于 Enterprise NTauth 存储中并显示为受信任:

    1. 使用企业管理员权限登录到安装了“证书颁发机构管理工具”的服务器。

    注意

    默认情况下,证书颁发机构服务器上已安装“证书颁发机构管理工具”。 可将其安装在其他成员服务器上,作为服务器管理器中的“角色管理工具”的一部分。

    1. 在 VPN 服务器上的“开始”菜单中,输入 pkiview.msc 打开“企业 PKI”对话框。
    2. 在“开始”菜单中,输入 pkiview.msc 打开“企业 PKI”对话框。
    3. 右键单击“企业 PKI”并选择“管理 AD 容器”
    4. 验证每个 Microsoft VPN root CA gen 1 证书是否存在于以下位置:
      • NTAuthCertificates
      • AIA 容器
      • 证书颁发机构容器

为 Windows 10 设备创建基于 OMA-DM 的 VPNv2 配置文件

在本部分,你将使用 Intune 创建基于 OMA-DM 的 VPNv2 配置文件,以部署 VPN 设备配置策略。

  1. 在 Azure 门户中选择“Intune”>“设备配置”>“配置文件”,然后选择在使用 Intune 配置 VPN 客户端部分中创建的 VPN 配置文件。

  2. 在策略编辑器中,选择“属性”>“设置”>“基础 VPN”。 扩展现有的 EAP XML 以包含一个筛选器,用于为 VPN 客户端提供从用户的证书存储检索 Microsoft Entra 条件访问证书所需的逻辑,避免客户端使用第一个发现的证书的可能性。

    注意

    否则,VPN 客户端可能会检索本地证书颁发机构颁发的用户证书,从而导致 VPN 连接失败。

    Intune 门户

  3. 找到以 </AcceptServerName></EapType> 结尾的部分,并在这两个值之间插入以下字符串,以便为 VPN 客户端提供选择 Microsoft Entra 条件访问证书的逻辑:

    <TLSExtensions xmlns="http://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV2"><FilteringInfo xmlns="http://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV3"><EKUMapping><EKUMap><EKUName>AAD Conditional Access</EKUName><EKUOID>1.3.6.1.4.1.311.87</EKUOID></EKUMap></EKUMapping><ClientAuthEKUList Enabled="true"><EKUMapInList><EKUName>AAD Conditional Access</EKUName></EKUMapInList></ClientAuthEKUList></FilteringInfo></TLSExtensions>
    
  4. 选择“条件访问”边栏选项卡,并将“此 VPN 连接的条件访问”切换为“已启用”。

    启用此设置会更改 VPNv2 配置文件 XML 中的 <DeviceCompliance><Enabled>true</Enabled> 设置。

    Always On VPN 的条件访问 - 属性

  5. 选择“确定” 。

  6. 选择“分配”,在“包含”下选择“选择要包含的组”。

  7. 选择要接收此策略的正确组,然后选择“保存”。

    自动 VPN 用户的 CAP - 分配

在客户端上强制实施 MDM 策略同步

如果 VPN 配置文件未显示在客户端设备上,你可以在“设置”\“网络和 Internet”\“VPN”下强制同步 MDM 策略。

  1. 以 VPN 用户组的成员身份登录到已加入域的客户端计算机。

  2. 在“开始”菜单中输入“帐户”,然后按 Enter。

  3. 在左侧导航窗格中,选择“访问工作单位或学校”。

  4. 在“访问工作单位或学校”下,选择“已连接到 <\域> MDM”,然后选择“信息”。

  5. 选择“同步”,然后确认该 VPN 配置文件在“设置”\“网络和 Internet”\“VPN”下显示。

后续步骤

现已将 VPN 配置文件配置为使用 Microsoft Entra 条件访问。

  • 若要详细了解条件访问如何与 VPN 配合工作,请参阅 VPN 和条件访问

  • 若要详细了解高级 VPN 功能,请参阅高级 VPN 功能

  • 若要查看 VPNv2 CSP 的概述,请参阅 VPNv2 CSP:此主题提供了 VPNv2 CSP 的概述。