限制除一个 IP/主机名之外的所有 IP/主机名的 root ssh

限制除一个 IP/主机名之外的所有 IP/主机名的 root ssh

我想要限制来自除单个 IP 地址之外的所有 IP 地址的 root ssh 登录。

我的印象是,我只需要将其添加到 /etc/pam.d/sshd:

account required pam_access.so

并将其添加到 /etc/security/access.conf:

-:root:ALL EXCEPT IPADDRESS

但这似乎不起作用。

答案1

在 /etc/ssh/sshd_config 中

# Disable Root login
PermitRootLogin no
#
# [ . . . ]
#
# At the end of the file, add:
#
# Allow Root Login via Key from Admin Bastion
Match Address 10.9.8.7
        PermitRootLogin without-password

答案2

为什么要允许 root ssh 访问?墨菲定律认为,当您需要 root 访问权限时,您将远离您批准的 IP 地址。

这只是我的观点,但更好的方法是以普通用户身份登录,然后 su 到 root。要获得 root 访问权限,需要您的用户密码和 root 密码。因此,您的普通用户帐户必须位于管理员或 wheel 组中,具体取决于您运行的 Linux 发行版。

编辑:为了进一步提高安全性,仅允许对 ssh 连接进行预共享密钥身份验证。但是,如果您的机器没有必要的私钥,这可能是一把双刃剑。

答案3

我认为这是 RHEL 5+,并且存在此问题。相同的步骤也适用于 RHEL 4。在 RHEL 5 上使其工作的技巧是添加所需的帐户 pam_access.so

到 /etc/pam.d/sshd 的第二行或第三行。如果你只是将其附加到底部,则不起作用。

生成的 /etc/pam.d/sshd 看起来像..

# 猫 /etc/pam.d/sshd

#%PAM-1.0

auth 包括系统身份验证

需要帐户 pam_nologin.so

帐户需要 pam_access.so

账户包括系统认证

密码包括系统身份验证

会话可选 pam_keyinit.so 强制撤销

会话包括系统身份验证

会话需要 pam_loginuid.so

答案4

我建议您使用Match中的功能sshd_config,并根据 IP(或子网)进行匹配。

这也允许您指定允许的功能。例如:您可能会说只有来自“内部”子网集的用户可以使用PasswordAuthentication(并且AllowRoot可能仅来自需要它的单个/小范围的 IP)。

还要注意,通过公钥进行的身份验证不会通过 PAM,因此如果您使用公钥身份验证,pam_access 将对您不起作用。

相关内容