如何仅允许来自本地网络的 root 用户通过 ssh 进行操作?

如何仅允许来自本地网络的 root 用户通过 ssh 进行操作?

我已经在 CentOS 6.5 机器上安装了 Google-Authenticator,并配置了某些用户提供 OTP。

在编辑时,/etc/ssh/sshd_config我看到一个指令“ PermitRootLogin”,默认情况下它被注释掉了。

我想设置“ PermitRootLogin no”,但仍然能够仅从本地网络以 root 身份 ssh 到机器。

那可能吗?

答案1

使用Match配置参数/etc/ssh/sshd_config

# general config
PermitRootLogin no 

# the following overrides the general config when conditions are met. 
Match Address  192.168.0.*
    PermitRootLogin yes

man sshd_config

答案2

Match address方法已经提到过,但您也可以限制允许登录系统的用户(或组)。例如,要限制用户itai(从任何地方)和root(从特定网络)的登录,请使用:

AllowUsers itai [email protected].*

这将阻止所有其他用户(如apache)通过 SSH 登录。

AllowUsers另请参阅sshd_配置(5)手动的。

答案3

另一种策略是保留所有地址的PermitRootLogin设置no,但允许其他用户登录并使用 sudo。这样做的一个好处是,您可以使用 sudo 配置限制该用户。除了限制管理员用户可以从哪些 IP 地址登录之外,这又增加了一层保护。

在 中/etc/ssh/sshd_config,禁用 root 登录:

PermitRootLogin no

创建另一个用户,例如,admin。在此用户的授权密钥文件中配置允许的 IP 地址/home/admin/.ssh/authorized_keys

from="192.168.0.0/24,fe80::%eth0/64" <your public key here>

在此示例中,我还允许来自IPv6 链路本地地址。如果您使用可能解析为 IPv6 地址的 mDNS,或者即使路由中断也需要访问服务器,这将非常有用。请注意,eth0地址的一部分将根据服务器上的接口名称而变化。使用ifconfigip link列出服务器的有效网络设备。

相关内容