Contents

为什么我们要在SSH上禁用root登录?

1. 概述

作为 Linux 管理员,我们被告知允许通过SSH 进行根登录是一种非常糟糕的做法和安全漏洞。但究竟是什么使这种做法成为一种不良做法呢?

在本教程中,我们首先解释为什么允许通过 SSH 进行 root 登录是一个安全问题。有了这些知识,我们就会提出一些最佳实践来使用。

2. 坏处

root 是基于 Unix 和 Linux 的系统中的超级用户帐户。一旦我们获得了 root 帐户的访问权限,我们就拥有了完整的系统访问权限。因为用户名始终是root,而且访问权限不受限制,所以这个账户是黑客最有价值的目标。

有很多机器人在 Internet 上扫描带有暴露的 SSH 端口的系统。当他们找到一个时,他们将尝试使用普通用户名登录并尝试猜测密码。

想象一下,一个机器人幸运地猜到了 root 密码。因为 root 授予了整台机器的访问权限,所以此时应该认为机器丢失了。

如果受感染的用户具有非特权访问权限,则影响会小得多。然后,违规行为将被遏制并仅限于该用户。

请注意,root 不是唯一的常用用户名。这同样适用于ApacheMySQL 等应用程序的其他常见用户名。

3. 最佳实践

现在我们知道允许通过 SSH 进行 root 登录是不好的,是时候进行一些测量了。让我们来看看一些最佳实践。

3.1. 禁用根 SSH

首先,我们禁用 SSH root 登录。我们通过编辑 SSH 守护进程配置来完成此操作,该配置通常位于*/etc/ssh/sshd_config* 中。我们必须确保它包含以下行:

PermitRootLogin no

此外,因为我们不想把自己锁在外面,所以我们确保我们的普通用户仍然可以通过用户名登录:

AllowUsers username

或按组:

AllowGroups groupname

保存更改后,我们必须重新启动sshd服务才能使它们生效。

3.2. 使用sudo

出于管理目的,我们仍然时不时地需要以 root 身份执行某些任务。为此,我们应该养成使用*sudo *的习惯。

使用sudo,我们无需成为 root 用户就可以充当 root 用户。这也有一个不太明显的好处。因为我们通过sudo执行的每项任务都是在我们自己的使用下执行的,而不是在通用 root 帐户下执行的,所以它将以我们自己的用户名显示在日志中。

3.3. 使用 SSH 密钥

尽管由于不常见的用户名而不太可能,但普通用户帐户仍然容易受到机器人猜测密码的攻击。此外,人们倾向于选择弱密码或重复使用密码以使它们更容易记住。

虽然可以通过选择强密码(比看起来更难)或限制失败的登录尝试来减轻密码猜测,但最好完全摆脱密码。 除了密码,我们还可以使用SSH 密钥 登录。设置完成后,我们应该在*/etc/sshd_config*中禁用密码登录:

PasswordAuthentication no

并重启sshd服务。

与密码不同,私钥几乎不可能被猜到。因为窃取私钥比猜测(弱)密码要难得多,所以使用 SSH 密钥本质上是更安全的选择。