我目前在 Ubuntu 上的 Apache PHP 服务器前运行 Nginx 反向代理。我log.txt
在为我的网站提供 PHP 文件的同一目录中有一个文件。PHP 通过 API 活动写入此日志文件。在网络浏览器中访问时,我可以将 url 从更改为访问日志文件,这是完全不安全lookup.php
的。log.txt
我只想在通过 SSH 登录时访问日志文件。
我将日志文件的所有权更改为www-data
PHP 当前正在运行的组。我想要发生的是 PHP 文件能够写入此日志文件,但用户无法导航到 Web 浏览器中的日志文件路径并显示它。我认为问题在于,由于 Nginx 也运行 as www-data
,通过将日志文件所有者更改为www-data
PHP 可以写入它,Nginx 现在能够读取它。
以下是我正在考虑的一些想法,但我不确定它们是否存在重大安全漏洞:
将日志文件更改为文件所有者的只写文件,
www-data
. 我正在做研究,这似乎是一种罕见的方法。使 PHP 和 Nginx 作为单独的组运行,为 PHP 提供一个 rwx 访问权限,而对 nginx 不提供任何访问权限。
在 Web 根目录之外创建一个新目录,这样就没有与该文件关联的 Web URL,但该目录由
www-data
(因此 PHP 和 Nginx)拥有。我不确定这是否有漏洞。禁止通过 Nginx 访问日志文件。这对我来说有点“hacky”。
哪条路线合适?
我倾向于为我的 Web 服务器和代理运行 nginx,所以请原谅 Apache 的无知,但我通常不会为此使用文件权限。相反,我更愿意告诉我的网络服务器不要提供某些文件。 这是一种从服务器故障中执行此操作的方法。
为日志创建一个单独的目录也很好,如果该目录仍然位于 URL 可以访问的位置,则 Apache 可以简单地禁止该目录。或者,
/var/log/
可以使用该位置,但这通常是为在操作系统上运行的服务保留的。使用 Web 服务器拒绝访问不应该让人觉得很奇怪,因为此功能部分用于敏感文件。此外,Web 服务器的根目录假定下面的所有文件都是用于 Web 的,除非明确拒绝(如上所述)。这是我在必要时使用我的网络服务器的路线。