团队环境:OpenVPN集成LDAP认证

2017-09-29 阅读: OpenVPN

前面已经成功部署了OpenVPN的服务端。客户端和服务端采用的是基于TLS的双向认证,需要给每个客户端生成客户端私钥和证书。本篇将在OpenVPN服务端集成的OpenLDAP认证,这样能够使客户端用户在连接VPN时直接使用统一的OpenLDAP账号。部署的环境和版本信息如下:

安装openvpn-auth-ldap

使用yum安装:

yum install epel-releas
yum install openvpn-auth-ldap

主要安装了/usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so文件。

编辑/etc/openvpn/auth/ldap.conf文件:

<LDAP>
        URL             ldap://192.168.61.159:389
        BindDN          cn=Manager,dc=frognew,dc=com
        Password        thepassword
        Timeout         15
        TLSEnable       no
        FollowReferrals no
</LDAP>

<Authorization>
        BaseDN          "ou=People,dc=frognew,dc=com"

        SearchFilter    "uid=%u"

        RequireGroup    true

        <Group>
                BaseDN          "ou=Group,dc=frognew,dc=com"
                SearchFilter    "cn=vpn"
                MemberAttribute memberUid
        </Group>
</Authorization>

编辑openvpn的配置文件/etc/openvpn/server.conf:

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

注意上面的ldap.conf中RequireGroup true以及Group的配置实际我们期望是必须是LDAP中的名称为vpn的组下的用户才可以登录VPN。但根据这个ISSUE https://github.com/threerings/openvpn-auth-ldap/issues/7,当前2.0.3的openvpn-auth-ldap不支持。因此如果只想限制LDAP中某些用户可以使用VPN的话,只能设置RequireGroup false,然后可以在SearchFilter中做一些文章,比如(&(uid=%u)(ou=vpn))即只有用户的ou字段为vpn的才可以。

完成配置后重新启动openvpn。

客户端配置和测试

客户端的配置调整如下:

client
dev tun
proto tcp
remote xxx.xxx.xxx 11194
resolv-retry infinite
nobind
persist-key
persist-tun

ca ca.crt
;cert client.crt
;key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC

ns-cert-type server
auth-user-pass

comp-lzo
verb 3

  • 上面的配置注释掉了cert client.crt;key client.key不再需要客户端证书client.crt和秘钥client.key
  • ns-cert-type serverauth-user-pass是新加入的配置开启了用户名密码认证

修改完配置后使用VPN客户端连接即可。

参考

标题:团队环境:OpenVPN集成LDAP认证
本文链接:https://blog.frognew.com/2017/09/openvpn-integration-ldap.html
转载请注明出处。

目录