我们希望将root
SSH 登录限制在我们认为“安全”的少数网络(VPN 等),而不对其他帐户施加相同的条件。
在 OpenSSH 5.x 中,我们可以使用match
块。但是,这不是 OpenSSH 4.x 中的选项,在 RHEL5 中我们只能使用这个选项。
我在想也许可以使用 PAM 来实现这一点。有人知道吗?
答案1
找到这个之后Cyberciti.biz 文章,我开始研究pam_access
。这是我决定的解决方案:
首先,我在 中创建了一个访问文件/etc/security/sshd.conf
。我选择这样做而不是使用默认设置,/etc/security/access.conf
因为我想要一个专用于 的访问文件sshd
。该文件如下所示:
# cat /etc/security/sshd.conf
+:root:192.168.0.0/8
-:root:ALL
查看man access.conf
有关语法的更多信息。
然后,我在 PAM 堆栈顶部添加了以下行/etc/pam.d/sshd
:
auth required pam_access.so accessfile=/etc/security/sshd.conf
我在 Cyberciti.biz 文章中使用auth
而不是的原因是因为使用类型允许用户验证密码和account
account
然后被拒绝。我宁愿不验证密码。查看man pam.conf
更多信息。
这非常有效。
答案2
是的,pam_access 可以做到这一点。其他可能性包括 tcp 包装器(RHEL5 sshd 支持它们)和 iptables。
答案3
没有使用 RHEL 和朋友的经验,但我可能会首先尝试使用 tcpwrappers -- 我的意思是/etc/hosts.allow
和/etc/hosts.deny
文件:
---8<--- hosts.deny ---8<---
ALL: ALL
和
---8<--- hosts.allow ---8<---
ALL: localhost, 10.y.z.
注意隐含的 /24;我不确定 CIDR 块的语法。如果你需要,我可以帮你找到。尽量避免使用这些技巧将自己锁定在外。
PS:你考虑过ARP欺骗吧?