如何在Ubuntu中禁用root登录?


27

不久前,我给root设置了密码,以便我可以root身份登录并完成一些工作。现在,我想禁用root登录以加强安全性,因为我将把服务公开到Internet。我已经看到了几种执行此操作的方法(sudo passwd -l root,喜欢摆弄/etc/shadow,依此类推),但是没有任何地方说明这样做的最好/最明智的方法是什么。我已经做完了,sudo passwd -l root但是我已经看到一些建议,说这可能会影响初始化脚本,并且它看起来并不安全,因为如果您尝试登录,它仍然会要求输入密码,而不是完全拒绝访问。那么实现该目标的方法是什么?

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


1
对root用户禁用本地访问几乎带来了零安全收益。与用户物理访问可以PWN以无数种方式你的盒子。
jscott 2010年

点了。如果您只需取出硬盘驱动器,则无需以root用户身份登录。我仍然想知道如何将根帐户恢复为更改之前的状态,即使现在只是出于好奇。
本·海默斯

请在下面查看我的答案的更新。我想我现在明白您的要求了。
jscott 2010年

禁用root时@jscott可能无法提供抵御入侵的安全优势,但不能以root身份登录提供了安全开关,可防止因放错rm命令等破坏系统。我从艰难的道路中学到了一些东西。是的,根本无法以root用户身份登录,但是从sys admin的角度来看,禁用它确实很有意义。
codechimp

似乎非常适合VPS或托管,真的没必要。
jjxtra

Answers:


33

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

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

PermitRootLogin no

摆弄/etc/shadowchsh -s /bin/false root可以使用简单的可启动CD / 拇指驱动器撤消所有操作。

根据您的评论更新:

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

sudo usermod -p '!' root

当攻击者可以物理访问该系统时,没有系统是安全的。当您可以编辑/ etc / shadow时,是什么阻止您编辑/ etc / ssh / sshd_config?
斯文

@SvenW:是的。这就是为什么我在安全方面争论甚至困扰到“禁用”根源的有用性的原因。限制root的访问,是的。禁用帐户,否。
jscott 2010年

4
sudo service ssh重新启动.......之后。
Naweed Chougle '16

引用的帮助文件现在提供以下命令:sudo passwd -dl root
MrG

21

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

PermitRootLogin no

然后重新启动ssh服务

sudo service ssh restart

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


抱歉,我应该说,这是用于本地登录。我已经更新了问题。
本·海默斯

4

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

这是为了防止某人测试一堆用户名,试图找出在您的系统上有效的用户名。但是,从安全角度来看,如果您已通过SSH禁用了root,我还将设置一个蛮力检测程序(例如fail2ban),并将其设置为即使有人尝试以root身份登录,也会阻止他们尝试任何其他攻击。


好答案,谢谢!我已经设置了fail2ban,我将其配置为在首次尝试以root身份登录时阻止,这是很好的建议。
本·海默斯

2

最好的方法是恕我直言,在/ etc / shadow(第二个字段,第一个':'之后)中用*替换加密的密码。另外,请停用ssh的root登录(通过这种方式,根本不可能通过ssh作为root登录),并且可能将ssh限制为证书登录,这比基于密码的登录安全得多。

在大多数情况下,SSH应该是唯一可以从外部访问的,可能允许root登录的服务,因此该门将被锁定。

为了进一步限制这种情况,您可以安装fail2ban之类的东西,它会在多次尝试登录失败后在一定时间内禁止IP地址。


根据接受的答案,我感觉“ *”与“!”相同,所以我也将这个答案投赞成票。
Ben Hymers 2010年


0

如果要禁用本地root登录,则可以尝试修改/ etc / passwd并将/ bin / bash替换为/ bin / false。但是,由于我尚未测试过,所以我说让根会话在侧面打开,对其进行测试,如果有任何奇怪的副作用,请将其改回。


0

回复:安全。

恕我直言,出于安全考虑,您只能做很多事情,只需拔下盒子的插头,将其与网络断开连接,然后将其焊接在3英寸厚的防弹硬质合金钢盒子内即可。

这样想吧-如果人们可以入侵国防部,中央情报局,联邦调查局和花旗银行-我们其余的凡人就再好不过了。

回复:SSH安全。

我不仅禁止通过ssh进行根访问,而且还将“ AllowUsers”参数设置为我的用户名,也只设置了我的用户名。这样,除了我自己的用户外,没有人可以通过ssh登录。这可能是多余的,因为就我自己而言,无论如何我只能创建一个非root用户。

不幸的是,正如其他人之前多次说过的,只要有人能物理上接近盒子,所有的赌注都将关闭!

ssh登录的证书交换?嗯 。。。听起来不错。你怎么做呢?

吉姆(JR)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.