为什么我们要在SSH上禁用root登录?
1. 概述
作为 Linux 管理员,我们被告知允许通过SSH 进行根登录是一种非常糟糕的做法和安全漏洞。但究竟是什么使这种做法成为一种不良做法呢?
在本教程中,我们首先解释为什么允许通过 SSH 进行 root 登录是一个安全问题。有了这些知识,我们就会提出一些最佳实践来使用。
2. 坏处
root 是基于 Unix 和 Linux 的系统中的超级用户帐户。一旦我们获得了 root 帐户的访问权限,我们就拥有了完整的系统访问权限。因为用户名始终是root,而且访问权限不受限制,所以这个账户是黑客最有价值的目标。
有很多机器人在 Internet 上扫描带有暴露的 SSH 端口的系统。当他们找到一个时,他们将尝试使用普通用户名登录并尝试猜测密码。
想象一下,一个机器人幸运地猜到了 root 密码。因为 root 授予了整台机器的访问权限,所以此时应该认为机器丢失了。
如果受感染的用户具有非特权访问权限,则影响会小得多。然后,违规行为将被遏制并仅限于该用户。
请注意,root 不是唯一的常用用户名。这同样适用于Apache 、MySQL 等应用程序的其他常见用户名。
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 密钥本质上是更安全的选择。