2

我有一个带有 Modsecurity 和 apache 的 wordpress 网站。当我尝试访问 wordpress 时,它会引发 403 Forbidden 错误。管理面板和前端都无法访问。以下是日志:

[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源来解决这个问题?

4

1 回答 1

0

强烈不建议修改 WordPress 源,因为更新后修改的文件将再次被覆盖。

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

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>
于 2014-03-18T10:05:30.977 回答