怎样(以及为什么)在 Linux 上通过 SSH 禁用 root 登录

以 Linux root 用户身份登录是不好的做法。 通过 SSH 连接以 root 身份登录更糟糕。 我们告诉您原因,并向您展示怎样预防。

两刃剑

您需要有权拥有和管理操作系统中那些对于普通用户来说太重要或太敏感而无法处理的部分的人。 这就是 root 的用武之地。root 是 Unix 和 Linux 操作系统的全能超级用户。

与所有帐户一样,root 用户帐户受密码保护。 如果没有 root 用户的密码,其他任何人都无法访问该帐户。 这意味着其他任何人都不能使用 root 的特权和权力。 另一方面,恶意用户和 root 权限之间的唯一防御就是密码。 当然,密码可以被猜测、推断、发现写在某处,或暴力破解。

如果恶意攻击者发现了 root 的密码,他们就可以登录并对整个系统做任何他们喜欢的事情。 使用 root 的提升权限,他们可以做的事情没有任何限制。 就好像 root 用户在没有注销的情况下离开了终端,允许机会主义地访问他们的帐户。

由于这些风险,许多现代 Linux 发行版不允许 root 在本地登录计算机,更不用说通过 SSH。 root 用户存在,但没有为他们设置密码。 然而,必须有人能够管理系统。 解决这个难题的方法是 sudo 命令。

sudo 允许指定用户在他们自己的用户帐户中临时使用 root 级别的权限。 您需要进行身份验证才能使用 sudo,您可以通过输入自己的密码来执行此操作。 这使您可以临时访问 root 的功能。

当你 close 使用它们的终端窗口。如果您让终端窗口保持打开状态,它们将超时,自动将您返回到常规用户状态。 这提供了另一种类型的保护。 它保护你免受自己的伤害。

如果您习惯性地以 root 而不是普通帐户登录,那么您在命令行上犯的任何错误都可能是灾难性的。 不得不使用 sudo 执行管理意味着您更有可能专注并小心您键入的内容。

允许通过 SSH 进行 root 登录会增加风险,因为攻击者不必在本地; 他们可以尝试远程暴力破解您的系统。

怎样审查 sudo Linux 上的命令用法

root 用户和 SSH 访问

当您为其他人管理系统时,您更有可能遇到此问题。 有人可能已经决定设置一个 root 密码以便他们可以登录。需要更改其他设置以允许 root 通过 SSH 登录。

这件事不会偶然发生。 但它可以由不了解相关风险的人来完成。 如果您接管了处于该状态的计算机的管理,您需要告知所有者为什么这是一个坏主意,然后将系统恢复到安全工作状态。 如果是以前的系统管理员配置的,业主可能不知道。

这是计算机上正在运行的用户 Fedora,以 Ubuntu 计算机的 root 用户身份与 Ubuntu 计算机建立 SSH 连接。

ssh [email protected]

Ubuntu 计算机允许 root 用户通过 SSH 登录。 在 Ubuntu 计算机上,我们可以看到 root 用户正在进行实时连接。

who

使用 who 命令列出已登录用户

我们看不到谁在使用该会话。 我们不知道SSH连接另一端的人是root用户还是设法获得root密码的人。

禁用 root 的 SSH 访问

要禁用 root 用户的 SSH 访问,我们需要更改 SSH 配置文件。 它位于“/etc/ssh/sshd_config”。 我们需要使用 sudo 将更改写入它。

sudo gedit /etc/ssh/sshd_config

编辑 sshd-config 文件

滚动文件或搜索字符串“PermitRootLogin”。

怎样(以及为什么)在 Linux 上通过 SSH 禁用 root 登录 1

将其设置为“否”或通过放置一个哈希“注释掉该行”#” 作为该行的第一个字符。 Save 你的改变。

怎样(以及为什么)在 Linux 上通过 SSH 禁用 root 登录 2

我们需要重新启动 SSH 守护程序,以便我们的更改生效。

sudo systemctl restart ssh

重新启动 sshd 守护进程

如果您还想阻止本地登录,请禁用 root 的密码。 我们正在采取腰带和大括号的方法,并同时使用 -l (锁定)和 -d (删除密码)选项。

sudo passwd root -ld

锁定 root 帐户并删除 root 密码

这将锁定帐户并将帐户密码删除到交易中。 即使 root 用户实际坐在您的计算机旁,他们也无法登录。

允许 root SSH 访问的更安全方法

有时您会遇到管理人员对通过 SSH 删除 root 访问权限的抵制。 如果他们真的不听,您可能会发现自己处于必须恢复它的位置。 如果是这种情况,您应该能够以一种降低风险的方式进行妥协,并且仍然允许 root 用户进行远程登录。

使用 SSH 密钥通过 SSH 建立连接比使用密码安全得多。 因为不涉及密码,所以它们不能被暴力破解、猜测或以其他方式发现。

在锁定本地 root 帐户之前,请在远程计算机上设置 SSH 密钥,以便 root 用户可以连接到本地计算机。 然后继续删除他们的密码并锁定他们的本地帐户。

我们还需要再次编辑“sshd_config”文件。

sudo gedit /etc/ssh/sshd_config

编辑 sshd-config 文件

更改“PermitRootLogin”行,使其使用“prohibit-password”选项。

怎样(以及为什么)在 Linux 上通过 SSH 禁用 root 登录 3

Save 您的更改并重新启动 SSH 守护程序。

sudo systemctl restart ssh

重新启动 sshd 守护进程

现在,即使有人恢复了 root 用户的密码,他们也无法使用密码通过 SSH 登录。

当远程 root 用户与您的本地计算机建立 SSH 连接时,会交换和检查密钥。 如果他们通过身份验证,root 用户无需密码即可连接到您的本地计算机。

ssh [email protected]

root 用户使用 SSH 连接到远程计算机而无需密码

禁止驶入

拒绝来自 root 用户的远程连接是最好的选择。 允许 root 使用 SSH 密钥进行连接是次优的,但仍然比使用密码好得多。

怎样控制 sudo 在 Linux 上访问