萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 電腦入門

Linux 秒級封禁高併發攻擊 IP:基於 netstat + iptables 自動化腳本實戰

面對 CC 攻擊、惡意爬蟲,單一 IP 短時間內對 80 端口發起大量連接。本文提供一個可落地的 Bash 腳本,每分鐘掃描連接數,自動將超閾值 IP 丟入 iptables 黑名單。

腳本核心邏輯

#!/bin/bash
# 統計 80 端口連接數,提取 IP 並計數,門檻 100
netstat -an | grep :80 | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '$1 > 100 {print $1,$2}' > /root/bad_ip.txt
cat /root/bad_ip.txt >> /root/back_bad.txt  # 歷史歸檔

# 逐行讀取 IP 並封禁(示範前 3 個,實際建議全量迴圈)
for ip in $(awk '{print $2}' /root/bad_ip.txt); do
    iptables -A INPUT -p tcp -s "$ip" -j REJECT
done

生產環境強化建議

  • 完整迴圈: 使用 while read count ip; do ... done < /root/bad_ip.txt 處理所有超標 IP。
  • 白名單機制: 排除負載均衡、監控、合作夥伴 IP,避免誤封。
  • 動態閾值: 結合 ss -s 總連接數、帶寬使用率動態調整門檻。
  • 自動解封: 配合 iptables -D 或 fail2ban 設定封禁時效 (如 1 小時)。
  • 日誌審計: 封禁動作寫入 syslog,配合 ELK/Splunk 告警。
  • 系統級部署: 放入 /etc/cron.d/ 或 systemd timer,確保權限與環境變數正確。

替代方案對比

方案優點缺點
本腳本零依賴、極輕量、透明可控需自行處理邊界情況、無 Web UI
fail2ban成熟、支援多服務、正則靈活、自動解封Python 依賴、配置稍複雜
CrowdSec眾源威脅情報、決策引擎、現代化架構資源佔用較大、學習曲線
WAF (ModSecurity/Nginx+Lua)應用層防護、精準語義分析延遲略高、規則維護成本

腳本只是起點,完整防禦體系需「邊緣清洗 + 主機防護 + 威脅情報 + 應急響應」多層疊加。

copyright © 萬盛學電腦網 all rights reserved