如何在 Apache 上阻止所有包含子字符串的 URL 的 HEAD 请求?

如何在 Apache 上阻止所有包含子字符串的 URL 的 HEAD 请求?

我管理的服务器正受到一个由 AWS 构建的、编码糟糕的机器人的攻击,该机器人不断切换 IP,似乎陷入了递归编码循环。我能看到的唯一一致指纹是每个请求都只是一个请求HEAD,每个请求似乎都会重新编码前一个请求。所以http://someurl.com/?foo=%25bar变成..%2525....%252525..……%2525252525252525...x1000

以下是我所看到的请求类型的示例:

HEAD http://example.com/?foo=%25bar
HEAD http://example.com/?foo=%2525bar
HEAD http://example.com/?foo=%252525bar
HEAD http://example.com/?foo=%25252525bar
HEAD http://example.com/?foo=%2525252525bar
HEAD http://example.com/?foo=%2525252525...25bar (x1000)

到目前为止,我一直在使用 Cloudflare 防火墙来阻止每个 IP,但它们不断切换 IP。

我怎样才能简单地阻止所有包含子字符串(比如%25252525)的 HEAD 请求?

我在跑Apache/2.4.6 (CentOS)

答案1

在你的.htaccess 中使用 mod_rewrite 怎么样?

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_METHOD} HEAD
    RewriteCond %{QUERY_STRING} 25252525
    RewriteRule .* - [F,L]
</IfModule>

这将阻止所有查询字符串包含“25252525”的 HEAD 请求。显然,您可以根据需要进一步调整!

相关内容