使用 sshd_config 来限制 root 登录?

使用 sshd_config 来限制 root 登录?

使用 ubuntu 12.04,我想使用 sshd_config 将来自 root 的 ssh 会话限制到固定的 IP 子集。我希望普通用户能够从任何地方进行 ssh,但 root 只能从 IP 范围(我的本地子网)以及此范围之外的一个 IP(我的异地备份服务器)进行 ssh。

对于我的备份解决方案来说,需要通过 ssh 进行 root 访问,因此使用

PermitRootLogin 否

不是一个解决方案。同时,我不想让所有人和他们的妈妈都拥有 root 权限,从而不必要地危害我的系统。

我目前在 sshd_config 中有以下内容:

AllowUsers *@*
DenyUsers root@*
AllowUsers [email protected].*
AllowUsers [email protected]

其中本地子网和异地备份号码是正确的。

这不起作用。有什么提示可以让它工作吗?为什么?sshd_config 的文档并没有帮助我理解 AllowUsers 和 DenyUsers 如何交互。

答案1

考虑简单地使用 SSH 密钥以 root 身份登录 ( PermitRootLogin without-password)。可以使用 authorized_keys 中的选项将每个密钥限制为特定的源地址from="1.2.3.4,8.9.0.0/24,::1"

手册页位于“AllowUsers”下方,说:

允许/拒绝指令按以下顺序处理:DenyUsers、AllowUsers、DenyGroups,最后是 AllowGroups。

– 因此,如果 DenyUsers 条目匹配,则根本不会检查任何其他规则。

答案2

在 /etc/ssh/sshd_config 中,确保在配置的主要部分设置了以下内容

PermitRootLogin no

并将其附加到配置文件的末尾。现在 root 只能从本地地址登录。

Match Address 192.168.0.*,127.0.0.1
PermitRootLogin yes

我认为此功能已存在近 2 个主要版本,因此...令人惊讶的是没有人早点回答这个问题。

比赛结束后你还可以做其他事情,比如启用端口转发等......

相关内容