Apache 无法访问 mod_security 日志

Apache 无法访问 mod_security 日志

我有一个 Apache2 服务器无法访问 mod-security 日志:

[email protected]:~$ apachectl -V
AH00526: Syntax error on line 196 of /etc/modsecurity/modsecurity.conf:
ModSecurity: Failed to open the audit log file: /var/log/apache2/modsec_audit.log
Action '-V' failed.
The Apache error log may have more information.
[email protected]:~$ sudo ls -la /var/log/apache2/modsec_audit.log
-rw-rwxrwx 1 root www-data 101792 Oct 22 16:37 /var/log/apache2/modsec_audit.log

我有点困惑,因为每个人(所有者、群组、其他人)都有权打开日志文件。

编辑:

[email protected].:/var/log/unattended-upgrades$ sudo -u www-data touch /var/log/apache2/modsec_audit.log
touch: cannot touch '/var/log/apache2/modsec_audit.log': Permission denied

这变得更加奇怪了……

编辑2:

[email protected]:/var/log/unattended-upgrades$ sudo ls -la /var/log/apache2/
total 1015752
drw-r--r--  2 root adm          12288 Oct 22 15:55 .

编辑3:

ls -la /var/log|grep apache
drw-r--r--  2 root     adm       12288 Oct 22 15:55 apache2

答案1

您不能触碰 modsec_audit.log,即

sudo -u www-data touch /var/log/apache2/modsec_audit.log

因为日志目录属于 root:adm。www-data 不是 root,也不属于组 adm。组和其他人只能读取您的日志目录。只有 root:adm 可以实际写入。

我在 CentOS 7 上遇到了同样的问题,其中主 httpd 进程以 root 身份启动,然后生成许多以 apache:apache 身份运行的子进程。在 Debian/Ubuntu 上,除了 apache 与 www-data 之间的差异外,情况一定相同。

在 CentOS 7 上,我只能以 root 身份运行 apachectl、httpd 等。否则,会出现相同的“语法错误”。此外,只有安装了 mod_security 才会发生这种情况。

这基本上是 apachectl/httpd/etc。以非特权用户身份调用 mod_security 来检查其配置是否存在语法错误,但 mod_security 显然非常重视安全性:) 并且无法代表没有权限的调用用户打开日志文件。

因此,只需运行

sudo apachectl -V

或者,你可以

  • 将 prim 用户添加到 adm 组(假设日志文件归 root:adm 所有,并且允许组读取和/或写入)
  • chown root:prim 你的日志文件(这是一个非常糟糕的主意,但在这里列出是为了证明这是一个基本文件权限问题)。

相关内容