快速回顾一下我所做的事情:
apt-get install libapache-mod-security
a2enmod mod-security
- 使用 最新的
/etc/apache2/mod_security_rules/
base_rules
optional_rules
核心规则集 - 创建
/etc/apache2/conf.d/mod_security
如下 - 创建
/var/www/test.php
如下
conf 文件如下所示
<IfModule security2_module>
Include /etc/apache2/mod_security_rules/*.conf
Include /etc/apache2/mod_security_rules/base_rules/*.conf
Include /etc/apache2/mod_security_rules/optional_rules/*.conf
</IfModule>
test.php
好像
<?php
$secret_file = $_GET['secret_file'];
include ( $secret_file);
?>
一些网站表示mod_security
应该屏蔽这些内容。
我的问题是访问时test.php?secret_file='whatever'
显示了该文件。
这是正常的吗?mod_security
是否可以正常工作?如果不正常,我需要进行什么更改?
答案1
查看后/usr/share/doc/libapache-mod-security/examples/modsecurity.conf-minimal
你会发现还有更多内容需要添加到conf中,比如SecRuleEngine On
,你确定核心规则集包含那些基本命令吗?
您可以将其添加到您的conf.d
文件中,或者使用示例文件来指导您。
答案2
我遇到了同样的问题,Debian 6.0.6 x64 squeeze,lipapache2-modsecurity 2.6.5-5 通过 apt-get 安装。看起来可以正常工作,阻止了所有其他事情,但是仍然允许通过第一篇文章中发布的脚本访问 passwd 和其他文件,如 apache2.conf,大家有解决方案吗?
这可能与 Web 服务器本身的其他配置有关吗?