数千个以不存在的域作为 HTTP_REFERER 的请求

数千个以不存在的域作为 HTTP_REFERER 的请求

过去几天,我的一个网站一直收到每分钟数百个请求使用不存在的随机域名HTTP_REFERER和来自不同的 IP(因此使用deny from IP不是一种选择):

REMOTE_ADDR     | HTTP_REFERER    | HTTP_USER_AGENT
95.133.126.178  | 1dljlc2jm2.info | Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0 [email protected])
188.232.31.38   | 3r28169e6v4.net | Mozilla/5.0 (compatible; ShunixBot/1.x; http://www.7vlc8pngqk7zmx.com/bot.htm)
177.184.135.114 | 3p10jjujbn.ru   | Mozilla/5.0 (compatible; Bot; +http://w4n2e2mte8.ws/spamfilter
188.235.184.231 | 06d94hx.biz     | Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iRider 2.21.1108; FDM)
42.119.240.12   | ho0gg8r7.net    | Mozilla/3.0 (WorldGate Gazelle 3.5.1 build 11; FreeBSD2.2.8-STABLE)
...

请问您有什么想法可以解决这个问题吗?

更新 (问题成功解决后)

我的问题不是重复的我遭受了 DDoS 攻击。我该怎么办?因为我知道“怎么了”(小型 DDoS 攻击)因此我要求添加精确的规则来.htaccess阻止攻击者。

顺便说一下,这里我遭受了 DDoS 攻击。我该怎么办?建议联系托管服务提供商。我联系了,但我的托管服务提供商(最受欢迎的托管服务提供商之一)建议我购买更昂贵的套餐,其中包含更多资源。:)

青蛙解决方案正是我在寻找的。

答案1

这是阻止攻击者的规则

# Block request if not empty or not start with http
RewriteCond %{HTTP_REFERER} "!^$|^http"
# Block request rule
RewriteRule .* - [F]

我添加了一些规则来阻止其他机器人:

# Block empty user agent, and suspect user agen
RewriteCond %{HTTP_USER_AGENT} ^-?$|perl|python|\\x.*?\\x [NC,OR]
# Limit request to GET POST and HEAD
RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$ [OR]
# Block request who doesn't start with / as it should for normal web sites
RewriteCond %{REQUEST_URI} !^/ [OR]
# Block request if not empty or not start with http
RewriteCond %{HTTP_REFERER} "!^$|^http"
# Redirect to 406 page
RewriteRule .* - [END,R=406]

我使用代码 406(不可接受)作为响应代码,但它是可选的,它可以是你想要的任意值,例如 [F],如 apache 文档所建议的那样

https://httpd.apache.org/docs/2.4/en/rewrite/access.html

如果你正在使用另一个重写规则(例如短网址),则需要放置我之前发布的规则,以便首先使用

相关内容