我想在 CentOS 生产环境中安装一些存储库中没有的软件(例如 tmux 等)。我可以下载源代码并在本地编译,但为此我需要在生产环境中安装开发工具(gcc 等)。在生产环境中安装开发工具是个好主意吗?
答案1
我反对在生产机器上使用开发工具。有人批评我这样做违背了某些模糊的“Unix 哲学”,但我的立场是:
机器上“过多”的软件意味着更多的“活动部件”,并且发生故障的几率更大
开发工具可供您使用,意味着攻击者可以利用它们未经授权访问您的计算机
在我看来,在生产机器上从头开始编译东西违背了严格的变更控制流程。
我认为花时间为程序构建打包的二进制文件(否则需要编译)是值得的。我认为这也促进了良好的变更控制实践。
答案2
从操作/安全方面来看,在生产系统上使用开发工具的主要风险是
- 安装的软件越多,攻击面就越大,需要维护的内容就越多
- 大多数从源代码部署软件的人在成功初始部署后都不会对其进行维护
- Linux 上的大多数软件维护和报告工具都是面向软件包的,不能很好地报告从源代码部署的软件,与上述情况类似。通常,您不会知道自己面临过时软件的风险。
为了 :
- 使用来自维护良好的存储库的软件包,让维护者担心关注邮件列表、CVE 公告、错误跟踪、构建和测试软件包等,
- 构建自己的软件包并自行完成上述操作。在开发或构建系统上构建,在部署到生产环境之前在 UAT 中进行测试并进行发布管理。