为什么将 OpenLDAP 升级到 v2.4 后,ldapsearch 无法与匿名绑定一起使用?

为什么将 OpenLDAP 升级到 v2.4 后,ldapsearch 无法与匿名绑定一起使用?

我有一个设置OpenLDAP v2.3这是我过去几年一直在使用的。以下是slapd.conf用于访问控制的行。

access to dn.one="o=abc, c=IN"
        by * read

access to dn.base="o=abc, c=IN"
        by * none

当我使用匿名绑定执行 ldapsearch 时给出了结果。

例如以下命令给出结果。

ldapsearch -x -h localhost -b "o=abc,c=IN" 

现在我将操作系统 CentOS 从 5.5 升级到了 6.3,因此 OpenLDAP 的版本是OpenLDAP v2.4。我们没有改变架构。

但现在同样的问题ldapsearch出现了result: 32 No such object错误。

但是当我在访问控制配置中添加以下行时,它就起作用了。

access to dn.one="o=abc, c=IN"
        by * read

access to dn.base="o=abc, c=IN"
        by anonymous read
        by * none

这可能是什么原因?这样做是否存在安全风险?

答案1

我在 OpenLDAP 邮件列表上发布了这个问题并得到了答案。感谢 Pierangelo Masarati。

在 OpenLDAP v2.4 中,搜索操作需要对搜索库的“entry”伪属性具有“搜索”权限,而 v2.3 中则并非如此。

人 slapd.access(5):

[...]

搜索操作需要对 searchBase 的条目伪属性具有搜索 (=s) 权限(注意:这是 OpenLDAP 2.4 引入的)。

[...]

因此我不需要授予匿名者对基础的读取权限。仅授予搜索权限就足够了,如下所示。

access to dn.base="o=abc, c=IN"
            by anonymous search
            by * none

我测试成功了。

相关内容