具体来说,我使用鱼壳。我真的很想在我的生产服务器上使用它,并将其设置为 root 帐户的默认 shell,但我想知道,鉴于它是一个 shell,在这样做之前,我是否应该注意任何特定的安全问题。我猜它不会比服务器上的任何其他应用程序更具安全风险,因为它只在登录后运行,但不知何故在生产服务器上使用它作为默认的 root shell感觉不太安全。
我的主要问题是:安装非标准 shell 并将其设置为 root 用户的默认 shell 是否会比安装任何其他应用程序带来额外的安全风险?
编辑:目前的答案没有回答这个问题,可能是因为我说得不清楚。让我试着更准确地解释一下为什么我觉得答案不完整。
当然,安装任何新软件时,都存在安全漏洞的风险。根据使用情况,某些软件需要比其他软件更加谨慎 - 例如,安装 Web 服务器本质上会引入新的攻击媒介,因此,与安装图像转换实用程序相比,我们在安装一些不太常见的 Web 浏览器时会更加谨慎。我想知道贝壳是否也应该受到更仔细的审查,如果是,为什么。
另外,我想知道将非标准 shell 设置为 root 用户的默认 shell 是否会带来额外的安全隐患。到目前为止,我的做法是,即使在家用机器上,也以我自己的用户默认运行 fish shell,但根本不以 root 身份运行它。这种担心有必要吗?如果有,为什么?
到目前为止,答案表明我不应该这样做,但在我看来,并没有令人满意地解决这个问题为什么。实际上,没有人只使用服务器上的默认软件,很多附加程序都安装在服务器上,没有太多的安全问题,那么为什么 shell 尤其需要谨慎呢?理想情况下,我希望看到一个示例场景,其中安装一些非标准 shell 作为 root 的默认 shell 会导致妥协,如果 shell 是其他类型的程序(例如,图像转换程序),则不会发生这种情况。
答案1
shell 是一个关键的系统组件,如果在生产和/或面向互联网的服务器中使用非标准或未广泛部署的 shell,我会感到非常不舒服。
关键是(几乎)每个 shell 都具有或多或少强大的脚本/编程功能,再加上吞噬和扩展,可能会导致非常意想不到的副作用(例如,参见 shellshok)。
而且,掌握一个单一的、有据可查的 shell(如 bash)已经相当困难,更不用说使用多个不同的 shell 了……
答案2
我应该更改我的默认 shell 吗
您的问题和陈述略有不同,因为您正在更改生产服务器上 root 的 shell。根据我的经验,我认为答案是否定的。
安全影响
存在风险。您已在任何可能分叉 shell 的事物上引入了新行为。不适用于 bash 的漏洞可能适用于您的自定义 shell。您必须对此进行研究。希望您的操作系统发行版至少支持 fish,并且您没有手动安装它。
运营影响
更改 root 的默认 shell 会带来麻烦。您应该设置测试系统并引发需要单用户模式的问题以及本地/远程 DR/备份计划未考虑的任何其他故障场景。您可能会发现您的 shell 替换工作正常,但您必须考虑所有故障场景。
如果我要走这条路,我会先向我的操作系统支持提供商提出这个想法,并首先听取他们的想法和经验,如果我觉得我真的需要这样做的话。我是一个极简主义者,经验告诉我要尽可能保持简单和标准,特别是在对收入或合同 SLA 有影响的环境中。