網路環境本質不安全,防火牆是系統防禦的第一道防線。Linux 核心 2.4+ 內建 netfilter 框架,配合用戶空間工具 iptables,提供封包過濾、NAT、封包修改等企業級功能。本文系統講解核心概念、四大表五大鏈、規則語法與實戰範例。

圖 1:三大表功能對照
| 表名 | 用途 | 核心鏈 |
|---|---|---|
| filter | 封包過濾(預設表) | INPUT、OUTPUT、FORWARD |
| nat | 網址轉換 | PREROUTING、POSTROUTING、OUTPUT |
| mangle | 封包標記/修改 TOS、TTL | 五大鏈皆有 |
| raw | 連線追蹤豁免 | PREROUTING、OUTPUT |
iptables [-t 表] 命令 [匹配條件] [動作]

-A 追加規則至鏈尾-I 插入規則至指定位置-D 刪除規則-L 列出規則-F 清空鏈-Z 歸零計數器-N 建立用戶自定義鏈-P 設定預設政策
-p protocol:tcp/udp/icmp/all-s IP[/mask]:來源 IP-d IP[/mask]:目的 IP-i interface:進入介面-o interface:離開介面--sport/--dport:來源/目的埠-m state --state:連線狀態
ACCEPT:允許通過DROP:靜默丟棄REJECT:拒絕並回應 ICMP/TCP RSTLOG:記錄系統日誌REDIRECT:導向本機埠MASQUERADE:動態 NAT(ADSL 適用)SNAT/DNAT:靜態來源/目的 NATMARK:打標記供 QoS/策略路由# 1. 設定預設政策
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 2. 允許回環介面
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 3. 允許已建立/相關連線
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 4. 開放 SSH(限制來源 IP)
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
# 5. 開放 HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 6. 允許 ICMP Ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# 7. 記錄並拒絕其餘
iptables -A INPUT -j LOG --log-prefix "INPUT_DROP: "
iptables -A INPUT -j REJECT
# 開啟轉發
echo 1 > /proc/sys/net/ipv4/ip_forward
# 動態 MASQUERADE(適用動態 IP)
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# 或靜態 SNAT(固定公網 IP)
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 203.0.113.10
# 端口映射(DNAT):公開 8080 映射內網 Web
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
service iptables save 存至 /etc/sysconfig/iptablesiptables-save > /etc/sysconfig/iptables,配合 iptables-restorefirewall-cmd(firewalld)、nftables(核心 3.13+)-m limit --limit 3/min 限制日誌頻率,-m recent 防暴力破解-N SSH_GUARDESTABLISHED,RELATED 減少規則數量--tcp-flags 精準匹配