为什么 PAM 身份验证在重启后不再需要 OpenVPN 服务器上的 2FA?

问题描述

我在 Centos 8 服务器上运行 OpenVPN,并将其配置为对存储在 IPA 服务器中的用户使用 PAM 身份验证。用户被配置为需要 2FA。几个月来,一切都按预期进行。但是最近我们的域证书过期了。将新证书插入 IPA 后,PAM 身份验证在 OpenVPN 服务器上停止工作。

日志中没有任何内容指向任何结论,因此我假设在 OpenVPN 服务器上运行的 IPA 客户端可能无法识别 IPA 服务器上的新域证书。所以我在OpenVPN服务器上卸载了IPA客户端,然后重新安装。接下来我重新启动了 OpenVPN 服务,重新配置了 sssd.conf 并重新启动了 sssd。我现在可以在启动 OpenVPN 连接时使用密码 + OTP 令牌按预期成功进行身份验证。

但是在重新启动 OpenVPN 服务器后,PAM 身份验证不再需要 2FA 令牌——即,即使用户配置为需要 2FA,我也只能使用不包含 OTP 令牌的密码启动 OpenVPN 连接。我重复了相同的卸载/重新安装步骤,密码 + 2FA 令牌身份验证再次按预期工作。但是和之前重启后一样,2FA令牌认证不起作用。

最初重新安装 IPA 客户端后,sss_pam_preauth 的 sssd 日志显示

[pam] [pam_eval_prompting_config] (0x4000):认证类型 用户 [test55@ipa.mydomain.biz] 和服务 [su]:密码 两个因素

但是在重新启动 sss_pam_preauth 的 sssd 日志后显示

[pam] [pam_eval_prompting_config] (0x4000):认证类型 用户 [test55@ipa.mydomain.biz] 和服务 [su]:密码

sssd 和 pam 配置文件在重启前后是一样的。

我无法理解这种行为。

解决方法

在我匆忙修复 OpenVPN 服务器的过程中,我忽略了 sssd 缓存。我曾经用于测试的帐户未配置为 2FA。

它出现在重新安装 IPA 客户端后,身份验证向 IPA 服务器查找 sss_pam_preauth,其中用户配置为 2FA。但是在重新启动后,sss_pam_preauth 查看了用户未配置为 2FA 的 sssd 缓存。

因此,在重新启动后,我使用命令 sss_cache -u user1 从 sssd 缓存中清除了用户。在我的下一个测试中,sss_pam_preauth 无法再在 sssd 缓存中找到用户,因此查看 IPA 服务器,该服务器按预期要求响应密码 + 2FA 令牌。然后我再次重新启动 OpenVPN 服务器,sss_pam_preauth 查看用户现在配置为 2FA 的 sssd 缓存。

OpenVPN 服务器现在按预期工作。