我现在在哪里工作,就像其他人一样,我被迫使用root帐户。 没有其他用户。 甚至没有在数据库中。 我的老人向我解释说,这是为了方便起见。
我真的知道这是错误的,但我真的很想有一个真实的例子或一个非常有说服力的理论,所以我可以向他们certificate这是多么的错误。 不是为了报复或类似的东西,但也许可以帮助他们更多地了解风险,并提高我们的安全。
事实上,以根为根本的工作真的很有压力。 在我的家庭networking(和男孩是一个大的虚拟主机networking),我甚至不敢作为根login..
他们意识到意外清除或修改关键文件和文件夹的威胁。 意外的权限更改的威胁。
他们坚持认为,我们必须再次检查我们的程序和我们的行为,然后按下“enter”button。
还有什么可能出错?
我怀疑是外部攻击(阿帕奇明智)。 也是一个stream氓程序。 stream氓程序可以通过apache的错误权限来控制吗?
还有什么可能的? 谢谢!
让我们只需从networking服务器上删除一些旧的日志。 没有必要login作为networking帐户,我们得到了根。
rm -rf / var/www/logs/2010.log
Woops! 不应该是根。
呃..我做了很多坏事。 我曾经写过一个应该(除其他外)定期清理一个名为/foo的目录的脚本。 所以脚本以root身份执行,并执行如下操作:
cd /foo rm -rf *
有一天,由于我们的SAN存在一些问题, /foo目录不存在。 结果:灾难。
这当然是一个写得不好的脚本, 应该是:
cd /foo && rm -rf *
但它显示了如果你有太多的特权,做一些严重不好的事情是多么的容易。
当所有人以root身份login时,您遇到的另外一个问题就是您失去了整个可追踪性/可审计性的事情。 谁知道谁做了什么? 这真的可以接受吗?
问自己(和你的雇主)的问题是:你需要做什么,需要你做根?
在这个特别的话题上,我真的比Solaris更喜欢Solaris。 (请不要火焰,我只是在谈论根用户的话题)。 即使你不在Solaris上,我也相信Solaris可以从中学到东西。 你也许可以在Linux上模仿一些。
Solaris(更高版本)默认情况下不允许您以root用户身份login。 事实上,根已成为一个angular色,而不是一个普通的用户。 如果您拥有足够的权限并且知道root密码,那么您当然可以login到root用户,但是只有先以自己的身份login到主机后才能login到root用户。 通过这种方式,您始终可以查看谁使用了root帐户。
此外,您还可以在Solaris上设置完整的权限设置,例如,您可以将特权绑定到特定服务的套接字<1024上。 在Linux上,这个过程必须由root启动。 其次,您拥有RBAC和授予SMF特权(有权启动,停止或pipe理给定的服务)。 有了这个,很less有需要做任何真正的根。
Solaris真的 – 它是现成的configuration,以及它提供的function – 不鼓励你使用root,并使它很容易永远不会使用root帐户。 我希望有一天能在Linux上看到同样的进步。
你的老板反驳所有这一切是需要时间来定义和configuration。 这是真的,但你的网站似乎很大。 所以关键是标准化 。 通过利用您的操作系统带给您的function,一劳永逸地定义这些angular色。 然后在所有的服务器上进行标准化。 我想提出的另一个关键词是最小特权原则 。 你永远不应该有比你的工作要求更多的特权。 不幸的是,如果您的操作系统的权限模型和委派模型细化得很好,您可能会看到您的操作系统在过去的10 – 15年内在这方面取得了巨大的进步,因此可能不再存在需要你以root身份login?
Apache httpd不应该以root身份运行。 期! 如果您的networking服务器被黑客攻击,那么入侵者突然拥有root权限。 您的操作系统可能会强制您以root身份启动它,但是httpd httpd具有立即切换到另一个用户的function。 在Apache httpd的configuration文件中查看User和Group设置。
完全愚蠢! 这只是要求麻烦。 我认为老年人需要为了方便而被解雇。
除了不小心做错了某些事情(比如rm -rf /如果你不是root的话那么会有有限的效果),如果有人因为犯了一个愚蠢的错误而被解雇了,而这个错误会杀死一个关键的服务器。 他们可能只是生气,远程login,并取消networking,或更改根密码,以便没有人可以login和encryption根分区,否则真的搞砸你的networking! 你猜怎么了? 谁也不知道是谁做的,因为他们使用了每个人都知道密码的root帐号,包括所有的前员工。
我强烈build议你设置一些用户帐户,只为那些需要这样的访问。 需要root权限的地方使用sudo。 你也可以限制每个用户或每个组他们可以用sudo做什么,哪些程序可以运行等等。
现在,如果员工离职,只需删除该账户即可删除该用户。
这太愚蠢了,很难解释为什么这么糟糕。
你问了一些可能出错的例子。 这里有一个:
而且,只是说,也许操作系统的根密码和数据库的根密码是一样的?