在生产服务器上安装开发工具?安全风险?

信息安全 linux 网络服务器
2021-08-29 14:10:16

我使用 Amazon Linux EC2 实例作为 Web 服务器。我的网络应用程序使用 ImageMagick。因为 Amazon Linux (CentOS) 存储库不包含最新版本的 ImageMagick,所以我从源代码编译它。为此,我运行:

yum groupinstall 'Development Tools'

在生产服务器上安装开发工具会带来安全风险吗?如果是这样,我该如何安全地删除我不应该安装的东西?

3个回答

除了@Karrax 的正确答案,关于增加的攻击面、可能的漏洞利用以及潜在黑客更容易的攻击环境,我想指出另一个问题,该问题应该是显而易见的,但通常不是很痛苦。

这些是开发工具。生产服务器上。
我由此推断,开发人员不仅可以访问生产服务器,而且他们显然打算在其上进行开发
这本身就有一大堆与之相关的风险,即:

  • 未经授权访问生产数据
  • 没有最低权限
  • 没有职责分离 (SoD)
  • 很可能有很多旧的、测试的和未使用的代码文件
  • 很可能有很多旧的、测试的和未使用的配置文件——例如.bak文件类型,允许任何用户下载和窃取密码等
  • 部署前没有安全测试
  • 容易弹出隐藏的后门,因为之前的
  • 显然,没有 SDL(安全开发生命周期)到位
  • 和更多。

我的观点是,问题不只是安装开发工具,更大的问题是它周围的过程和环境首先会导致这样的计划。

系统的一般规则是:如果您不需要它,请不要安装它。也许我们应该将其修改为:如果您不再需要它,请将其卸载。

为什么?减少系统上可用的“攻击面” - 即可以被破坏或用作破坏的一部分的程序和实用程序。这是普遍的理由。

开发工具的特定风险是,如果攻击者获得了对非特权用户的访问权限,那么他们很可能可以使用 saygcc在您的机器上编译任意代码。也就是说 - 您运行 Python 之类的解释器的可能性也很高,或者有javac用于 Web 应用程序或类似的解释器 - 所以实际的物质影响可能不会有太大的不同。

我个人认为安装开发工具没有任何问题(我会手动将它们拉入,yum install <tool>以便以后可以使用它们yum remove),然后在达到目的后将其删除。毕竟,所有这些关于在非特权用户下编译任意代码的讨论实际上都没有抓住重点:在那个阶段,有人已经在你的系统上站稳了脚跟,就是你想要阻止的。

从策略上讲,在我看来,在网络服务器上没有开发工具是个好主意——它不鼓励开发人员“现场做”。不是我们会,介意,但好吧......我们可能会:)

的,您在您的环境中安装的软件的任何附加内容都会增加攻击者可能用来危害您和您的系统的攻击面。

此软件包中的工具可能包含已知漏洞或其他尚未发现的漏洞,这些漏洞可能会进一步危害您的系统。

一般来说,我会说最好的做法是让开发和生产尽可能分开,但是每个企业可能有自己的风险/后果和成本分析,所以在你的具体情况下,它可能是可以接受的风险。

请注意,在您的情况下,您正在安装“开发工具”!这可能会带来额外的安全风险,因为您实际上是在您的系统上留下了一个为这个特定系统设计的非常好的编译器(和其他工具)。在许多情况下,这只会让攻击者在您受到攻击后编译和运行更多的漏洞利用代码变得更加容易,但是在某些特殊情况下(您可能需要特殊的编译器)一旦攻击者就太容易了你被妥协了。

编辑:正如 Gilles 评论的那样,后一个例子在你的具体情况下是极不可能的。我想引用 Gilles 的话,因为这正是我打算在我的示例中引入的内容:

在攻击者带宽有限或只能注入可打印字符的系统上,或者在获取编译器或构建自己的编译器的外来系统上是昂贵的。但是这里我们谈论的是一个具有快速网络连接的系统,并且攻击者可以以几美元的价格进行复制