Answers:
有人会争辩说,生产机器上存在开发工具将使攻击者的生活更轻松。但是,这对于攻击者来说是一个很小的障碍,以至于您发现的支持或反对安装开发工具的任何其他论点都会带来更大的负担。
如果到目前为止,攻击者能够入侵系统,他们可以调用服务器上存在的任何工具,那么您已经存在严重的安全漏洞。没有开发工具,还有许多其他方法可以将二进制数据写入文件,然后在该文件上运行chmod。想要在系统上使用自定义构建可执行文件的攻击者可以将其构建在自己的计算机上,然后将其传输到服务器。
还有其他更多相关的事情需要注意。如果已安装的软件包含安全漏洞,则可以通过几种方法将其暴露给攻击者:
我不希望开发工具能够满足上述要求之一,因此这不是一个高风险的软件包。
如果您拥有可以使用开发工具的工作流程,则首先必须确定这些工作流程是否合理,如果确实如此,则应安装开发工具。
如果发现您确实不需要服务器上的那些工具,则应出于多种原因而避免安装它们:
如果出于安全原因决定,不允许非特权用户在服务器上放置他们自己的executabel,那么您应该避免的不是开发工具,而是那些在具有执行许可权的文件系统上可写给那些用户的目录。即使在这种情况下,开发工具仍可能会使用,但可能性很小。
gcc
不希望比这些风险更高。如您所说,能够使用系统上安装的编译器的攻击者通常无论如何都会做更糟的事情,例如上载自己的(可能是静态链接的)可执行文件。
echo
语句将二进制文件移动到服务器中。使用同一链接中的脚本可以自动完成整个过程。
make
是一个具有与语法不同的外壳bash
。
像这样的编译器gcc
是功能强大的,awk
配置了一组标准awk
不支持的替代项。它不兼容POSIX sort
或cat
在输出中注入垃圾。它是一个交互式文本编辑器(认为vi
),配置为在启动时进行一些编辑,然后在显示用户界面之前退出。
它们本身并没有什么不安全的地方,它们不会使您的计算机比具有bash + cat
+ shell重定向的计算机更不安全。
make
本身很好。make
仅仅是一个依赖跟踪和自动化框架。但是,它通常与编译器结合使用,并且最好不要在生产系统上使用,因为它们是完全不必要的。对于所有不需要的软件包,无论是共享库,解释器等,都是如此。应严格控制生产系统上安装的软件,并且仅应提供应用程序所需的那些软件包。
您应该在构建服务器上构建应用程序,将其打包,然后将二进制程序包部署到生产系统。
注意:原生包装工具很烂。甚至不用理会它们。而是查看Jordan Sissel的fpm
。它使包装成为绝对的快乐。
您在询问是否make
应将其安装在生产服务器上,但我真正的问题是:谁可以访问该生产服务器,并且您有什么安全措施来应对入侵?如果make
未安装但有人可以root
访问,您猜怎么着?他们可以手动安装make
任何所需的东西。
关于计算机安全性的严酷现实足以防止不必要的访问,而对阻止访问的痴迷并不像:
这完全取决于您从事的工作。我主要在Web服务器领域工作,我的态度基本上是,任何从我这里获得生产服务器访问权限的人都需要证明技能,知识和成熟度。而已。有时需要几天。有时需要几个月。但是,基本上,生产服务器上最好的安全性是在我们进行其他各种强化服务器工作的基础上控制访问。