在 OpenBSD 上设置 LDAPD 服务

在 OpenBSD 上设置 LDAPD 服务

我有一台 OpenBSD 7.1 服务器,其中运行着 LDAPD 服务。目前,它工作正常,但是我是管理 LDAP 组织的新手,并且不确定我的某些配置设置。顺便提一下 - 尽管配置中有描述和措辞,但此 LDAP 服务器仅供个人使用,不能用于商业目的。

这是我目前正在运行的配置:

listen on lo0 secure
listen on 10.42.19.5 ldaps certificate "/etc/ssl/hypnos/cert"

schema "/etc/ldap/core.schema"
schema "/etc/ldap/inetorgperson.schema"
schema "/etc/ldap/nis.schema"
schema "/etc/ldap/bsd.schema"

namespace "dc=spookyinternet,dc=com" {
  rootdn "dc=spookyinternet,dc=com"
  rootpw "{SSHA}3zOLoePUtznUxOMAqMCngEIw4o9FeS9KNXA5Wg=="
  index "uid"
  index "cn"
}

allow read access to subtree "dc=spookyinternet,dc=com" by self
deny read access to subtree "ou=personnel,dc=spookyinternet,dc=com" attribute "userPassword"
allow read,write access to subtree "ou=personnel,dc=spookyinternet,dc=com" attribute "userPassword" by self
allow read,write access to subtree "ou=personnel,dc=spookyinternet,dc=com" attribute "description" by self

我已经根据此 LDIF 创建了初始结构(/tmp/org.ldif):

dn: dc=spookyinternet,dc=com
objectclass: dcObject
objectclass: organization
dc: spookyinternet
o: spookyinternet.com LDAP Server
description: Root entry for spookyinternet.com

dn: ou=personnel,dc=spookyinternet,dc=com
objectclass: organizationalUnit
ou: personnel
description: All employees of Spooky Internet

dn: ou=services,dc=spookyinternet,dc=com
objectclass: organizationalUnit
ou: services
description: All sevices provided by Spooky Internet

dn: ou=domains,dc=spookyinternet,dc=com
objectclass: organizationalUnit
ou: domains
description: All domains managed by Spooky Internet

dn: dc=spookyinternet.com,ou=domains,dc=spookyinternet,dc=com
objectclass: domain
dc: spookyinternet.com
description: Primary domain

并且能够使用以下命令成功导入它:

ldapadd -vv -w 'correct horse battery staple' -H ldap://localhost/ -D dc=spookyinternet,dc=com -f /tmp/org.ldif

完成上述内容后,我的问题是:

  • 我看过的一些指南(特别是) 使用rootdn类似于。 这和有cn=admin,dc=spookyinternet,dc=com什么区别?dc=spookyinternet,dc=comrootdn
  • 如果cn=admin应该用于rootdn,这是我之后需要创建的用户吗?
  • rootdn配置中的和我通过标志binddn传递的有什么区别?ldapadd-D
  • 如果应该使用,那么我也cn=admin rootdn应该使用吗?binddn

答案1

大多数 LDAP 服务器仅使用 DN 作为帐户名。客户端中的“bind DN”参数是您访问 LDAP 数据库的用户名,ldapd.conf 中的“root DN”参数指定哪个帐户将被授予数据库的 root 权限。

(“rootdn”中指定的帐户可以绕过 ldapd.conf 中定义的“允许/拒绝”限制 - 它可以读取或写入任何条目的任何属性。)

我看过的一些指南(特别是这个)使用类似 cn=admin,dc=spookyinternet,dc=com 的 rootdn。这与 rootdn 的 dc=spookyinternet,dc=com 有什么区别?

如果 rootdn 应使用 cn=admin,这是我随后需要创建的用户吗?

可以rootdn通过两种方式使用:

  1. 如果rootpw还定义了,则 DN 完全是任意的,与实际条目没有任何对应关系 - 所有绑定(登录)都只是根据配置的“rootpw”进行验证。是否添加“cn=admin”由您决定。

  2. 如果rootpw不是定义,那么指定的 DN 必须确实存在于您的 LDAP 数据库中,并且它必须具有userPassword用于验证身份验证的属性。

    在这种情况下,使用用户帐号条目(无论其名称为“cn = admin,dc = foo”还是其他名称),而不是将 userPassword 属性放在顶层组织条目上。

    (尽管该模式确实允许“组织”对象类拥有用户密码,因此如果您愿意,仍然可以这样做,但这很奇怪。)

(注意:我更熟悉 OpenLDAP,但据我检查,OpenBSD 的 ldapd 在这里的行为相同。)

配置中的 rootdn 和我通过 -D 标志传递给 ldapadd 的 binddn 有什么区别?

它们是同一事物的两端。Ldapadd-D指定要用于操作的帐户名,ldapd.confrootdn指定该帐户是否具有 root 权限。

如果应该使用 cn=admin rootdn,那么我是否也应该将其用于 binddn?

是的,如果您想以“root”数据库权限连接。

如果您想以普通非特权用户的身份连接,则将该用户的 DN 指定为“绑定 DN”。

任何具有userPassword属性的 LDAP 条目,无论其对象类如何,都可以绑定(即用作 LDAP 操作的帐户)。

相关内容