LDAP:为什么在ldap conf文件中存储根密码?

我正在使用LDAP + SSH解决scheme,但是我想问,为什么我必须将libdss root密码存储在libnss_ldap.secret和pam_ldap.secret中? 这似乎是不安全的,有人可以破解一个ldap客户机一个有整个ldap的密码?

我怎样才能避免这一点,是真正需要validation用户的ldappipe理员通行证?

谢谢,马丁

正如sysadmin1138所说,您确实需要读取LDAP数据库的权限。 您可以通过添加一个特殊的LDAP用户来访问每个属性(userPassword除外)。

dn: cn=admin,dc=example,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: <some sha1 hash> 

然后在访问控制文件(假设OpenLDAP在这里):

 access to * by dn.regex="cn=admin,dc=example,dc=com" read by * read 

您还可以授予匿名用户的读取权限(仅限制userPassword)。 那么你需要一个特殊的pipe理员用户,你可以放弃libnss_ldap.secret和pam_ldap.secret。 这同样适用,而且用户数据库的uid和gecos字段无论如何都是秘密的。 这是我通常做的。 您可能需要设置大小限制,并将对邮件属性的访问限制为已通过身份validation的用户:

 sizelimit 100 timelimit 60 access to attrs=userPassword by anonymous auth by * none access to attrs=mail by self read by users read by * none access to * by * read 

希望有所帮助!

IIRC,必须存储在那里的用户和密码是能够读取所有适当的LDAP属性的用户和密码。 恰恰相反,LDAP-root可以全部读取它们。 如果在LDAP结构中创build一个能够读取正确属性但不写入它的用户的时间,它将允许一个权限较低的帐户存储在这些文件中。 无论如何,我相信这是最好的做法。

避免这种情况的唯一方法是使用kerberos和ldap。 不要使用ldap进行身份validation,而是使用Kerberos。

如果你有一个基于Linux的红帽,你可以尝试freeipa 。 他们的版本2已经接近完成,并且显示了很多的承诺(我已经在实验室testing过了,build立,维护和扩展都非常简单)。 只要版本2作为生产出来,我打算在任何地方使用它,我可以;-)

如果你不使用基于Linux的红帽子,那么在你面前有一个痛苦的世界来实现这个工作。 这是可能的,但不是因为内心的淡淡。 我发现这些关于这个东西的howtos工作得很好: rj系统howtos ,跳过非kerberos / ldap的东西。 Ubuntu有一个社区文档(这两个词没有激发我很多信心)来设置这个东西: ubuntu openldap / kerberos 。

感谢freeipa,如果你没有任何Windows服务器,我们将有一个相当不错的AD等价于linux / unix。