正如我在中提到的另一个线程,我有一个支持两打 Linux 服务器的 LDAP 系统。当 LDAP 服务器由于各种原因(防火墙规则更改、断电等)而关闭时,我的其余系统就会挂起。
我希望建立一些冗余,并偶然发现了有关使用nscd
或sssd
本地缓存登录的文章。
我的所有服务器都安装了 nscd,并具有以下设置
enable-cache passwd yes
positive-time-to-live passwd 600
这些是默认设置。如果我理解正确的话,nscd 每次登录都会缓存密码 10 分钟。
为了处理意外的 LDAP 服务器停机,我想知道是否可以将 增加到positive-time-to-live
更大的数字,比如一整天(86400 秒)。
当 LDAP 服务器关闭时,这是否使我能够在 24 小时内登录?
这样做有什么风险吗?
我在各种线程中看到了sssd
类似的目的,尽管我尝试过,但它破坏了我的 PAM 设置并使所有登录“权限被拒绝”。由于无法弄清楚原因,我决定sssd
暂时删除 (),并专注于使用nscd
。
我的所有服务器都在各种 LTS 版本上运行 ubuntu
答案1
如果我理解正确的话,nscd 每次登录都会缓存密码 10 分钟。
不,它只缓存在 /etc/passwd 中找到的用户信息,这通常是所有内容除了密码。这就是shadow
映射 – 但大多数 LDAP 配置不使用影子;他们根本不会向 nsswitch 透露密码哈希。
当 LDAP 服务器关闭时,这是否使我能够在 24 小时内登录?
很可能不会。在几乎所有设置中,通过 LDAP 登录不是通过 nsswitch 完成的(即不是通过检索密码哈希进行本地验证);这是通过 PAM 主动联系 LDAP 服务器并让它验证密码来完成的。
缓存的唯一方法是通过 PAM。如果您的 pam_ldap 模块没有内置缓存,则pam_ccache
可以将该模块插入到其上方以提供类似的功能。
或者,如果您确实正在寻找冗余,那么设置第二个 LDAP 服务器。使用 OpenLDAP 的“Syncrepl”使其自动复制数据(甚至可以在两个方向上)。
(很奇怪的是,您的 LDAP 服务器比网络的其余部分更容易受到断电的影响,但如果例如有多个电路,则将第二个服务器放在断电较少的电路上......)