在 openvpn-auth-ldap.so 中启用 RequireGroup 后身份验证失败

问题描述 投票:0回答:1
  1. 我使用 openvpn-auth-ldap.so 作为 openvpn 的身份验证插件
  2. 我只想让
    cn=corevpn,ou=tech,ou=group,dc=openldap,dc=example,dc=com
    下的会员能够登录openvpn
  3. 我的ldap-auth.conf配置文件有以下信息
<LDAP>
    URL ldap://127.0.0.1:389
    BindDN cn=admin,dc=openldap,dc=example,dc=com
    Password "secret"
    Timeout 60
    FollowReferrals yes
    TLSEnable no
</LDAP>

<Authorization>
    BaseDN "ou=people,dc=openldap,dc=example,dc=com"
    SearchFilter "(uid=%u)"
    RequireGroup true

    <Group>
        BaseDN "ou=Group,dc=openldap,dc=example,dc=com"
        SearchFilter "(&(objectClass=posixGroup)(cn=corevpn)(memberUid=%u))"
        MemberAttribute memberUid
    </Group>
</Authorization>
  1. 具有用户密码字段的成员组位于
    ou=people,dc=openldap,dc=example,dc=com
  2. 这是一些信息
root@master:/container/service/slapd/assets/config/bootstrap/ldif/custom# ldapsearch -x -LLL -H ldapi:/// -D "cn=admin,dc=openldap,dc=example,dc=com" -W -b "ou=group,dc=openldap,dc=example,dc=com" "(memberUid=kevin)"
Enter LDAP Password: 
dn: cn=corevpn,ou=tech,ou=Group,dc=openldap,dc=example,dc=com
cn: corevpn
gidNumber: 504
objectClass: posixGroup
objectClass: top
memberUid: kevin
  1. 遇到的错误是:

  2. openldap 日志

665732a0 conn=1120 fd=14 ACCEPT from IP=172.30.0.11:38546 (IP=0.0.0.0:389)
665732a0 conn=1120 op=0 BIND dn="cn=admin,dc=openldap,dc=example,dc=com" method=128
665732a0 conn=1120 op=0 BIND dn="cn=admin,dc=openldap,dc=example,dc=com" mech=SIMPLE ssf=0
665732a0 conn=1120 op=0 RESULT tag=97 err=0 text=
665732a0 conn=1120 op=1 SRCH base="ou=people,dc=openldap,dc=example,dc=com" scope=2 deref=0 filter="(uid=kevin)"
665732a0 conn=1120 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
665732a0 conn=1121 fd=15 ACCEPT from IP=172.30.0.11:38558 (IP=0.0.0.0:389)
665732a0 conn=1121 op=0 BIND dn="cn=admin,dc=openldap,dc=example,dc=com" method=128
665732a0 conn=1121 op=0 BIND dn="cn=admin,dc=openldap,dc=example,dc=com" mech=SIMPLE ssf=0
665732a0 conn=1121 op=0 RESULT tag=97 err=0 text=
665732a0 conn=1121 op=1 BIND anonymous mech=implicit ssf=0
665732a0 conn=1121 op=1 BIND dn="cn=kevin,ou=People,dc=openldap,dc=example,dc=com" method=128
665732a0 conn=1121 op=1 BIND dn="cn=kevin,ou=People,dc=openldap,dc=example,dc=com" mech=SIMPLE ssf=0
665732a0 conn=1121 op=1 RESULT tag=97 err=0 text=
665732a0 conn=1121 op=2 UNBIND
665732a0 conn=1120 op=2 SRCH base="ou=Group,dc=openldap,dc=example,dc=com" scope=2 deref=0 filter="(&(objectClass=posixGroup)(cn=corevpn)(memberUid=%u))"
665732a0 <= mdb_equality_candidates: (cn) not indexed
665732a0 conn=1121 fd=15 closed
665732a0 <= mdb_equality_candidates: (memberUid) not indexed
665732a0 conn=1120 op=2 SEARCH RESULT tag=101 err=0 nentries=0 text=
665732a0 conn=1120 op=3 UNBIND
665732a0 conn=1120 fd=14 closed

==为什么是memberUid=%u 而不是memberUid=kevin???==

  1. openvpn 服务器端:
2024-05-29 20:35:04 us=599688 122.241.13.157:59447 PLUGIN_CALL: POST /usr/lib/openvpn/plugins/openvpn-auth-ldap.so/PLUGIN_AUTH_USER_PASS_VERIFY status=1
2024-05-29 20:35:04 us=599712 122.241.13.157:59447 PLUGIN_CALL: plugin function PLUGIN_AUTH_USER_PASS_VERIFY failed with status 1: /usr/lib/openvpn/plugins/openvpn-auth-ldap.so
2024-05-29 20:35:04 us=600090 122.241.13.157:59447 TLS Auth Error: Auth Username/Password verification failed for peer
  1. openvpn 客户端
Wrong creditials try again
  1. 我需要实现只有指定组的成员才能登录openvpn认证成功
  2. 我想知道为什么 openldap 收到
    memberUid=%u
    而不是
    memberUid=kevin
docker ldap vpn openldap openvpn
1个回答
0
投票

根据我对openvpn配置手册的理解,组

SearchFilter
属性允许您在指定的
BaseDN
中过滤组,但不是基于使用
%u
处理过的过滤器。

将从

BaseDN
中筛选出来的群组将被检查并比较,以查看它们的
MemberAttribute
属性中是否包含用户的信息。

如果你想使用

posixGroup
,你需要将
RFC2307bis
设置为false。 (此 rfc 用于
groupOfNames
/
groupOfUniqueNames
的使用,它存储用户 dn 而不是 memberuid 作为 ldap 组内的引用)

尝试这个配置:

<LDAP>
   URL ldap://127.0.0.1:389
   BindDN cn=admin,dc=openldap,dc=example,dc=com
   Password "secret"
   Timeout 60
   FollowReferrals yes
   TLSEnable no
</LDAP>

<Authorization>
   BaseDN "ou=people,dc=openldap,dc=example,dc=com"
   SearchFilter "(uid=%u)"
   RequireGroup true

<Group>
    BaseDN "ou=Group,dc=openldap,dc=example,dc=com"
    RFC2307bis false
    SearchFilter "(&(objectClass=posixGroup)(cn=corevpn))"
    MemberAttribute memberUid
</Group>
© www.soinside.com 2019 - 2024. All rights reserved.