我们应该禁用root用户吗?


Answers:


16

我所有的服务器都禁用了root帐户(sp_pwdp设置为*)。这是sudo所有root访问权限所必需的。[1] 这样做的目的是审核所有超级用户活动,以便人们可以看到对系统所做的事情。

要获得更严格的选择,您可以sudo写入日志文件(而不是syslog),并使该文件仅添加(chattr在Linux或chflagsBSD上使用)。这样,没有人可以随后编辑审核。

[1]我还有一个策略,就是不运行root shell,或者不进行root进程的shell转义。(不过,可以使用它sudo sh -c '...'进行管道或重定向。)


3
“也没有炮弹!” 嗯,您知道其中有多少个程序具有“ drop to shell”命令吗?甚至您开始查看shell作业控制之前……
womble

我说的是“无壳”作为一种策略,而不是作为sudo选项。(sudo确实具有noexec选项,但是除非您限制用户能够运行的特定程序,否则它显然是不防水的。)
Chris Jester-Young

是否可以配置sudo以便不能使用“ sudo -s”?我仅使用sudoer来配置单个命令。

@Graham:可以。但是,如您从上面的注释中看到的那样,如果您的用户可以运行其他任何东西,那也不会停止任何事情。唯一的防水解决方案是白名单方法,您可以在其中列出用户可以运行的特定程序,并且必须将它们全部动态链接(这样,“ noexec”选项才能发挥作用)。
克里斯·杰斯特·杨

作为您信任管理员的政策,这很好。您可以看到人们执行哪些命令,这在尝试找出已更改的内容时会很有帮助。
Hamish Downer

15

强调建议您不要禁用root用户。禁用或限制root登录(通过securetty 通过sshd_config PAM 以及您拥有的工具)如果系统允许,则限制root的特权或分割root角色(类似于RSBAC的工作方式。)但是,执行请勿通过删除密码来禁用root帐户,否则将无法通过登录到系统suloginsulogin在fsck报告的严重错误的情况下,所有已知的initscript都会使用该命令-这意味着如果根文件系统损坏,您将被锁定在系统之外。

需要说明的是:“通过删除密码来禁用根帐户”是指各种以!结尾的机制。或/ etc / shadow的密码字段中的*或类似名称。我的意思不是“更改root登录机制,以免提示您输入密码”。


在像Ubuntu这样从未设置根密码的系统中,这是一个问题吗?我似乎能够执行“ sudo sulogin”,但是也许我不理解其中的一个关键方面。
jldugger

不幸的是,我不熟悉Ubuntu处理root的方式。但是,如果您能够执行“ sudo sulogin”而无需提示输入root密码就获得root shell,那么不会,这不是问题,因为可以想象的是,相同的机制将在启动时应用。您可以尝试通过初始化脚本查找grepping sulogin,以检查何时以及如何调用它。
MihaiLimbăşan,2009年

1
Ubuntu不使用sulogin。如果进入单用户模式,您将立即获得root shell。但是,请阅读我的评论(在我的文章中),以了解在大多数情况下这不是问题的原因。
克里斯·杰斯特·杨

此外,有人声称拥有系统susudo在系统中对用户可用意味着如果只有专用的root用户,则可以避免更多的安全风险。Owl安全发行版的作者(以及其中的Solar设计师) 主张的立场是unix.stackexchange.com/questions/8581/…试图用参考文献介绍他们的立场。
imz-伊万·扎哈拉里舍夫(Ivan Zakharyaschev),2011年

我只是遇到了一个非常问题:我锁定了我的root用户,并且由于硬重置而强制执行fsck。幸运的是,我可以使用该fastboot选项引导故障的Linux ,解锁root帐户,然后重新启动以最终最终fsck手动运行。
tommyd 2013年

3

我在所有服务器上启用了root帐户。所有管理员都有自己的用户,并且必须通过该用户登录。从那里他们切换到根。(禁用root ssh)

保持管理员人数少。只有真正需要该服务器上的root访问权的人员才能使用该密码。

我不喜欢sudo。仅对根shell执行“ sudo bash”太容易了。我知道可以禁用此功能,但为什么要打扰呢?只是限制可以执行管理员任务并彼此交谈的用户。我们确实有一项政策,不允许无人看管的根终端打开。这样就可以登录,su,完成工作,然后注销。

