允许或拒绝通过 sshd 服务器登录的 Linux PAM 配置
这个想法很简单,你想根据用户列表限制谁可以使用 sshd。文本文件包含不能使用 SSH 服务器登录(或允许登录)的用户列表。这用于提高安全性。
PAM(可插入式身份验证模块)允许您定义灵活的用户身份验证机制。我之前的帖子演示了如何使用 sshd 配置选项拒绝或允许用户。但是,如果您想阻止或拒绝大量用户,请使用 PAM 配置。
新系统管理员须知
- 在任何修改之前备份所有数据和 PAM 配置文件????
- 请小心执行配置选项。错误的配置可能会锁定所有登录访问权限,包括 root 访问权限。
- 阅读此 Linux-PAM 配置文件语法指南
- 现在继续阅读下面的pam_listfile.so配置...
pam_listfile.so 模块的使用
此 PAM 模块根据指定文件的内容对用户进行身份验证。例如,如果用户名存在于文件 /etc/sshd/ssh.allow 中,则 sshd 将授予登录访问权限。
如何配置 pam_listfile.so 模块以拒绝访问?
如果用户名存在于文件 /etc/sshd/sshd.deny 中,则您想要阻止该用户。
打开 /etc/pam.d/ssh(或者对于 RedHat 及其它版本,打开 /etc/pam.d/sshd)
# vi /etc/pam.d/ssh
附加以下行:
auth required pam_listfile.so item=user sense=deny file=/etc/sshd/sshd.deny onerr=succeed
保存并关闭文件
现在将所有用户名添加到 /etc/sshd/sshd.deny 文件中。如果用户在此文件中列出,则将拒绝他们通过 sshd 登录:
# vi /etc/sshd/sshd.deny
每行附加用户名:
user1
user2
...
重新启动 sshd 服务:
# /etc/init.d/sshd restart
了解配置指令:
- auth required pam_listfile.so:验证用户时所需模块的名称。
- item=user:检查用户名
- sense=deny:如果用户存在于指定文件中,则拒绝该用户
- file=/etc/sshd/sshd.deny:包含用户列表的文件名(每行一个用户)
- onerr=succeed:如果遇到错误,PAM 将返回状态 PAM_SUCCESS。
如何配置 pam_listfile.so 模块以允许访问?
如果用户名存在于文件 /etc/sshd/sshd.allow 中,则您想要允许用户使用 ssh。
打开 /etc/pam.d/ssh(或 RedHat 及其它操作系统的 /etc/pam.d/sshd)
# vi /etc/pam.d/ssh
附加以下行:
auth required pam_listfile.so item=user sense=allow file=/etc/sshd/sshd.allow onerr=fail
保存并关闭文件。
现在将所有用户名添加到 /etc/sshd/sshd.allow 文件中。现在,如果用户在此文件中列出,则允许其通过 sshd 登录。
# vi /etc/sshd/sshd.allow
每行附加用户名:
tony
om
rocky
重启 sshd 服务(可选):
# /etc/init.d/sshd restart
现在,如果 paul 尝试使用 ssh 登录,他将收到一个错误:
权限被拒绝(publickey,keyboard-interactive)。
以下日志条目记录到我的日志文件(/var/log/secure 或 /var/log/auth.log 文件)中
tail -f /var/log/auth.log
输出:
Jul 30 23:07:40 p5www2 sshd[12611]: PAM-listfile: Refused user paul for service ssh Jul 30 23:07:42 p5www2 sshd[12606]: error: PAM: Authentication failure for paul from 125.12.xx.xx
了解配置指令:
- auth required pam_listfile.so:验证用户时所需的模块名称。
- item=user:检查或指定用户名
- sense=allow:如果用户存在于指定文件中,则允许用户
- file=/etc/sshd/sshd.allow:包含用户列表的文件名(每行一个用户)
- onerr=fail:如果文件名不存在或者用户名格式不正确,则不允许登录。
进一步阅读:
- 系统管理员的 Linux PAM 指南
- Sun Solaris PAM 网站为系统管理员和开发人员提供了丰富的信息
- 下载适用于系统管理员、模块开发人员和应用程序开发人员的三份 Linux-PAM 指南。