openLDAP olcAccess 设置

openLDAP olcAccess 设置

我已经在 Rokye Linux 上安装了 openLdap 服务器:

[root@localhost etc]# cat rocky-release
Rocky Linux release 8.8 (Green Obsidian)

我按照本指南创建了管理员帐户如何锻造安装创建了 mdb 文件,我导入了默认模式并创建了一些组织人员。

目的是限制来自特定 IP 地址的访问,我想拒绝用户 A 从 IP sn 172..+ 访问,并授予用户 B 完全访问权限。

我尝试通过以下方式直接修改文件 olcDatabase={2}mdb.ldif:

[root@localhost cn=config]# cat olcDatabase\=\{2\}mdb.ldif
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 78f71d75
dn: olcDatabase={2}mdb
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {2}mdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcMdbConfig
entryUUID: 36722bb2-f64a-103d-9b51-4f57d349a308
creatorsName: cn=config
createTimestamp: 20231003150645Z
olcSuffix: dc=hwdomain,dc=lan
olcRootDN: cn=Manager,dc=hwdomain,dc=lan
olcRootPW:: e1NTSEF9VmNVdGlFZ0pEcmQrdnZzSGE5MzloK0VxbXdEQzJpYW8=
olcAccess: {0}to * by dn="cn=A,ou=People,dc=hwdomain,dc=lan" by peername.regex=IP=172\..+ none by * break
olcAccess: {1}to * by dn="cn=B,ou=People,dc=hwdomain,dc=lan" by peername.regex=IP=172\..+ manage by * break
olcAccess: {2}to * by * none
entryCSN: 20231004134853.723210Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20231004134853Z
[root@localhost cn=config]#

尝试拒绝来自 172.* 的 A 访问并同意来自 172.* 的 B 访问。我也尝试使用这种类型的谓词:

olcAccess: {0}to * by dn.base="cn=A,ou=People,dc=hwdomain,dc=lan" by peername.regex=IP=172\..+ none by * break
olcAccess: {1}to * by dn.base="cn=B,ou=People,dc=hwdomain,dc=lan" by peername.regex=IP=172\..+ manage by * break
olcAccess: {2}to * by * none

或者那个(有或没有.base):

olcAccess: {0}to * by dn.base="cn=A,ou=People,dc=hwdomain,dc=lan" by peername.regex=IP=172\..+ none
olcAccess: {1}to * by dn.base="cn=B,ou=People,dc=hwdomain,dc=lan" by peername.regex=IP=172\..+ manage
olcAccess: {2}to * by * none

不幸的是,任何用户都无法访问:

Oct 04 18:29:23 localhost.localdomain slapd[2382]: conn=1008 fd=13 ACCEPT from IP=192.168.230.1:57914 (IP=0.0.0.0:389)
Oct 04 18:29:23 localhost.localdomain slapd[2382]: conn=1008 op=0 BIND dn="cn=aaa,ou=People,dc=hwdomain,dc=lan" method=128
Oct 04 18:29:23 localhost.localdomain slapd[2382]: conn=1008 op=0 RESULT tag=97 err=49 text=
Oct 04 18:29:23 localhost.localdomain slapd[2382]: conn=1008 fd=13 closed (connection lost)
Oct 04 18:29:44 localhost.localdomain slapd[2382]: conn=1009 fd=13 ACCEPT from IP=192.168.230.1:57921 (IP=0.0.0.0:389)
Oct 04 18:29:44 localhost.localdomain slapd[2382]: conn=1009 op=0 BIND dn="cn=aaa,ou=People,dc=hwdomain,dc=lan" method=128
Oct 04 18:29:44 localhost.localdomain slapd[2382]: conn=1009 op=0 RESULT tag=97 err=49 text=
Oct 04 18:29:44 localhost.localdomain slapd[2382]: conn=1009 fd=13 closed (connection lost)

有人能帮我找到解决路径吗?您有什么建议和/或技巧吗?我尝试了 OpenLDAP 指南中记录的所有方法。

OpenLDAP 版本如下:

[root@localhost etc]# yum list installed | egrep -i "open.*ldap"
openldap.x86_64                          2.4.46-18.el8                          @anaconda
openldap-clients.x86_64                  2.4.46-18.el8                          @baseos
openldap-servers.x86_64                  2.4.46-18.el8                          @powertools

我真的很感激任何形式的帮助,我陷入了严重的麻烦。

谢谢阅读!!

我尝试了什么?

  1. 手动修改MDB文件
  2. 通过 ldapmodify 修改 MDB 文件

我需要什么? 设置 olcAccess 以限制特定子网对 LDAP 的访问。

相关内容