Mod-Rewrite

數千個不存在域的請求作為 HTTP_REFERER

  • November 10, 2015

在過去的幾天裡,我的一個網站**每分鐘收到數百個請求,**其中不存在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 qihoobot@qihoo.net)
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 下。我能做些什麼?建議聯繫託管服務提供商。我做到了,但我的託管服務提供商(最受歡迎的服務提供商之一)建議購買更昂貴的套餐,其中包含更多資源。:)

Froggiz解決方案正是我想要的。

這是阻止攻擊者的規則

# 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 doc 所建議的那樣 https://httpd.apache.org/docs/2.4/en/rewrite/access.html

如果您正在使用另一個重寫規則(例如短網址),您需要放置我之前發布的規則,以便首先使用

引用自:https://serverfault.com/questions/734923