生产服务器安装是否安全?

在我的虚拟服务器实例的安装过程中,我需要使用make构build一些应用程序。 是否有安装相关的安装风险? 还是应该在部署实例之前清理它?

我也有服务器上的gcc编译器,我用它来部署之前构build应用程序。

有些人会争辩说,生产机器上的开发工具的存在将使攻击者的生活更轻松。 然而,这对于攻击者来说是一个小小的挑战,你可以find或者反对安装开发工具的其他任何争论都会更加重要。

如果攻击者能够穿透系统到目前为止,他们可以调用服务器上的任何工具,那么你已经有一个严重的安全漏洞。 没有开发工具,还有许多其他的方法可以将二进制数据写入文件,然后在该文件上运行chmod。 想要在系统上使用定制构build可执行文件的攻击者可以在自己的机器上构build并将其传输到服务器。

还有其他更多相关的事情要注意。 如果安装的某个软件包含安全漏洞,则可以通过几种方式将其暴露给攻击者:

  • 该软件包可以包含suid或sgid可执行文件。
  • 该软件包可以在系统上启动服务。
  • 该软件包可以安装在某些情况下自动调用的脚本(这包括cron作业,但是当networking界面的状态改变或用户login时,脚本可能被其他事件调用)。
  • 该软件包可以安装设备inode。

我不希望开发工具与上述之一匹配,因此不是一个高风险的软件包。

如果您有工作stream程需要使用开发工具,那么您首先必须确定这些工作stream程是否合理,如果是,则应安装开发工具。

如果你发现你并不需要这些工具在服务器上,你应该避免安装它们,原因有很多:

  • 节省服务器和备份上的磁盘空间。
  • 安装较less的软件可以更轻松地跟踪您的依赖关系。
  • 如果你不需要这个软件包,即使安全风险很小,也没有必要承担额外的安全风险。

如果您为了安全考虑而决定不允许未经授权的用户将自己的executabel放在服务器上,那么您应该避免的不是开发工具,而是目录可写入安装有执行权限的文件系统上的用户。 即使在这样的情况下,开发工具仍然有用,但是不太可能。

make是一个与bash语法不同的shell。

gcc这样的编译器是一个强大的awkconfiguration了一组标准的awk不支持的replace。 这是一个非POSIX兼容的sortcat注入垃圾输出。 它是一个交互式文本编辑器(思考vi ),它被configuration为在启动时进行一些编辑,然后在显示用户界面之前退出。

它们本身没有什么不安全的地方,它们不会让你的机器比你有bash + cat + shellredirect的机器更不安全。

make自己很好。 make只是一个依赖跟踪和自动化框架。 它通常与编译器结合使用,但最好不要在生产系统上使用,因为它们完全不是必需的。 对于所有不需要的软件包也是如此,无论这些软件包是共享库,口译器等。生产系统上安装的软件应该严格控制,只有应用程序需要的软件包应该存在。

您应该在构build服务器上构build应用程序,将其打包,然后将二进制包部署到生产系统。

注意:本地打包工具 。 甚至不打扰他们。 相反,请查看Jordan Sissel的fpm 。 它使包装绝对的喜悦。

相反,潜在的问题不在于生产服务器上,潜在的问题是在生产服务器上构build应用程序,而不是部署经过testing的预build图像。 这种方法可能有正当的理由,但是如果我要求采用这个方法,我会强烈反对。

你在问是否应该在生产服务器上安装make ,但是我真正的问题是:谁可以访问该生产服务器?你有什么保护措施来处理入侵? 如果make没有安装,但有人获得root访问权,猜猜看是什么? 他们可以手动安装make和他们想要的东西。

关于计算机安全的严酷现实与防止不必要的访问一样多,痴迷于阻止访问并不重要:

  1. 谁有权访问服务器?
  2. 你可以做些什么来rest一下呢?

这完全取决于你做了什么样的工作。 我主要在Web服务器领域工作,我的态度基本上是,任何从我这里获得生产服务器的人都需要certificate技能,知识和成熟度。 而已。 有时需要几天时间。 有时需要数月时间。 但基本上,生产服务器上的最佳安全线是控制访问,而不是我们为了强化服务器而做的其他事情。

make自己是无害的。 它所做的只是按照设定顺序运行应用程序,具体取决于您指定的依赖关系以及系统中已存在的文件。 它甚至可以作为安装过程的一部分:你可以用它把预置的文件放到需要去的地方,或者运行unit testing或者其他的东西。

但是,您确实需要考虑您要使用它的具体内容。 它通常与编译器和其他工具一起用于构build应用程序, 这些工具可以用来否定你的一些防线。 但是如果工具不可用, make就不能做这些事情。