我想知道从远程生产服务器上删除编译器工具( gcc , make ,…),主要是为了安全目的。
背景:
服务器在Linux上运行Web应用程序。 考虑Apache被监禁。 否则,只有OpenSSHd面向公共networking。 当然,jail中没有编译器的东西,所以这是关于任何监狱之外的实际操作系统。
以下是我个人的PRO / CON清单(关于清除):
PRO:
CON:
好的,所以这里是我的问题给你:
(a)我的PRO / CON评估是否正确?
(b)您是否知道其他PRO / CON删除所有编译器工具? 他们更重吗?
(c)如果给定的PRO声明成立,哪些二进制文件应该被认为是危险的? 只有gcc ,还make ,还是还有什么? 我应该删除它们附带的enitre软件包吗?
(d)只要将这些二进制文件移动到不需要的根目录就可以了吗? 或者,如果我每次都“嘲笑”他们是否有安全感?
谢谢!
很多人删除编译器和编译器工具,因为它们理论上可以用于漏洞利用。 我认为这是过时的。 我最近的经验是,如果他们能够进入,他们也可以得到他们的工具,所以删除像编译器,emacs和垃圾这样的东西不会增加你的整体安全性。
我非常小心在机器上运行的服务:连接到外部的所有东西都是潜在的漏洞。 否则,我只会删除编译器,以保持我的程序员诚实。 这些日子我不认为这会增加安全性。
“正确的做事方式”的普遍看法是把最低限度的必要的服务器。 如果你不需要编译器,不要把它们放在那里。 还有一件事情,如果破解,一个系统破解者可能会用来对付你的系统,并且会引入更多的二进制文件,这些二进制文件可能会有一些可以利用的错误。
它也释放服务器上的空间。
也就是说,我认为有许多小型办公室和小型企业(以及不分析安全或最佳实践的人)将编译器和额外的工具留在服务器上,并不认为这是一个大问题。
如果你想安全地玩,请删除它们。 安装二进制文件,您可以预先构build或在另一台机器上testing自己,也可以从受信任的回收站安装。 这也会节省一些空间并简化备份。
如果它是一个关键的生产服务器,你可能不应该玩未知的testing内核configuration。 您将在其他硬件上构build,然后迁移它。 我们通常只是使用我们的发行版select的“足够好”的内核,所以在我们的例子中没有重新编译。