允许具有特定 UID 的用户从特定 IP 进行 ssh 访问

允许具有特定 UID 的用户从特定 IP 进行 ssh 访问

我需要允许所有用户进行 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行之后。

相关内容