在 OpenSSH 4.x 中将 SSH 根登录限制为仅“安全”网络

在 OpenSSH 4.x 中将 SSH 根登录限制为仅“安全”网络

我们希望将rootSSH 登录限制在我们认为“安全”的少数网络(VPN 等),而不对其他帐户施加相同的条件。

在 OpenSSH 5.x 中,我们可以使用match块。但是,这不是 OpenSSH 4.x 中的选项,在 RHEL5 中我们只能使用这个选项。

我在想也许可以使用 PAM 来实现这一点。有人知道吗?

答案1

找到这个之后Cyber​​citi.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

我在 Cyber​​citi.biz 文章中使用auth而不是的原因是因为使用类型允许用户验证密码和accountaccount然后被拒绝。我宁愿不验证密码。查看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欺骗吧?

相关内容