为何我的 mod_security 没有捕获/记录任何内容?

为何我的 mod_security 没有捕获/记录任何内容?

我在 Ubuntu GNU/Linux 服务器上安装了 mod_security,但当我向 Web 服务器发送一些简单请求(这些请求应该符合最简单的规则)时,却看不到任何警报或任何应该存在于 /var/log/apache2 中的日志文件。我遗漏了什么?

在继续之前,以下是我的系统详细信息:

$ apache2ctl -t -D DUMP_MODULES | grep secu
Syntax OK
 security2_module (shared)

$ sudo lsof | grep mod_security
apache2   12773        root  mem       REG      202,0   268828      50225 /usr/lib/apache2/modules/mod_security2.so
apache2   15287    www-data  mem       REG      202,0   268828      50225 /usr/lib/apache2/modules/mod_security2.so
apache2   15288    www-data  mem       REG      202,0   268828      50225 /usr/lib/apache2/modules/mod_security2.so
...

下面是我的 /etc/apache2/apache2.conf 中的相关部分:

<IfModule mod_security2.c>
      # Basic configuration options
      SecRuleEngine On
      SecRequestBodyAccess On
      SecResponseBodyAccess Off

      # Handling of file uploads
      # TODO Choose a folder private to Apache.
      # SecUploadDir /opt/apache-frontend/tmp/
      SecUploadKeepFiles Off

      # Debug log
      SecDebugLog /var/log/apache2/modsec_debug.log
      SecDebugLogLevel 3

      # Serial audit log
      SecAuditEngine RelevantOnly
      SecAuditLogRelevantStatus ^5
      SecAuditLogParts ABIFHZ
      SecAuditLogType Serial
      SecAuditLog /var/log/apache2/modsec_audit.log

      # Maximum request body size we will
      # accept for buffering
      SecRequestBodyLimit 131072

      # Store up to 128 KB in memory 
      SecRequestBodyInMemoryLimit 131072
      # Buffer response bodies of up to # 512 KB in length 
      SecResponseBodyLimit 524288

      # Configure default blocking policy
      # see ModSecurity Handbook, p. 175
      #
      #SecDefaultAction "phase:1,log,auditlog,pass"

      Include /etc/apache2/modsecurity-crs_2.0.6/*.conf
      Include /etc/apache2/modsecurity-crs_2.0.6/base_rules/*.conf  

      SecFilter "/bin/"
      SecFilter "/cgi-bin" "deny,log,status:500"


      # By default log and deny suspicious requests
      # with HTTP status 500
      SecFilterDefaultAction "deny,log,status:500"
</IfModule>

因此,我期望如果我尝试访问我的网站并发送与我使用 SecFilter 在上面声明的过滤器之一匹配的请求或与基本规则匹配的任何内容等,那么我应该在这些文件中看到一些内容:

/var/log/apache2/modsec_debug.log
/var/log/apache2/modsec_audit.log

正确的?

但是无论我怎么尝试,这些文件都不存在:

http://www.myserver.com/cgi-bin
http://www.myserver.com/index.html?q=/cgi-bin
http://www.myserver.com/bin
http://www.myserver.com/index.html?q=/bin
http://www.myserver.com/index.html?q=/bin/

为什么我在 /var/log/apache2 中看不到任何 modsec_debug.log 或 modsec_audit.log?我也没有从服务器获取状态 500。从上述请求中我所能看到的只是 /var/log/apache2 中的 error.log 文件中的几个条目,表明未找到我请求的文件,但没有 mod_security 生成的警报。

我错过了什么?

答案1

真丢脸!我把 mod-security 配置指令(而不是之后):

# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

所以 mod-security 模块实际上没有加载!现在我放置了 mod-security 指令以下然后,mod-security 被加载,并记录到相关文件中。问题解决了。

答案2

触摸/var/log/apache2/modsec_debug.log chown apache_user:apache_user /var/log/apache2/modsec_debug.log

SecAuditEngine 仅与 SecAuditEngine 相关

相关内容