如何在 Ubuntu 中禁用 root 登录?

Ben*_*ers 33 login root

不久前,我给了 root 一个密码,这样我就可以以 root 身份登录并完成一些事情。现在我想禁用 root 登录以加强安全性,因为我要将我的服务暴露给互联网。我已经看到了几种这样做的方法(sudo passwd -l root,摆弄/etc/shadow,等等),但没有任何地方说明最好/最明智的做法是什么。我已经这样做了,sudo passwd -l root但我看到一些建议说这会影响初始化脚本,而且它并不像看起来那么安全,因为如果您尝试登录,它仍然会要求输入密码,而不是完全拒绝访问。那么实现这一目标的方法是什么?

编辑:澄清一下,这是以root身份进行本地登录;我已经禁用了通过 SSH 的远程登录。尽管尝试通过 SSH 以 root 身份登录仍然会提示输入 root 的密码(总是失败)。那不好吗?

jsc*_*ott 37

对我来说,禁用 root 是值得的潜在问题值得商榷。我从未测试过以这种方式配置的服务器。我的偏好是只允许 root 本地访问。如果攻击者可以物理访问您的服务器,您无论如何都可以忘记为“保护”安装所做的一切。

ssh通过编辑/etc/ssh/sshd_config包含以下内容来禁用 root访问:

PermitRootLogin no
Run Code Online (Sandbox Code Playgroud)

摆弄/etc/shadowchsh -s /bin/false root所有这些都可以通过一个简单的可引导 CD/拇指驱动器来完成。

根据您的评论更新:

来自help.ubuntu.com“默认情况下,root 帐户密码在 Ubuntu 中是锁定的”。请具体参阅“重新禁用您的 root 帐户”一节。为了重置 root 帐户的状态,要 install-default,请使用以下命令:

sudo usermod -p '!' root
Run Code Online (Sandbox Code Playgroud)

  • sudo service ssh restart .......这样做之后。 (5认同)

kyn*_*nan 26

我假设您指的是通过 ssh 远程登录。将以下行添加到/etc/ssh/sshd_config

PermitRootLogin no
Run Code Online (Sandbox Code Playgroud)

并重新启动 ssh 服务

sudo service ssh restart
Run Code Online (Sandbox Code Playgroud)

这应该可以完成工作,您可以保持您的 root 帐户原样(或者,如果您认为有必要,请尝试禁用它)。


Rya*_*ler 5

主要问题已经回答了几次,但次要问题没有。SSH 作为安全功能禁用后,进入 root 后会提示输入密码。如果您尝试以 lkjfiejlksji 身份登录,它也会触发。

这是为了防止有人测试一堆用户名,试图找出哪些用户名在您的系统上有效。但是,从安全角度来看,如果您通过 SSH 禁用了 root,我还会设置一个暴力检测程序(如 fail2ban),并设置它以便如果有人甚至尝试以 root 身份登录,它会阻止他们尝试任何额外的攻击。