![我工作的地方每个人都以 root 身份登录](https://linux22.com/image/608489/%E6%88%91%E5%B7%A5%E4%BD%9C%E7%9A%84%E5%9C%B0%E6%96%B9%E6%AF%8F%E4%B8%AA%E4%BA%BA%E9%83%BD%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E7%99%BB%E5%BD%95.png)
在我现在工作的地方,我被迫像其他人一样使用 root 帐户。没有其他用户。甚至在数据库中也没有。我的前辈向我解释说,这样做是为了方便。
我确实知道这是错误的,但我真的希望有一个现实生活中的例子或一个非常有说服力的理论例子,这样我就可以向他们证明这是多么错误。不是为了报复或类似的事情,但也许可以帮助他们更多地了解风险并提高我们的安全性。
实际上,以 root 身份工作确实很有压力。在我的家庭网络中(这是一个很大的家庭 vm 网络),我甚至不敢以 root 身份登录。
他们意识到意外删除或修改重要文件和文件夹的威胁,以及意外更改权限的威胁。
他们坚持要求我们在按下“输入”键之前必须仔细检查我们的程序和行为。
还有什么可能出错?
我怀疑是外部攻击(apache 方面)。也是一个恶意程序。恶意程序能否通过 apache 的错误权限来控制?
还有什么可能?谢谢!
答案1
让我们从网络服务器中删除一些旧日志。无需以网络帐户登录,我们拥有 root 权限。
rm -rf / var/www/logs/2010.log
哎呀!不应该是 root。
答案2
嗯...我以 root 身份做过很多坏事。我曾经写过一个脚本,它应该(除其他外)定期清理一个名为 的目录/foo
。因此,该脚本以 root 身份执行并执行了如下操作:
cd /foo
rm -rf *
有一天,/foo
由于我们的 SAN 出现一些问题,目录不存在了。结果:灾难。
这当然只是一个写得很差的脚本;它应该是:
cd /foo && rm -rf *
但它向你展示了如果你拥有太多特权就会很容易做出非常糟糕的事情。
当每个人都以 root 身份登录时,您面临的另一个问题是,您会失去整个可追溯性/可审计性。谁知道谁做了什么?这真的可以接受吗?
您需要问自己(和您的雇主)的问题是:您需要做什么才需要您成为 root ?
在这个特定主题上,我确实更喜欢 Solaris,而不是 Linux。(请不要发火,我只是在谈论 root 用户的主题)。即使您没有使用 Solaris,我相信也可以从 Solaris 的做法中学到一些东西。您也许可以在 Linux 上模仿其中的一些做法。
Solaris(更高版本)默认根本不允许您以 root 身份从外部登录。事实上,root 已成为一个角色,而不是普通用户。如果您拥有足够的权限并知道 root 密码,那么您当然可以以 root 身份登录,但前提是先以您自己的身份登录主机,然后 su 进入 root。这样,您就可以始终看到谁使用了 root 帐户。
此外,在 Solaris 上,您可以设置整个细粒度的权限,例如,您可以将绑定到小于 1024 的套接字的权限分配给特定服务。在 Linux 上,这样的进程必须由 root 启动。其次,您拥有 RBAC 和 SMF 权限委派(启动、停止或管理给定服务的权限)。有了这个,几乎不需要任何事物确实以 root 身份完成。
Solaris 确实 - 顺便说一下,它的开箱即用配置以及它提供的功能 - 不鼓励您使用 root 并且很容易永远不使用 root 帐户。我希望有一天能看到 Linux 取得同样的进步。
你的老板对此的反驳是,定义和配置需要时间。这是真的,但你的网站似乎很大。所以关键词是标准化。利用操作系统提供的功能一劳永逸地定义这些角色。然后在所有服务器上进行标准化。我想提出的另一个关键词是最小特权原则。您拥有的权限绝不应超过工作所需的权限。不幸的是,您只能听命于操作系统的权限模型和委托模型的精细程度,但仔细阅读后,您可能会发现您的操作系统在过去 10-15 年中在这方面取得了巨大进步,因此也许您不再需要以 root 身份登录?
Apache httpd 不应以 root 身份运行。就是这样!如果您的 Web 服务器遭到黑客攻击,入侵者就会突然拥有 root 权限。您的操作系统可能会强制您以 root 身份启动它,但 apache httpd 具有立即切换到其他用户的功能。查看Apache httpd 配置文件中的设置User
。Group
答案3
太愚蠢了!这简直是自找麻烦。我认为应该为了方便而解雇这些前辈。
除了意外犯错(比如,rm -rf /
如果您不是 root 用户,这种错误的影响会非常有限)之外,如果有人因为犯了一个愚蠢的错误而导致关键服务器宕机,他们可能会非常生气,远程登录并关闭网络,或者更改 root 密码,这样就没有人可以登录并加密 root 分区,或者以其他方式真正扰乱您的网络!猜猜怎么着?没有人知道是谁干的,因为他们使用了 root 帐户,每个人都知道该帐户的密码,包括所有前员工。
我强烈建议您设置某种用户帐户,并且只为需要此类访问权限的用户设置。需要 root 访问权限时请使用 sudo。您还可以限制每个用户或每个组使用 sudo 可以执行的操作、可以运行哪些程序等。
现在,如果有员工离职,您只需删除帐户即可删除该用户。
答案4
这太愚蠢了,很难解释为什么这如此糟糕。
您要求举例说明可能出现的问题。下面是一个例子:
- 如果所有使用数据库服务器的应用程序都使用具有所有数据库读/写权限的帐户登录,则单个 Web 应用程序(例如带有错误或过时插件的 WordPress 网站)可以授予对所有数据库的访问权限。数据可能会被盗或被删除。
而且,只是说,也许操作系统根密码和数据库根密码是相同的?