问题:
我的 subversion 开始定期停止工作(每隔一两个小时),这似乎是在域控制器发生故障时开始的(我还没有进行元数据清理)。但是,失败的域控制器不是 AuthLDAPUrl 目录中指定的域控制器。
我的问题:
有谁知道是什么原因造成的,auth_ldap 联系的域控制器是否可能发送响应告诉 auth_ldap 使用现在已经消失的域控制器?
此外,是否有办法将 AuthzSVNAccessFile 中用户的所有 ldap 身份验证密码转储到本地文件作为临时解决方法?
看起来我正在使用全局目录,端口 3268,我最好使用 636 还是 389。如果我改用其中一个,这意味着什么?我的其他一些 DC 没有监听 3268,而是监听其他端口,所以我可能可以指定冗余的 AuthLDAPUrls?
参考资料:
错误信息:
[warn] [client 192.168.80.80]
[22364] auth_ldap authenticate: user aUserName authentication failed;
URI /svn/someRepo/trunk [LDAP: ldap_simple_bind_s() failed]
[Can't contact LDAP server]
auth_ldap 配置:
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthzSVNAccessFile /etc/httpd/authfiles/authz_svn_access
AuthType Basic
AuthBasicProvider ldap
AuthName "Company's Software Repository"
AuthLDAPBindDN "[email protected]"
AuthLDAPBindPassword "someSuperSecretPassword"
AuthLDAPUrl "ldap://pdc.myDomain.com:3268/dc=myDomain,dc=com?samAccountName?sub?(objectCategory=person)(objectClass=User)"
Require valid-user
</Location>
答案1
使用端口 3268 表示 LDAP 搜索应在“林范围”内进行,并且针对全局目录本身而不是特定的域控制器运行。
这可能是问题的一部分 - 切换到 636 或 389 将切换到仅针对复制到本地 LDAP 服务器/域控制器的对象运行的 LDAP 查询。
我认为“正确”的解决方案是简单地清理 AD - 丢失的 DC 可能还会导致各种其他同步问题等。
至于转储密码 - 对于良好的 LDAP 目录,密码属性是只写的(SunONE、Novell eDirectory 和 MS Active Directory 都这样做),专门是为了防止人们转储和滥用它们。
如果是紧急情况,您可以使用 pwdump 之类的工具从域控制器 SAM 中转储密码,然后使用彩虹表或其他东西破解它们,但我认为如果您只是清理了元数据和森林,那就没问题了。
答案2
你使用的 apache 和 svn 是什么版本? apache 和 ldap/AD 的早期版本存在已知问题...2.2.8 版已修复(我相信)http://www.apache.org/dist/httpd/CHANGES_2.2