Php Mod安全阻止wordpress

Php Mod安全阻止wordpress,php,wordpress,mod-security,Php,Wordpress,Mod Security,我有一个带有Modsecurity和apache的wordpress站点。当我试图访问wordpress时,它抛出一个403禁止的错误。管理面板和前端都不可访问。以下是日志: [Tue Mar 18 08:17:41 2014] [error] [client 122.170.1.216] ModSecurity: Access denied with code 403 (phase 4). Pattern match "^5\\\\d{2}$" at RESPONSE_STATUS. [fil

我有一个带有Modsecurity和apache的wordpress站点。当我试图访问wordpress时,它抛出一个403禁止的错误。管理面板和前端都不可访问。以下是日志:

[Tue Mar 18 08:17:41 2014] [error] [client 122.170.1.216] ModSecurity: Access denied with code 403 (phase 4). Pattern match "^5\\\\d{2}$" at RESPONSE_STATUS. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_50_outbound.conf"] [line "53"] [id "970901"] [rev "2"] [msg "The application is not available"] [data "Matched Data: 500 found within RESPONSE_STATUS: 500"] [severity "ERROR"] [ver "OWASP_CRS/2.2.6"] [maturity "9"] [accuracy "9"] [tag "WASCTC/WASC-13"] [tag "OWASP_TOP_10/A6"] [tag "PCI/6.5.6"] [hostname "www.bullion.ambab.com"] [uri "/research/wp-admin/index.php"] [unique_id "UygBJQoLkgUAABXkL-8AAAAX"]
[Tue Mar 18 08:17:41 2014] [error] [client 122.170.1.216] ModSecurity: Warning. Operator GE matched 4 at TX:outbound_anomaly_score. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_60_correlation.conf"] [line "40"] [id "981205"] [msg "Outbound Anomaly Score Exceeded (score 4): The application is not available"] [hostname "www.bullion.ambab.com"] [uri "/research/wp-admin/index.php"] [unique_id "UygBJQoLkgUAABXkL-8AAAAX"]
这可以通过禁用RuleByID 981205来解决。但我不希望这些规则被绕过,因为它可能为攻击打开大门。
有没有办法通过修改wordpress源代码来解决此问题?

强烈建议不要修改wordpress源代码,因为更新后修改的文件将再次被覆盖

更好的方法是通过允许向WordPress系统发送更多的请求来完善您的
mod_安全性
规则

ModSecurity(也称为“modsec”)已被证明在各种情况下都很有用,在协助WordPress暴力攻击导致拒绝服务(DoS)攻击时也是如此。虽然存在许多WordPress插件来防止此类攻击,但自定义modsec规则可以防止服务器上所有WordPress安装的此类攻击。Modsec会立即过滤传入的HTTP请求,这有助于避免服务器资源负担

这些规则将在3分钟内10次登录尝试失败后,阻止对违规IP地址的访问5分钟。这些规则已在Liquid Web的ServerSecure服务的自定义规则中自动更新。对于没有ServerSecure的客户,可以将这些规则添加到其自定义modsec规则中。要完成此操作,请编辑自定义modsec用户规则,并使用下面提供的规则附加文件。对于CPanel服务器,此文件可能位于
/usr/local/apache/conf/
以下是一些例子:

SecAction phase:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},initcol:user=%{REMOTE_ADDR},id:5000134
 <Locationmatch "/wp-login.php">
 # Setup brute force detection.
 # React if block flag has been set.
 SecRule user:bf_block "@gt 0" "deny,status:401,log,id:5000135,msg:'ip address blocked for 5 minutes, more than 10 login attempts in 3 minutes.'"
 # Setup Tracking. On a successful login, a 302 redirect is performed, a 200 indicates login failed.
 SecRule RESPONSE_STATUS "^302" "phase:5,t:none,nolog,pass,setvar:ip.bf_counter=0,id:5000136"
 SecRule RESPONSE_STATUS "^200" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:5000137"
 SecRule ip:bf_counter "@gt 10" "t:none,setvar:user.bf_block=1,expirevar:user.bf_block=300,setvar:ip.bf_counter=0"
 </Locationmatch>
SecAction阶段:1,nolog,pass,initcol:ip=%%{REMOTE\u ADDR},initcol:user=%%{REMOTE\u ADDR},id:5000134
#设置暴力检测。
#如果设置了块标志,则作出反应。
SecRule用户:bf_阻止“@gt 0”拒绝,状态:401,日志,id:5000135,消息:“ip地址被阻止5分钟,3分钟内登录尝试超过10次。”
#设置跟踪。成功登录时,执行302重定向,200表示登录失败。
SecRule响应\u状态“^302”阶段:5,t:none,nolog,pass,setvar:ip.bf\u计数器=0,id:5000136
SecRule响应\状态“^200”阶段:5,链,t:none,nolog,pass,setvar:ip.bf\ u计数器=+1,deprecatevar:ip.bf\ u计数器=1/180,id:5000137”
SecRule ip:bf_计数器“@gt 10”t:none,setvar:user.bf_block=1,expirevar:user.bf_block=300,setvar:ip.bf_计数器=0

谢谢@bodi0。上述规则不仅对wp-login.php非常有用,而且对其他文件也非常有用。但问题依然存在,wordpress是否有一套标准的modsec规则?或者我必须创建一个?我在wordpress文件中使用的模式“../../../”中遇到了错误。我认为会有20-30次违规。如果我必须对每个文件都进行Locationmatch,并执行类似于上述答案的操作,那么将需要大量时间来尝试错误。嗯,我认为您必须根据您的需要创建规则,我担心给定的内容管理系统没有标准规则,这一切都取决于具体情况。关于模式错误“../../../”-您可以使用正则表达式匹配,并为构建规则节省一些时间…上面的解决方案确实对我有效,但只做了一点修改。谢谢。@0