面對分散式阻斷服務攻擊,硬體防火牆 (硬防) 固然最佳,但成本高昂。DDoS Deflate 這款輕量 Shell 腳本,透過 netstat/ss 監控連線數,自動呼叫 iptables 或 APF 封鎖異常 IP,是中小型 VPS/伺服器零成本的自動化緩解方案。
# 統計每 IP 連線數 (ESTABLISHED/SYN_RECV 等)
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
# 輸出範例:
# 1 192.168.1.1
# 15 203.0.113.5
# 2311 67.215.242.196 ← 異常:單 IP 兩千連線
一般單 IP 連線數 < 50 為正常;超過 150 即可疑 (視服務類型調整)。
wget https://www.inetbase.com/scripts/ddos/install.sh
chmod 700 install.sh
./install.sh
安裝完成後,配置檔位於 /usr/local/ddos/ddos.conf,定時任務寫入 /etc/cron.d/ddos.cron (預設每分鐘執行)。
| 參數 | 預設值 | 建議值 | 說明 |
|---|---|---|---|
IGNORE_IP_LIST | /usr/local/ddos/ignore.ip.list | 加入管理 IP、CDN 邊緣節點、監控伺服器 IP | 白名單,防止誤封 |
FREQ | 1 | 1 | 檢查間隔 (分鐘) |
NO_OF_CONNECTIONS | 150 | 100-200 | 單 IP 連線閾值,超過即封鎖 |
APF_BAN | 1 | 0 | 0=使用 iptables,1=使用 APF,建議 0 |
KILL | 1 | 1 | 1=實際封鎖,0=僅記錄 (測試用) |
EMAIL_TO | root | admin@yourdomain.com | 封鎖通知郵箱 |
BAN_PERIOD | 600 | 3600-86400 | 封鎖秒數 (1小時-1天),視攻擊強度調整 |
# /usr/local/ddos/ddos.conf
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"
CRON="/etc/cron.d/ddos.cron"
FREQ=1
NO_OF_CONNECTIONS=150
APF_BAN=0
KILL=1
EMAIL_TO="security@company.com"
BAN_PERIOD=3600
# 白名單範例 /usr/local/ddos/ignore.ip.list
10.0.0.0/8
192.168.0.0/16
203.0.113.0/24 # CDN 節點
# 修改腳本核心檢測邏輯
# 原:netstat -ntu
# 新:ss -ntu state established '( sport = :http or sport = :https )'
# /etc/fail2ban/jail.d/ddos.conf
[ddos]
enabled = true
filter = ddos
action = iptables-allports[name=ddos]
logpath = /var/log/ddos.log
maxretry = 150
findtime = 60
bantime = 3600
net.ipv4.tcp_syncookies=1、net.ipv4.tcp_max_syn_backlog=8192、net.core.somaxconn=65535
# 手動執行測試
/usr/local/ddos/ddos.sh --cron
# 查看封鎖規則
iptables -L -n -v | grep DROP
# 模擬攻擊 (僅限自有測試環境)
# hping3 -S -p 80 --flood target_ip
# 或使用 slowhttptest 測試 Slowloris
DDoS Deflate 部署簡單、依賴少、效果立竿見影,適合缺乏硬防預算的中小型業務。但需認清其屬於「應用層緩解」,無法應對頻寬耗盡型攻擊 (Volumetric Attack)。生產環境建議採用「邊緣緩解 (CDN/WAF) + 主機層自動封鎖 (Fail2Ban/CrowdSec) + 核心參數調優」的纏繞防禦體系。
Verilog wire 與 reg 深度對比:類型語義、綜合映射、埠連接規則與避坑指南
Mac 也能用 Windows 7 Aero Snap:Cinch 讓視窗管理超高效
Linux 用戶管理安全加固實戰:清理預設帳號、強化密碼策略、會話超時與關鍵檔案鎖定
Linux 網絡核心命令大全:netstat、nslookup、host、finger、ping 實戰詳解
Linux 硬碟分區最佳實踐:依據工作負載與容量規劃的完整方案
Linux sed 指令進階替換技巧:輸出、原地修改、行範圍、模式範圍、多模式並行
Linux 五大檔案搜尋指令詳解:find、locate、whereis、which、type
Linux 常見問題與錯誤中文解析:系統篇(MP3 播放、中文字型、Windows 分區掛載、輸入法、解壓、音量控制等)