H3C 防火墙对接AD配置SSL VPN
业务需求:
为了满足公司员工在外访问公司内网资源,现要求在防火墙部署SSL VPN,用户通过AD域账号完成SSL VPN的认证,
网络拓扑:
AD域控配置:(注意:实际网络中用户名称一般为中文,登陆名称为英文)
首先看看官方配置文档:(1.22.5 章节:LDAP认证、授权配置举例)
https://www.h3c.com/cn/d_202101/1374240_30005_0.htm#_Toc60923435
按此文档配置完全是可以实现认证登陆的,但是对接本案例的时候认证失败。
设备侧debug ldap交互报文:
*Jan 13 16:19:53:350 2021 SSLVPN_Firewall LDAP/7/EVENT: -Context=1;
PAM_LDAP:Get result message errno = 49
*Jan 13 16:19:53:350 2021 SSLVPN_Firewall LDAP/7/ERROR: -Context=1;
PAM_LDAP:Failed to perform binding operation as administrator.
查询报错信息或者查看kms案例库可知,导致域管理员绑定失败的原因是账号密码信息错误或者权限不足导致。
设备侧或者服务器侧抓包:
通过分析报文80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 52e, v893 ;从报错语句看到错误代码是十六进制: 0x52e ,表示无效的凭证;对应的十进制是1326,表示ERROR_LOGON_FAILURE (登录失败,未知的用户名或者密码错误.) ,一般当用户名有效但是密码或者凭证无效的时候返回。
既然是域管理员账号密码不对,尝试通过mstsc远程桌面登陆AD服务器,尽然是可以正常登陆的,那么问题出在哪里呢?
因现场采用自定义的域管理员,并非采用通用的administrator,(某些场景下为了安全,客户不同意使用超级管理员权限)。客户自定义域管理员账户(示例)登陆名为zhongwen,但是实际显示名为中文,因此怀疑是这个问题导致。
为了检验是否是上述问题导致认证失败,新增管理员账户登陆名yanfa,显示名为yanya的管理员,设备侧进行相应的配置后,发现显示名和登陆名都为英文且相同的时候用户可以认证,但是显示名为中文,登陆名为英文的时候依然无法认证。
通过服务器侧抓包分析,设备侧配置的ldap server信息无法完成绑定和用户查询,因此对该场景的下的设备侧配置进行修改后可以完成正常认证,
正确配置如下:(仅仅展示SSL VPN 相关配置)
#创建SSL VPN 虚接口:
#将接口加入安全域
#ldap server配置(实际管理员在ou=admin下,此处只做示例)
//此处的login-dn cn=中文,ou=admin,dc=test,dc=com
user-parameters user-name-attribute samaccountname
是认证成功的关键配置。
#ldap映射实例配置
#ldap scheme配置
#domain 配置
#SSL VPN用户地址池配置
#SSL VPN 网关配置
#配置SSL VPN context
至此对接AD做SSL VPN认证到此结束。
测试结果: