阻止HTTP POST攻击

时间:2012-08-02 17:20:06

标签: apache .htaccess mod-rewrite mod-security

我正在向我的服务器发出HTTP POST攻击,我希望将所有这些请求发送到403,而不是让它们被mod_security捕获,以便提高拒绝速度并减轻Apache的负担。这是目前通过mod_security发生的事情:

[Tue Jul 31 23:40:42 2012] [error] [client 24.201.202.189] ModSecurity: Access denied with code 403 (phase 2). Operator EQ matched 0 at REQUEST_HEADERS. [file "/var/asl/rules/10_asl_rules.conf"] [line "63"] [id "390616"] [rev "2"] [msg "Atomicorp.com WAF Rules: POST request must have a Content-Length header"] [severity "WARNING"] [hostname "some-server.domain.com"] [uri "/index.php/1.0"] [unique_id "UBhQ2myulQkAADbaEm8AAACN"]

我正在尝试通过mod_rewrite将对index.php的任何访问权限发送到403,但它似乎不起作用。我假设这些要么不适用于POST,要么我错过了什么。这就是我现在正在使用的内容:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^http://(www\.)?some-server\.domain\.com
RewriteRule ^index\.php$ [F]

服务器名称的结构与上面类似,但出于显而易见的原因,我已将其替换为一些通用名称。

任何人都可以通过mod_rewrite规则提供有关此问题的反馈以及我可能做错了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

在这种情况下的解决方案,因为攻击始终是相同的,就像这样:

<LocationMatch "^/index.php/1.0">
order allow,deny
deny from all
</LocationMatch>

由于攻击者总是从那时起触发“被服务器配置拒绝”,所以立刻阻止它们就像是这样:

for i in $(grep "client denied by server configuration: /usr/local/apache/htdocs/index.php" /usr/local/apache/logs/error_log | cut -d\  -f8 | tr -d ']' | sort | uniq); do csf -d $i; done

问题解决了。