我需要允许所有用户进行 ssh 访问,但如果 UID 介于 6000 和 6500 之间,我需要检查 ssh 来源的 IP 是否在文件 /etc/remote-hosts 中。
/etc/remote-hosts
1.2.3.4
5.6.7.8
9.10.11.12
有办法做到这一点吗?我找不到有关此事的任何信息,只能允许和阻止特定的 ip 或 uid。
答案1
您正在寻找的可能是pam_列表文件模块。
如下所示的块/etc/pam.d/sshd
可能会执行您想要的操作:
account [success=1 default=ignore] pam_succeed_if.so quiet uid < 6000 uid > 6500
account required pam_listfile.so file=/etc/remote-hosts item=rhost sense=allow onerr=fail
pam_listfile
如果 UID 超出 6000-6500 范围,第一行将跳过测试。删除该quiet
标志以查看该测试何时执行。将其更改debug
为真正填充您的日志。
第二行将检查用户的远程主机是否在访问文件中。您可以更改该行以使用onerr=succeed
;如果是这样,您可以删除该访问文件以允许该 UID 范围内的所有用户登录。
如果我可以建议修改您的策略,请不要使用 UID 范围,而是将此类用户添加到公共组,例如“restrictedssh”。那么您就不必担心将所有此类用户纳入特定的 UID 范围。请尝试以下块:
account [success=1 default=ignore] pam_succeed_if.so quiet user notingroup restrictedssh
account required pam_listfile.so file=/etc/remote-hosts item=rhost sense=allow onerr=fail
无论哪种情况,都将行添加到文件顶部附近/etc/pam.d/sshd
,紧跟在任何其他account
行之后。