centos7中openvpn2.5.0用openvpn-auth-ldap认证

原创
01/21 13:41
阅读数 2.3K

centos7中openvpn2.5.0用openvpn-auth-ldap认证


很多博客写的教程都过时并不适用于当前的最新发行版本,因此需要记录下

1. centos7安装openvpn-auth-ldap插件以支持ldap认证

# 安装openvpn-auth-ldap
yum install openvpn-auth-ldap -y
# 进入openvpn服务器认证配置文件夹
cd /etc/openvpn/auth/
# 备份默认配置文件
cp ldap.conf  ldap.conf.bak
# 开始修改配置,清空内容进行编辑
echo > ldap.conf
# 修改ldap配置文件
vim ldap.conf
# 修改并粘贴配置

# 重启
systemctl restart openvpn@server
# 我的安装openvpn源码安装方式需要这样重启
systemctl restart openvpn.service

ldap.conf

<LDAP>
	# AD服务器地址
	URL		ldap://192.168.xxx.xxx:389
	# 管理员DN
	BindDN  CN=Administrator,CN=Users,DC=XXX,DC=com
	# 管理员密码
	Password	Y%G@$%^F^#UGH
	# 超时时间
	Timeout		15

	# 允许启用TLS
	#TLSEnable	yes
	# 允许匿名
	FollowReferrals yes
	# TLS CA证书文件
	TLSCACertFile	/usr/local/etc/ssl/ca.pem
	# TLS CA证书目录
	TLSCACertDir	/etc/ssl/certs
	# 客户证书和密钥
	# 如果需要TLS客户端身份验证
	TLSCertFile	/usr/local/etc/ssl/client-cert.pem
	TLSKeyFile	/usr/local/etc/ssl/client-key.pem
	# 密码套件
	# 默认就好
	# TLSCipherSuite	ALL:!ADH:@STRENGTH
</LDAP>

<Authorization>
	# 基础DN
	BaseDN		"OU=xxxx,DC=going-link,DC=com"
	# 用户搜索过滤条件 我们用sAMAccountName作为AD用户登录名
	SearchFilter "(sAMAccountName=%u)"

	# 需要组成员身份
	RequireGroup	false
	# 将非组成员添加到PF表(禁用)
	#PFTable	ips_***_users

	#<Group>
	#	BaseDN		"ou=Groups,dc=example,dc=com"
	#	SearchFilter	"(|(cn=developers)(cn=artists))"
	#	MemberAttribute	uniqueMember
		# Add group members to a PF table (disabled)
		#PFTable	ips_***_eng
	#</Group>
</Authorization>

测试连接

# 安装 openldap-clients
yum install -y openldap-clients
# 搜索实验 并输入密码
ldapsearch -x -W -D "CN=Administrator,CN=Users,DC=GOING-LINK,DC=com" -b "DC=GOING-LINK,DC=com" -h 192.168.1.62 -s one dn -LLL
输入密码,能看到域内一些OU组织则成功
ldapsearch -x -W -D "CN=Administrator,CN=Users,DC=GOING-LINK,DC=com" -b "DC=going-link,DC=com" -h 192.168.1.62 
ldapsearch -x -W -D "CN=Administrator,CN=Users,DC=GOING-LINK,DC=com" -b "OU=disabled,DC=going-link,DC=com" -h 192.168.1.62

2. openvpn服务端配置文件增加配置

  • 值得注意的是,蛮多老旧博客所给的配置都是错误的,一定要注意版本问题,这里openvpn-auth-ldap插件安装完成后,会生成openvpn-auth-ldap.so,有的系统的这个文件会在/usr/lib/openvpn/plugin/lib/中,这里路径是lib64,;
  • plugin 【openvpn-auth-ldap.so文件路径】 【ldap.conf文件路径】 【登录字段=%u】
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf sAMAccountName=%u"
# 客户端证书 无
client-cert-not-required
username-as-common-name

3. openvpn客户端用AD账号测试

看一下openvpn.log日志文件,连接成功或者失败都在其中写着。

我重启服务端,日志有这些:

客户端登录界面:

开始登录后:

服务端配置文件

local 192.168.XXX.XXX
port 1194
proto udp
dev tun

ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "route 192.168.0.0 255.255.255.0"
push "route 192.168.1.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"
push "route 192.168.3.0 255.255.255.0"
push "route 192.168.4.0 255.255.255.0"
push "route 192.168.5.0 255.255.255.0"
push "route 192.168.6.0 255.255.255.0"
push "route 192.168.7.0 255.255.255.0"
push "route 192.168.8.0 255.255.255.0"
push "route 192.168.9.0 255.255.255.0"
push "route 192.168.10.0 255.255.255.0"

client-config-dir ccd
client-to-client
duplicate-cn

keepalive 10 120
tls-auth ta.key 0
data-ciphers-fallback AES-256-CBC
comp-lzo

max-clients 1500
persist-key
persist-tun

status openvpn-status.log
log         openvpn.log
verb 3
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf sAMAccountName=%u"
# 客户端证书 无
verify-client-cert none
username-as-common-name
# 当服务器重新启动时,通知客户端,以便它可以自动重新连接。仅在UDP协议时可用
explicit-exit-notify 1

客户端配置文件 XXX.XXX.XXX.XXX是这台服务器的弹性公网IP,需要云安全组开放1194端口给openvpn用 同目录下要有ca.crt ta.key 俩文件,这俩参数可以通过<ca></ca>形式写在客户端配置文件中

client
dev tun
proto udp
remote XXX.XXX.XXX.XXX 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
ca ca.crt
tls-auth ta.key 1
data-ciphers-fallback AES-256-CBC
comp-lzo
verb 3
auth-user-pass

为参与LDAP认证的AD用户固定虚拟IP,以方便单独推送路由规则,和根据iptables日志追踪个人访问记录

展开阅读全文
0
0 收藏
分享
加载中
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部