不久前,我给了 root 一个密码,这样我就可以以 root 身份登录并完成一些工作。现在我想禁用 root 登录以加强安全性,因为我将把我的服务暴露给互联网。我已经看到了几种这样做的方法(sudo passwd -l root
,摆弄/etc/shadow
,等等),但没有任何地方说最好的/最明智的做法是什么。我已经这样做了,sudo passwd -l root
但我看到的建议说这会影响 init 脚本,而且它并不像看起来那么安全,因为如果您尝试登录,它仍然会要求输入密码,而不是直接拒绝访问。那么实现这一点的方法是什么呢?
编辑:澄清一下,这是用于以 root 身份进行本地登录;我已经禁用了通过 SSH 进行远程登录。虽然尝试通过 SSH 以 root 身份登录仍然会提示输入 root 密码(总是失败)。这很糟糕吗?
答案1
对我来说,禁用 root 权限是否值得冒这个险,这一点值得商榷。我从未测试过以这种方式配置的服务器。我倾向于只允许 root 本地访问。如果攻击者可以物理访问您的服务器,您就会忘记您为“保护”您的安装所做的一切。
ssh
通过编辑来禁用 root访问权限/etc/ssh/sshd_config
,其中包含:
PermitRootLogin no
摆弄一下/etc/shadow
,chsh -s /bin/false root
只需一张简单的可启动 CD/拇指驱动器即可撤消所有操作。
根据您的评论更新:
从帮助中心:“默认情况下,Ubuntu 中的 root 账户密码是锁定的“。请具体参阅“重新禁用您的 root 帐户”一节。要重置 root 帐户的状态,请使用以下命令:
sudo usermod -p '!' root
答案2
我假设你指的是通过 ssh 进行远程登录。将以下行添加到/etc/ssh/sshd_config
:
PermitRootLogin no
并重新启动 ssh 服务
sudo service ssh restart
这应该可以完成这项工作并且您可以保留您的 root 帐户(或者如果您认为有必要,无论如何尝试禁用它)。
答案3
主要问题已经回答过几次了,但次要问题还没有回答。在禁用安全功能后,进入 root 后 SSH 会提示输入密码。如果您尝试以 lkjfiejlksji 身份登录,也会触发此操作。
这是为了防止有人测试一堆用户名,试图找出哪些用户名在您的系统上有效。但是,从安全角度来看,如果您已禁用 SSH 上的 root 权限,我还会设置一个暴力破解检测程序(如 fail2ban),并将其设置为如果有人试图以 root 权限登录,它会阻止他们尝试任何其他攻击。
答案4
JR 等人,
您的 AllowUsers 让我找到了这个https://help.ubuntu.com/community/SSH/OpenSSH/Configuring
sudo vi /etc/ssh/sshd_config
PermitRootLogin 是(更改为否)
(在文件底部添加行)DenyUsers user1 user2
保存并退出,然后
sudo 服务 ssh 重启
解决了我的问题。谢谢大家。