在 Active Directory 域中使用 NPS 进行 strongswan IKEv2 VPN + RADIUS 身份验证

在 Active Directory 域中使用 NPS 进行 strongswan IKEv2 VPN + RADIUS 身份验证

我已设法使用服务器证书通过 eap-mschapv2 身份验证运行 strongswan。现在我想尝试使用在 Windows 2012 R2 服务器上运行的 NPS 的 eap-radius 插件来针对 Active Directory 进行身份验证。

在域控制器上,我创建了一个新用户和组(VPN_USERS)用于远程访问。

在 VPN 服务器上,如果我检查系统日志,我会看到以下内容;

vpn charon: 08[IKE] received cert request for "C=US,O=CR-51 Test,CN=Root CA" 
...
vpn charon: 09[CFG] selected peer config 'ikev2-vpn'
...
vpn charon: 09[IKE] authentication of 'vpn.cr-51-test.local' (myself) with pre-shared key
...
vpn charon: 09[ENC] generating IKE_AUTH response 1 [ IDr AUTH EAP/REQ/ID ]
...
vpn charon: 09[IKE] successfully created shared key MAC 
....
vpn charon: 11[JOB] deleting half open IKE_SA after timeout

在 Windows 10 客户端上,尝试连接时出现以下错误:

dialed a connection named IKEv2 which has failed. The error code returned on failure is 13801.

在事件查看器中的 NPS 服务器上,有一个条目表明网络策略服务器拒绝用户访问,并建议更改 AD 中的用户拨入设置以允许访问或允许 NPS 控制访问。它最初设置为允许 NPS 控制访问,但设置为允许访问时仍然失败。

另外,设置 NPS 后,我无法使用域管理员帐户以外的域控制器上的帐户登录。

以下是当前配置

ipsec.conf:

config setup
  charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
  uniqueids=no

conn ikev2-vpn
  auto=add
  compress=no
  type=tunnel
  keyexchange=ikev2
  fragmentation=yes
  forceencaps=yes


  ike=aes256-sha1-modp1024,3des-sha1-modp1024!
  esp=aes256-sha1,3des-sha1-modp1024!

  dpdaction=clear
  dpddelay=300s
  rekey=no

  left=%any
  leftauth=pubkey
  [email protected]
  leftcert=/etc/ipsec.d/certs/vpn.cr-51-test.local.crt.pem
  leftsendcert=always
  leftsubnet=0.0.0.0/0
  lefthostaccess=yes
  leftfirewall=yes

  right=%any
  rightid=%any
  rightauth=eap-radius
  rightgroups="CN=VPN_USERS/CN=Users"
  rightsourceip=10.10.0.0/24
  rightdns=192.150.150.10
  rightsendcert=never
  rightfirewall=yes

 eap_identity=%identity

/etc/strongswan.d/charon/eap-radius.conf:

(仅我修改过的部分)

load = yes
...
secret = testpass
server = 192.150.150.20

ipsec.秘密:

vpn : RSA "/path/to/key"
: PSK "testpass"

NPS 配置:

NPS 服务器已注册到域。

Freindly name: vpn
Addresss (IP or DNS): 192.150.150.11
Shared secret: testpass

连接请求策略

Type of network access server: Remote Access Server(VPN-Dialup)

Conditions:
  NAS Port Type: VPN
  Client Friendly Name: vpn

网络访问策略

Type of network access server: vpn

 Conditions:
   NAS Port Type: VPN
   Client Friendly Name: vpn
   User Groups: VPN_USERS

 Constraints:
   Authentication Methods: EAP-MSCHAP v2
   NAS Port Type: VPN

更新

NPS 错误

日志名称:安全来源:Microsoft-Windows-Security-Auditing 日期:2018 年 6 月 22 日下午 5:25:02 事件 ID:6273 任务类别:网络策略服务器级别:信息关键字:审核失败用户:N/A 计算机:nps.cr-51-test.local 描述:网络策略服务器拒绝用户访问。

有关详细信息,请联系网络策略服务器管理员。

用户: 安全 ID: CR-51-TEST\tuser 帐户名称: [电子邮件保护] 帐户域:CR-51-TEST 完全合格帐户名称:CR-51-TEST\tuser

