我在我的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或任何符合基本规则的filter的请求,那么我应该在这些文件中看到一些内容:
/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生成的警报。
我错过了什么?
对我感到羞耻! 我已经把mod-securityconfiguration指令放在(而不是在)之后:
# Include module configuration: Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf
所以mod安全模块实际上并没有被加载! 现在我把mod-security指令放在它们下面 ,mod-security被加载并且logging到相关的文件中。 问题解决了。
touch /var/log/apache2/modsec_debug.log chown apache_user:apache_user /var/log/apache2/modsec_debug.log
SecAuditEngine相关的仅限于SecAuditEngine On