我有一个服务器 - S1 - 使用 Apache 作为其网络服务器,另一个服务器 -S2 - 运行 NGINX 作为其网络服务器。 S2 挂载在 S1 中,S1 正在使用 NFS 将文件上传到 S2。
因此,NGINX 服务器 S2 中新添加的文件具有 Apache 的所有者和组。我在提供文件方面没有任何问题,一切都工作正常,但是我使用 NGINX 读取 Apache 文件是否存在安全问题?难道这根本就是错的吗?如果是这样,我有什么选择?
更新1:配置文件中为NGINX设置的用户是nginx,而不是apache。
答案1
对于 NFS 服务器上文件的每次访问(读/写),客户端都会将用户的用户 ID 和组 ID 共享给 NFS 服务器。只有当NFS服务器确认用户id和组id确实可以访问该文件时,才允许请求通过。
对于您的问题:
因此,NGINX 服务器 S2 中新添加的文件具有 Apache 的所有者和组。我在提供文件方面没有任何问题,一切都工作正常,但是我使用 NGINX 读取 Apache 文件是否存在安全问题?难道这根本就是错的吗?如果是这样,我有什么选择?
如何首先,NGINX 能够访问 Apache 创建的文件吗?在这里,我假设 S1 中的 Apache 进程正在创建文件。并且创建的文件是世界可读的(?)。如果是,这可能是一个安全问题,具体取决于您的上下文。通常,Apache 进程创建的文件是世界可读的,除非启动文件创建的脚本还具有显式更改权限的代码。您可能想看一下。
S1 上的 Apache 的user id
和可能与S2 上的 NGINX 的和相匹配。或者,如果情况并非如此,则包含这些文件的目录是世界可读的(又一个安全问题),因此除了 Apache(在 S1 上)之外,任何人都可以访问这些目录。group id
user id
group id
read and executable bits turned on
如果 NGINX 和 Apache 使用特权端口运行,您可能需要格外小心。您运行的 NGINX/Apache 版本的任何已识别的权限升级或 root 漏洞都可能允许黑客访问您的服务器。如果其中一个 NGINX/Apache 保存着非常敏感的数据,您将提供一种通过另一台服务器获取该数据的方法。
虽然外界可能不知道,NGINX 进程与 Apache 共享相同的文件夹,但任何对 S1 或 S2 具有本地 shell 访问权限的人最终都可以利用漏洞来访问其他服务器。
如果除了跨服务器/进程共享文件之外没有其他选择,您可能需要研究以下内容: - 文件读写权限 - 文件夹访问权限
如果共享文件是源文件,建议它们是版本控制存储库(如 GIT)的一部分,并在两个位置检出最新代码(这最终意味着您维护两个副本)。
如果您的用例已知,周围其他人可能会提供更好的替代方案。