几年前,当我的多个网站同时被黑客入侵后,我开始研究,并在一些 SF 问题中看到了一个解决方案:PHP-FPM 池
长期以来,我一直非常有信心一切都比以前更加安全,因为如果一个网站以某种方式被黑客入侵,它永远不会影响同一主机上的其他网站。
但几个月前,我开始与一些 Docker 人员交谈,他们告诉我,我应该开始尝试使用容器并将我的解决方案迁移到完全 Docker 化的系统。他们建议我使用 Caddy。但在阅读了 Caddy 文档后,我注意到新结构如下所示:
基本上,我所看到的是,Caddy 服务器对所有文件具有完全不受限制的访问权限。与之前的 Nginx 不同,以前的 Nginx 似乎一切都是条块分割的,而在这里,如果 Caddy 服务器出现安全问题,似乎一切都可能受到损害。
我知道大多数情况下,大多数黑客攻击都来自端点上的编码错误,这意味着最薄弱的环节是隔离的 docker FPM 服务器。但如果 Caddy 被攻陷,它将泄露所有卷的完整信息
此时,我有两个问题:
由于很多人都在宣扬 Docker 是最安全的选择之一,我是不是忽略了什么?我觉得这比我以前的系统安全性稍差一些(虽然如果单个主机中的整个文件系统都受到威胁,那么主机中是否有文件权限限制就无关紧要了,因此从这个方面来看,Docker 确实更安全)
除了保持系统更新外,还有其他做法可以从文件访问/PHP 软件零日攻击角度使 Docker/Caddy/FPM 配置更安全吗?目前,我在 Caddy 和 FPM 之间有文件套接字,但我觉得将所有文件放在一个主机上会暴露太多整体信息。
我找到了一个解决这个问题的方法。我主要担心的是 Caddy 或任何其他反向代理由于安全漏洞而访问 PHP 文件。
如果任何 FPM 容器中存在安全问题,也不会造成太大影响,因为它只会影响一个容器。但如果安全漏洞影响了反向代理容器,那么所有 FPM 容器共享的所有文件都将受到损害。
解决方案:对与配置元素相关的任何内容(主要是机密,如 SQL 机密)使用 docker 环境变量。然后从文件提取的角度来看,反向代理容器中的 PHP 文件将变得完全无用。
事实上,除非我错了,否则这将使一切比我以前的非docker配置更加安全。