卸载pam_shield.so后PAM错误

卸载pam_shield.so后PAM错误

我想知道卸载使用apt install.

我有“libpam-shield”https://packages.debian.org/stable/admin/libpam-shield安装在服务器(debian 9,运行 ssh、imap)上,用于阻止重复验证失败的 IP。 (我曾经apt install libpam-shield从 Debian 稳定存储库安装它。)后来我决定不再使用它,所以我使用apt remove libpam-shield.然而,即使在此之后,该文件/etc/pam.d/common-auth仍包含未注释的行auth optional pam_shield.so,这会导致在以下位置重复出现警告行/var/log/auth.log

PAM unable to dlopen(pam_shield.so): /lib/security/pam_shield.so: cannot open shared object file: No such file or directory
PAM adding faulty module: pam_shield.so

因此,我注释掉了上面提到的行common-auth,但这开始导致 imap 和 ssh 身份验证尝试出现身份验证错误。

grep shield -r /etc/pam*没有显示pam_shield提到的任何其他位置。我还应该在 PAM 配置文件中进行哪些其他更改才能消除有关未找到的错误pam_shield.so?我卸载后重新启动服务器libpam-shield

补充:以下是来自 的行/etc/pam.d/common-auth

auth    [success=3 default=ignore]      pam_unix.so nullok_secure
auth    optional pam_shield.so 
auth    [success=1 default=ignore]      pam_ldap.so use_first_pass
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so

答案1

看着PAM 文档:

对于更复杂的语法,有效的控制值具有以下形式:

    [值1=操作1 值2=操作2 ...]

[...]

actionN 可以采用以下形式之一:

[...]

N(无符号整数)

    相当于 ok,但具有跳过堆栈中接下来的 N 个模块的副作用。请注意,不允许 N 等于 0(在这种情况下,它与 ok 相同)。

所以成功=n跳过n行。因此,如果删除该auth optional pam_shield.so行,则必须少跳过一行,因此将第一行变为:

auth    [success=2 default=ignore]      pam_unix.so nullok_secure

目标是跳到pam_permit.so成功或下一个方法(除了pam_shield,我想知道它是否不应该放在后面pam_ldap效果很好,但我对此了解不够)。

但实际上所有这些都应该通过使用(从包中)命令在包删除时自动管理pam-auth-update处理自动重新配置。也许在移除包裹的过程中出现了问题。

在我所有的安装和卸载尝试中libpam 屏蔽libpam LDAP以任何顺序,配置总是按预期处理(删除包时相关行消失),所以我很困惑为什么它对你来说是错误的。

我建议:

  • 确保你不会搬起石头砸自己的脚。始终有一种方法来保留或恢复访问权限
  • 重新安装并重新卸载该软件包libpam 屏蔽尝试让发行版完成正确的设置。
  • 跑步pam-auth-update。它不应该再在提供的列表中提及“PAM 防护:阻止尝试密码猜测的 IP”,否则仍然存在问题。如果仍然提到它,您可以选择禁用它,这样无论如何都会重建正确的配置。

更新:另外,正如手册页中所解释的那样:

该脚本尽一切努力尊重 /etc/pam.d/common-* 的本地更改。对模块选项列表的本地修改将被保留,并且在堆栈的托管部分中添加模块将导致 pam-auth-update 将配置文件视为本地修改,并且不会对配置文件进行进一步更改,除非给出--强制选项。

如果手动更改与 中的评论发生冲突/etc/pam.d/common-auth,那么可能pam 身份验证更新将避免更改它。仍然可以使用以下命令将其重置为默认包处理:

pam-auth-update --force

相关内容