轉載請注明出處:小鋒學長生活大爆炸[xfxuezhagn.cn]
如果本文幫助到了你,歡迎[點贊、收藏、關注]哦~
背景說明
????????最近我的網站在被人瘋狂刷流量,導致正常訪問都不行,沒辦法只好找找怎么給他限制一下。
????????apache自帶有一個防刷模塊mod_evasive,它是“輕度防御”,適合防止刷流量/秒刷請求,不是專門防 DDoS 的完整方案。不過也能緩解一下了,畢竟輕量不臃腫。
開啟模塊
1、安裝模塊
sudo apt update
sudo apt install libapache2-mod-evasive
2、啟用模塊
sudo a2enmod evasive
sudo systemctl restart apache2
3、創建日志目錄
sudo mkdir /var/log/mod_evasive
sudo chown www-data:www-data /var/log/mod_evasive
4、配置 mod_evasive
sudo vim /etc/apache2/mods-available/evasive.conf
配置示例:
<IfModule mod_evasive20.c>DOSHashTableSize 3097DOSPageCount 5DOSSiteCount 30DOSPageInterval 1DOSSiteInterval 1DOSBlockingPeriod 600DOSEmailNotify you@example.comDOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP"DOSLogDir "/var/log/mod_evasive"
</IfModule>
參數說明:
參數 說明 DOSPageCount
同一個 IP 在多少秒內訪問同一個 URL 超過幾次就觸發(默認建議 2~5) DOSSiteCount
同一個 IP 在多少秒內訪問整個站點總次數限制 DOSPageInterval
頁面請求間隔時間(秒) DOSSiteInterval
站點請求間隔時間(秒) DOSBlockingPeriod
觸發封鎖后禁止訪問時間(秒) DOSEmailNotify
可選:觸發時通知管理員 DOSSystemCommand
可選:觸發時執行系統命令(比如 iptables 封禁) DOSLogDir
日志目錄(必須存在)
我的服務器是2核2G,帶寬為4M。我用的配置是:
<IfModule mod_evasive20.c>DOSHashTableSize 3097# 單 IP 每秒訪問同一頁面超過 3 次就觸發(適用于刷圖片、下載)DOSPageCount 3DOSPageInterval 1# 單 IP 每秒對整個站點訪問總次數限制為 20(足夠瀏覽頁面)DOSSiteCount 20DOSSiteInterval 1# 觸發封鎖后封禁 600 秒(10 分鐘)DOSBlockingPeriod 600# 日志目錄(需要提前創建)DOSLogDir "/var/log/mod_evasive"# 可選:郵件通知(改成你自己的郵箱)# DOSEmailNotify your@email.com# 封禁命令(也可以注釋掉,僅限拒絕請求)DOSSystemCommand "sudo iptables -I INPUT -s %s -j DROP" </IfModule>
5、重啟 Apache 生效
sudo systemctl restart apache2
效果展示
????????效果還是有一點的,至少帶寬不會被一直占著了,肉眼可見的流量攔截: