我有一个有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源代码来解决这个问题?
发布于 2014-03-18 02:05:30
强烈建议不要修改WordPress源代码,因为在更新后,修改后的文件将再次被覆盖。
更好的方法是通过允许向mod_security
系统发送更多请求来改进您的WordPress规则。
ModSecurity (也称为“modsec”)已经证明自己在各种情况下是有用的,而且在帮助WordPress野蛮尝试导致拒绝服务(DoS)攻击时也是如此。虽然存在许多WordPress插件以防止此类攻击,但自定义modsec规则可以防止对服务器上所有WordPress安装的此类攻击。Modsec立即过滤传入的HTTP请求,这有助于对服务器资源征税。
这些规则将在10次失败的登录尝试持续3分钟时阻止对违规IP地址的访问5分钟。这些规则已经在液体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>
https://stackoverflow.com/questions/22474955
复制