我已设法使用服务器证书通过 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 身份验证政策。
- 在下面网络政策禁用与路由和远程访问服务器的连接
- 使能够与其他访问服务器的连接根据网络政策
- 右键点击与其他访问服务器的连接并选择特性
- 修改与其他访问服务器的连接政策:
我不确定是否有必要,但我也注释掉了rightgroups
我在ipsec.conf
文件中设置的参数,因为 strongswan 在日志中对此表示抱怨。
答案3
对于那些寻求比简单地允许所有类型的连接到 NPS 服务器更强大的解决方案的人来说,有一个简单的设置需要更改,它可以与 strongSwan 完美配合。
至于为什么这会改变一切,我不确定为什么。我认为这只是因为使用向导创建的策略假设我们的客户端(VPN 服务器)是 OEM 标准硬件,它预先配置了设置,使其发送额外的标志,以识别它有一个“远程访问服务器(VPN 拨号)”。真的到了那个地步,如果有人对此有明确的解释,我将不胜感激。要么修改答案,要么发表评论。谢谢。
因此,要重新开始,请单击“NPS(本地)”根节点,然后在主窗格中单击“配置 VPN 或拨号”。按照通常的步骤操作。完成向导后,将使用您提供的名称创建 2 个策略;一个在“连接请求策略”中,另一个在“网络策略”中。在这两个策略上,在“概述”选项卡的“网络连接方法”部分中,都有选项“网络访问服务器类型”设置为“远程访问服务器(VPN 拨号)”。将此选项更改为“未指定”。就这样。对我来说,进行这一更改是使客户端正确请求访问的唯一方法。此后,将同时考虑这两项政策。
希望能帮助到你。