客户端计算机:安全 ID:NULL SID 帐户名称:- 完全合格的帐户名称:- 操作系统版本:- 被叫站标识符:192.250.250.11[4500] 呼叫站标识符:192.173.1.90[4500]

NAS:NAS IPv4 地址:192.250.250.11 NAS IPv6 地址:- NAS 标识符:strongSwan NAS 端口类型:虚拟 NAS 端口:4

RADIUS 客户端:客户端友好名称:vpn 客户端 IP 地址:192.250.250.11

身份验证详细信息:连接请求策略名称:对所有用户使用 Windows 身份验证网络策略名称:- 身份验证提供程序:Windows 身份验证服务器:nps.cr-51-test.local 身份验证类型:EAP EAP 类型:- 帐户会话标识符:- 日志记录结果:记帐信息已写入本地日志文件。原因代码:48 原因:连接请求与任何配置的网络策略均不匹配。

事件 XML:6273 1 0 12552 0 0x80100000000000000 531 安全 nps.cr-51-test.local S-1-5-21-2365315230-2476318153-1929964036-1111 [电子邮件保护] CR-51-TEST CR-51-TEST\tuser S-1-0-0 - - - 192.250.250.11[4500] 192.173.1.90[4500] 192.250.250.11 - strongSwan Virtual 4 vpn 192.250.250.11 对所有用户使用 Windows 身份验证 - Windows nps.cr-51-test.local EAP - - 48 连接请求与任何已配置的网络策略均不匹配。记帐信息已写入本地日志文件。

strongswan 错误

在此处输入图片描述

答案1

根据RFC 7296

通常,这些方法是不对称的(专为用户向服务器进行身份验证而设计),并且可能不是相互的。因此,这些协议通常用于向响应者验证发起者的身份,并且必须与响应者向发起者基于公钥签名的身份验证结合使用。

一些实现(例如 strongSwan)允许对其进行配置,但许多其他实现不允许,并且会坚持使用证书对服务器进行身份验证。

由于您似乎已经拥有证书和私钥,因此您可能只需要设置leftauth=pubkey。前提是客户端已经安装了 CA 证书。

答案2

因此,我禁用了在 NPS 服务器上为 VPN 连接制定的策略,并修改了 NPS 制定的默认策略,限制最少,这样我就能够通过 strongswan vpn 成功验证 Active Directory 用户。这些策略应该可以作为测试的起点。

在 strongswan VPN 服务器上

正如 ecdsa 所建议的,ipsec.conf我设置了leftauth=pubkey

关于NPS

  • 在下面连接请求策略启用对所有用户使用 Windows 身份验证政策。
  • 在下面网络政策禁用与路由和远程访问服务器的连接
  • 使能够与其他访问服务器的连接根据网络政策
  • 右键点击与其他访问服务器的连接并选择特性
  • 修改与其他访问服务器的连接政策:

净推荐值 1
确保授予访问权限被选中

净推荐值 2 允许增强型MSCHAPv2

我不确定是否有必要,但我也注释掉了rightgroups我在ipsec.conf文件中设置的参数,因为 strongswan 在日志中对此表示抱怨。

答案3

对于那些寻求比简单地允许所有类型的连接到 NPS 服务器更强大的解决方案的人来说,有一个简单的设置需要更改,它可以与 strongSwan 完美配合。

至于为什么这会改变一切,我不确定为什么。我认为这只是因为使用向导创建的策略假设我们的客户端(VPN 服务器)是 OEM 标准硬件,它预先配置了设置,使其发送额外的标志,以识别它有一个“远程访问服务器(VPN 拨号)”。真的到了那个地步,如果有人对此有明确的解释,我将不胜感激。要么修改答案,要么发表评论。谢谢。

因此,要重新开始,请单击“NPS(本地)”根节点,然后在主窗格中单击“配置 VPN 或拨号”。按照通常的步骤操作。完成向导后,将使用您提供的名称创建 2 个策略;一个在“连接请求策略”中,另一个在“网络策略”中。在这两个策略上,在“概述”选项卡的“网络连接方法”部分中,都有选项“网络访问服务器类型”设置为“远程访问服务器(VPN 拨号)”。将此选项更改为“未指定”。就这样。对我来说,进行这一更改是使客户端正确请求访问的唯一方法。此后,将同时考虑这两项政策。

希望能帮助到你。

相关内容