從 Yaocheng 那裡看到了這篇文章,好東西,需要珍藏下。這裡列舉了 Linux 下面幾個經常遇見的攻擊手段和應對手段。以下 iptables 規則應該普遍適應於各種 Linux 版本,只是要注意保存,以免系統重啟後失效
初始創建的 TCP 連接必須含 SYN
復制代碼代碼如下:
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
丟棄 Fragments 碎片數據包 (碎片數據包攻擊的後果: 可能導致正常數據包丟失)
復制代碼代碼如下:
iptables -A INPUT -f -j DROP
防止 SYN 洪水攻擊 (限制的速度根據自身情況調整)
復制代碼代碼如下:
iptables -A INPUT -p tcp -m state --state NEW -m limit --limit 100/second --limit-burst 300 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -j DROP
丟棄異常的 XMAS 數據包 (異常的 XMAS 數據包攻擊的後果: 可能導致某些系統崩潰)
復制代碼代碼如下:
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
丟棄 NULL 空數據包
復制代碼代碼如下:
iptables -A INPIT -p tcp --tcp-flags ALL NONE -j DROP
允許有限的 TCP RST 請求 (限制的速度根據自身情況調整)
復制代碼代碼如下:
iptables -A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 10/second --limit-burst 30 -j ACCEPT
丟棄無效數據包
復制代碼代碼如下:
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
阻擋欺詐 IP 地址的訪問 (以下為 RFC1918 類型和 IANA 預留地址,多為 LAN 或者多播地址,這些是不可能作為公網地址源的)
復制代碼代碼如下:
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 169.254.0.0/16 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -s 127.0.0.0/8 -j DROP
iptables -A INPUT -s 224.0.0.0/4 -j DROP
iptables -A INPUT -d 224.0.0.0/4 -j DROP
iptables -A INPUT -s 240.0.0.0/5 -j DROP
iptables -A INPUT -d 240.0.0.0/5 -j DROP
iptables -A INPUT -s 0.0.0.0/8 -j DROP
iptables -A INPUT -d 0.0.0.0/8 -j DROP
iptables -A INPUT -d 239.255.255.0/24 -j DROP
iptables -A INPUT -d 255.255.255.255 -j DROP
阻擋自定義的惡意 IP 地址的訪問
復制代碼代碼如下:
iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
禁止 ICMP PING
復制代碼代碼如下:
iptables -A INPUT -p icmp -m icmp --icmp-type echo-request -j DROP