注意:我在一家规模不大的公司(有50名左右的雇员)工作,而我们只有2个兼职管理员(1个Windows / 1个Linux)。当您的用户数量增加了几个数量级时,这种处理方法可能不是最佳方法。我个人仍然不会使用sudo。还有其他方法可以记录根活动。


如果您想从控制台获得root shell,则可以执行'sudo -i'而不是从sudo bash中打开它。我个人真的不喜欢直接以root用户身份登录的想法,因为这对于恶意跟踪来说太危险了(即,在root shell打开的情况下意外地使计算机处于未锁定状态)。
Spoike

但是,您将因此失去日志记录/审计功能。让每个人都使用sudo,并禁止人们使用公司策略执行sudo bash或sudo -i或sudo -s。这为您提供了审计跟踪,并且如果您将所有日志都推送到中央日志主机,这是因为可以轻松地验证人们是否遵循这些策略。
Christopher Cashell

这就是Owl安全发行版的作者(以及其中的Solar设计师)所采用和倡导的方法 -unix.stackexchange.com/questions/8581/…试图通过引用来表达自己的立场。
imz –伊万·扎哈拉里舍夫(Ivan Zakharyaschev)2011年

2

禁用root密码是不正确的“好主意”。在您需要它的那一天,您将真正需要它。(例如,根据您的配置,您可能需要它以单用户模式登录)

禁用root远程登录可能很重要,但前提是您能够本地登录。

是的,sudo应该安装在您的每台服务器上。它非常有用且易于配置。您为什么不想使用它?


如果引导到单用户模式是grub选项怎么办?
jldugger,2009年

禁用根帐户的目的是什么?如果您制动sudo二进制文件或配置(或使用的任何工具),该怎么办?
贝努瓦

Disabling root remote login might be relevant but only if you are able to log on locally.这只是公然的错误。您可以使用任何帐户远程登录;禁用root远程登录并不会将您限制为本地访问。
2015年

2

我只是禁用root用户的SSH访问,并要求用户(通常只是开发人员)使用ssh密钥。词典攻击太多了,更改SSH端口对我们来说不是一个选择。

这样一来,您就不必相信任何人都可以编写良好的密码。进入内部后,只有管理员有权使用sudo。


无论如何,更改SSH端口是没有意义的。一个简单的portcan可以轻松将其释放。当我远程登录到计算机上的端口22时,我得到SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
Matt Simmons

@MattSimmons是的,但是大多数字典攻击是自动的,而且非常基础。他们不必理会端口扫描。他们尝试连接到端口22上的随机IP地址,如果超时,则将其移至列表中的下一个IP。这不是安全措施,它只是有助于摆脱自动端口22攻击。显然,有针对性的攻击是完全不同的。
2015年

2

我知道此线程确实很旧,但是链接的文章逻辑中存在一些重大缺陷,我感觉很“恼人”-sudo允许将白名单和黑名单同时存在。不仅仅是链接文章中指定的黑色-跳过了AAA(身份验证,授权和审核)的想法-su和sudo允许分级身份验证和问责制。

方案1管理员意外将一些恶意代码引入系统,以root用户身份登录,该代码具有完全访问权限,并且管理员可能永远不知道发生了什么。至少对于分级登录(例如su / sudo),如果流氓代码试图使用提升的权限,系统将提示管理员进行身份验证...如果不提升,则其仅限于用户权限,这将导致最小的损失。

方案2:流氓管理员想要获取信息/进行更改。他们连接到控制台(物理控制台访问权限,HP iLo /类似端口或vGuest控制台访问权限),以root用户身份登录并执行所需的任何操作。除非使用命名的帐户/访问卡来获得控制台访问权限,否则可能没有太多的审计线索。

  1. 确保他们确实是他们所说的。身份盗用不是问题,身份验证才是问题。
  2. 检查他们的授权,只给他们他们当时需要的东西。分级授权使他们可以在需要时提升权限。
  3. 审核所有内容并进行记录,以便您了解谁,在何时何地执行了哪些操作。最好还是为什么

1

您应该要求每个人都将sudo用作每个root命令的策略。从来没有理由运行“ sudo bash”之类的东西,只是出于方便,由于无知或掩盖了自己的足迹。

如果直接禁用对root帐户的登录,则会在出现严重问题时削弱修复系统的能力。

如果您不能说服管理员自己登录并为以root用户身份运行的每个命令运行sudo,并且不将其分解为外壳程序,那么您将面临严重的问题,而这是没有技术解决方案的。


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.