![OpenLDAP 访问处理](https://linux22.com/image/776057/OpenLDAP%20%E8%AE%BF%E9%97%AE%E5%A4%84%E7%90%86.png)
我已经在 Ubuntu Server 20.04 上安装了 OpenLDAP。到目前为止,它运行良好。现在我想限制对服务器的访问,因为现在任何人都可以读取所有条目,例如在 Thunderbird 中。因此,我创建了一个如下的 ldif 文件:
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to attrs=userPassword
by self write
by anonymous auth
by * none
olcAccess: to attrs=shadowLastChange
by self write
by * read
olcAccess: to * by * read
这是标准配置。如果我将最后一个条目更改为其他内容,例如
olcAccess: to * by users read
我无法再在 Thunderbird 中访问 LDAP。我希望 Thunderbird 在显示任何内容之前要求输入用户名和密码。在 Thunderbird 中,有 5 个字段需要设置:
Name Any Name for the LDAP
Server address DNS address
Base-DN e.g. dc=example,dc=org
Port-Number 636
Bind-DN ??
如果我在 Bind-DN 中什么都不输入,Thunderbird 不会要求输入任何内容,也不会显示任何内容。如果我在其中输入用户名或用户 ID,它会要求输入密码,但同样不会显示任何内容。
我有两个问题:
- ldif 应该是什么样子的?
- 必须将什么放入 Thunderbird 中?
答案1
“绑定 DN”是登录(绑定)操作中使用的目录条目的名称。在 LDAP 中,没有单独的用户 ID,而是您的条目他们自己是 LDAP 帐户。
例如,cn=Arne Fallisch,ou=Staff,dc=example,dc=org
将是您的“绑定 DN”(当然假设它存在),并且条目的userPassword
属性将是您的密码。
(该属性可以包含散列密码;该slappasswd
命令可用于生成兼容的密码散列,或者ldappasswd
可用于在线更改密码。)
任何条目,无论其 objectClass 如何,都可以用于绑定到目录,只要它具有 userPassword 属性 - 其中包括“person”、“inetOrgPerson”、“posixAccount”和其他一些。
请注意,OpenLDAP ACL 默认以“隐身”模式工作 - 也就是说,服务器不会说“拒绝访问”,而是假装不可用的条目根本不存在。在保护整个服务器时,您可能更希望它只返回“需要身份验证”错误 - 要实现这一点,请olcRequires: bind authc
在 olcDatabase 条目中定义(但不是在全局配置条目中;这样做会破坏诸如 StartTLS 和 SASL 身份验证之类的功能)。