我试图使mod_security工作,我在网上search了很多,并按照本教程来configurationmod_security(我所有的configuration文件都与本教程相同),当我运行httpd -M | grep -Ei '(evasive|security)' httpd -M | grep -Ei '(evasive|security)'输出
security2_module (shared) evasive20_module (shared)
所以扩展正在被加载,但它并没有阻塞任何东西,既没有在日志文件上写任何东西,我甚至将SecDebugLogLevel设置为9,并且debugging日志仍然是空白的。
我试图加载模块之前,其他人,在中间,几次重新启动Apache,什么都没有。
我正在使用亚马逊Linux(就像CentOS)和Apache 2.4 Prefork。
需要更多的信息来帮助(所有相关的Apacheconfiguration从httpd.conf和modsecurity.conf)。
不过,下面是一些可能帮助你自己解决问题的指针:
你使用了正确的IfModule命令吗? 我使用mod_security2.c,但不知道是否重要:
<IfModule mod_security2.c> Include conf/modsecurity.conf </IfModule>
你尝试完全停止和启动Apache(不是一个正常的重新启动)?
完全停止并重新启动后,错误日志中是否有任何内容。 它应该有这样的[:notice]条目:
ModSecurity for Apache/2.9.0 (http://www.modsecurity.org/) configured. ModSecurity: APR compiled version="1.5.0"; loaded version="1.5.0" ...etc.
这表明ModSecurity已经加载。
在错误日志文件中是否有任何PCRE错误(如果ModSecurity使用与Apache不同版本的PRCE进行编译,可能会发生这种错误)? 对httpd和mod_security.so运行ldd命令以确保它们匹配。 作为一个参考,我没有得到任何安全模块显示,当我运行我的工作版本“httpd -M”命令 – 我想是因为它没有加载,除非一个包含运行。
debugging日志是否被创build,但是是空的? 如果它被创build,那么ModSecurity本身正在被加载是一个好兆头。
你的Apache设置都在/ etc / httpd / conf目录下,就像你用的那个指南是build议的那样? 不知道有几个版本的Apache安装,你正在编辑的configuration不是正在使用的:-)
我推荐使用Ivan Ristic的ModSecurity手册,这个手册可以免费获得: https : //www.feistyduck.com/library/modsecurity-handbook-free/ ,这个包括安装。 伊凡最初写了ModSecurity,所以我build议购买整本书。 这是几个版本背后,但仍然主要是相关的。 没有包括在书中的主要变化是规则ID现在是强制性的。