OpenLDAP 访问处理

OpenLDAP 访问处理

我已经在 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 身份验证之类的功能)。

相关内容