我使用 PAM 来验证用户登录
信息来自- http://linux.die.net/man/8/pam_listfile
在我的 Linux Red Hat 机器上,我有 5 个不同的用户
user1
user2
user3
user4
user5
我想仅对前三个用户启用 ssh 登录
所以
我创建了文件
more /etc/logins_users.txt
user1
user2
user3
我还补充sshd 配置文件文件如下
auth required pam_listfile.so item=user onerr=fail sense=allow file=/etc/logins_user.txt
我重新启动了 sshd 服务
但用户4和用户5尽管没有在 logins_users.txt 文件中定义,但仍可以访问 Linux 计算机
我的配置有什么问题?
为什么用户4和用户5尽管被封锁了,仍然有 ssh 登录访问权限???
答案1
你的配置没有任何问题。
/etc/pam.d/sshd
像这样在第一行写下你的配置
#%PAM-1.0 需要身份验证 pam_listfile.so 项目 = 用户 onerr = 失败 感知 = 允许文件 = /etc/logins_user.txt 身份验证需要 pam_sepermit.so auth 包括密码验证 需要帐户 pam_nologin.so 账户包含密码验证 密码包括密码验证 # pam_selinux.so close 应该是第一个会话规则 会话需要 pam_selinux.so 关闭 会话需要 pam_loginuid.so # pam_selinux.so open 后面只能跟在用户上下文中执行的会话 会话需要 pam_selinux.so 打开 env_params 会话可选 pam_keyinit.so 强制撤销 会话包括密码验证
这是因为 PAM 将逐行检查所有这些配置,如果您将配置放在最后一行,则在检查您的条件之前,任何其他条件都将通过,这就是为什么所有用户都能够登录的原因。检查一下并告诉我。
尝试此操作时要小心
在更改任何内容之前,请先备份文件。
如果你像这样配置
需要身份验证 pam_listfile.so 项目 = 用户 onerr = 失败 感知 = 允许文件 = /etc/logins_user.txt auth 包括密码验证 需要帐户 pam_nologin.so 。 。 会话包括密码验证
即使条件失败,PAM 仍会检查剩余规则。
如果你像这样配置
auth requisite pam_listfile.so item=user onerr=fail sense=allow file=/etc/logins_user.txt auth 包括密码验证 需要帐户 pam_nologin.so 。 。 会话包括密码验证
如果上述条件失败,PAM 将不会检查剩余规则。
必需的
Failure also results in denial of authentication, although PAM will still call all the other modules listed for this service before denying authentication.
必需品
Failure to authenticate via this module results in immediate denial of authentication.
因此,在你的情况下可能低于给予许可的条件
auth 包括密码验证
您在 ssh 时输入了正确的密码。