OpenVPN 集成 OpenLDAP

OpenVPN服务端集成OpenLDAP认证,目地是能够方便维护各系统的账户,当有人员或权限变动时我们只需要在OpenLDAP上为用户添加到相应的分组,便能实现各个系统对用户的权限控制。

一、OpenLDAP权限分组

图片1

这里为了测试登录权限,只允许openvpn分组下的dev1ops1用户登录。

LDAP group需要使用groupOfUniqueNames用户组属性,请参考前面的文章进行配置

二、OpenVPN服务端配置

2.1 安装openvpn-auth-ldap

从yum源安装openvpn-auth-ldap

1
2
[root@centos7 openvpn]# yum -y install epel-release
[root@centos7 openvpn]# yum install -y openvpn-auth-ldap

安装完后会生成 /etc/openvpn/auth/ldap.conf 文件

2.2 配置ldap.conf

备份原先的配置文件

1
[root@centos7 openvpn]# cp /etc/openvpn/auth/ldap.conf /etc/openvpn/auth/ldap.conf.bak

编辑ldap.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@centos7 openvpn]# cat auth/ldap.conf

<LDAP>
URL ldap://192.168.48.138:389
BindDN ou=openvpn,ou=groups,dc=sys,dc=com
Password abc.openvpn
Timeout 15
TLSEnable no
FollowReferrals yes

</LDAP>

<Authorization>
BaseDN "ou=users,dc=sys,dc=com"
SearchFilter "uid=%u"
RequireGroup true
<Group>
BaseDN "ou=openvpn,ou=groups,dc=sys,dc=com"
SearchFilter "cn=openvpn"
MemberAttribute uniqueMember
</Group>
</Authorization>

上面的ldap.conf中如果设置 RequireGroup true以及Group的配置实际我们期望必须是LDAP中的名称为openvpn组下的用户才可以登录VPN。

2.3 配置OpenVPN服务端

编辑server.conf文件,添加如下2行配置

1
2
3
4
[root@centos7 openvpn]# vim server.conf 

plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf"
client-cert-not-required
  • 使用了上面安装的openvpn-auth-ldap认证插件
  • client-cert-not-requir不再需要客户端证书,将改为使用OpenLDAP中的用户认证

配置好后重启openvpn服务端

三、客户端配置

3.1 客户端配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@centos7 client]# cat client.conf 

client
remote 192.168.48.131 11194
proto tcp
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
ca key/ca.crt
;cert client.crt
;key client.key
ns-cert-type server
auth-user-pass
redirect-gateway def1
comp-lzo
verb 3
route 0.0.0.0 192.0.0.0 net_gateway
route 64.0.0.0 192.0.0.0 net_gateway
route 128.0.0.0 192.0.0.0 net_gateway
route 192.0.0.0 192.0.0.0 net_gateway
  • 上面的配置注释掉了 ;cert client.crt;key client.key不再需要客户端证书client.crt和秘钥client.key
  • ns-cert-type serverauth-user-pass是新加入的配置开启了用户名密码认证

3.2 客户端连接测试

当使用dev1登录时,用户在openvpn组里,可以成功登录

图片2

当使用dev2登录时,用户不在openvpn组里,便会登录失败

图片3

-------------本文结束感谢您的阅读-------------