我使用一对冗余的 OpenLDAP 服务器通过 NSS 进行 PAM 身份验证和目录服务。到目前为止,它是 100% 可靠的,但没有什么能永远完美运行。
我现在应该采取哪些步骤,以便有机会从 LDAP 服务器的故障中恢复?在我的非正式测试中,似乎即使已经过身份验证的 shell 在很大程度上也没用,因为所有用户名/uid 查找都会挂起,直到目录服务器恢复。
到目前为止,我只想到了两件事:
- 不要在 LDAP 服务器本身上使用 NSS-LDAP 和 PAM-LDAP。
- 在仅接受来自我们本地子网的公钥身份验证的所有盒子上创建一个根级帐户,并很好地保护该密钥。我不确定这对我有多大好处,因为一旦我登录,我怀疑我将无法完成任何事情,因为所有用户 ID 查找都会挂起。
还有其他建议吗?
基于网络的身份验证规则 #1:始终有一个可用的本地帐户。
超越规则#1(并且为了使它有用而不被阻塞在 nss_ldap 后面试图与死服务器对话):
使用 pam_ldap/nss_ldap 您可以将其设置
bind_policy
为“软”(在服务器故障时立即返回),这消除了阻塞问题。timelimit
如果nss_ldap 无法联系 LDAP 服务器,您还可以设置这些值以使其返回。请注意,这还有其他含义(例如 SSH 登录期间的软故障将使您的 LDAP 帐户无法访问,并且零星的故障将导致某些 LDAP UID 的用户名未知。还有一些未记录的 nss_ldap 选项:
nss_reconnect_tries
,nss_reconnect_sleeptime
,nss_reconnect_maxsleeptime
, &nss_reconnect_maxconntries
,它们的功能与它们的名称所暗示的一样,将帮助您解决 LDAP 服务器的故障,而无需将 bind_policy 设置为 soft(这就是我正在做的 - 3 reconnect尝试 10 秒最大睡眠 = 等待 LDAP 服务器的最大 30 秒延迟)。