Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

iptables 防火牆規則中文手冊:從鏈表結構到實戰腳本編寫

編輯:Linux 教學

iptables 是 Linux 核心層封包過濾框架,掌握其 四表五鏈 架構與規則撰寫邏輯,即可構建企業級主機防火牆。本文系統整理核心概念、指令語法、擴充模組與實戰範本。

核心架構:四表五鏈

                       封包流向
                    ┌─────────────────┐
                    │   raw 表        │  (連線追蹤前處理)
                    └────────┬────────┘
                             │
                    ┌────────▼────────┐
                    │  mangle 表      │  (修改封包標記/TOS/TTL)
                    └────────┬────────┘
                             │
              ┌──────────────┼──────────────┐
              ▼              ▼              ▼
        ┌──────────┐  ┌──────────┐  ┌──────────┐
        │ nat 表   │  │ filter表 │  │ nat 表   │
        │ PREROUTING│  │  INPUT   │  │ POSTROUTING│
        └────┬─────┘  └────┬─────┘  └────┬─────┘
             │             │             │
             ▼             ▼             ▼
        [路由決定]    [本地進程]     [輸出介面]
             │             │             │
             ▼             ▼             ▼
        ┌──────────┐  ┌──────────┐  ┌──────────┐
        │ nat 表   │  │ filter表 │  │ mangle表 │
        │ OUTPUT   │  │  OUTPUT  │  │  OUTPUT  │
        └──────────┘  └──────────┘  └──────────┘
             │             │
             ▼             ▼
        [路由決定]    [本地產生]
             │             │
             ▼             ▼
        ┌──────────┐  ┌──────────┐
        │ filter表 │  │ nat 表   │
        │ FORWARD  │  │ POSTROUTING│
        └──────────┘  └──────────┘
  • filter 表 (預設):INPUT (進站)、FORWARD (轉發)、OUTPUT (出站) —— 主要防火牆邏輯
  • nat 表:PREROUTING (DNAT)、POSTROUTING (SNAT/Masquerade)、OUTPUT (本機發出 DNAT)
  • mangle 表:修改封包元資料 (TOS、TTL、Mark) 供 QoS/策略路由使用
  • raw 表:NOTRACK 繞過連線追蹤、TRACE 除錯

指令語法速查

iptables [-t 表] 命令 鏈 條件 -j 目標

# 命令
-A  附加規則至鏈末尾
-I  插入規則至指定位置 (預設鏈首)
-D  刪除規則 (按編號或完整匹配)
-R  替換指定編號規則
-L  列出規則 (-n 數位顯示 -v 詳述 --line-numbers 編號)
-F  清空鏈規則
-Z  歸零計數器
-N  新增使用者自訂鏈
-X  刪除使用者自訂鏈 (無引用時)
-P  設定鏈預設政策
-E  重命名鏈

常用匹配條件 (-m 模組)

模組關鍵參數用途
state / conntrack--state NEW,ESTABLISHED,RELATED,INVALID連線狀態防火牆 (核心)
tcp--dport 80 --sport 1024:65535 --tcp-flags SYN,RST,ACK SYNTCP 連接埠/旗標
udp--dport 53UDP 連接埠
icmp--icmp-type echo-requestICMP 類型
iprange--src-range 192.168.1.10-192.168.1.20IP 範圍 (非 CIDR)
recent--name ATTACK --set --rcheck --seconds 60 --hitcount 10近期連線限制 (防暴力破解)
limit--limit 5/min --limit-burst 10速率限制 (日誌/防洩漏)
owner--uid-owner 1000進程擁有者匹配
string--string "malware" --algo bm應用層內容匹配
time--timestart 09:00 --timestop 18:00時間段控制

目標動作 (-j)

  • ACCEPT:放行
  • DROP:靜默丟棄 (無回應)
  • REJECT:拒絕並回應 (ICMP port-unreachable / TCP RST)
  • LOG:記錄核心日誌 (配合 --log-prefix)
  • RETURN:返回呼叫鏈
  • REDIRECT:重導向本機埠 (透明代理)
  • MASQUERADE:動態 SNAT (動態 IP 上網)
  • DNAT:目的地址轉換 (端口映射)
  • MARK:打標記供策略路由/QoS

實戰範本:基礎主機防護腳本

#!/bin/bash
IPT=/sbin/iptables

# 1. 清空預設規則
$IPT -F
$IPT -X
$IPT -Z

# 2. 設定預設政策 (拒絕進站/轉發,允許出站)
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT

# 3. 信任本地回環
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# 4. 允許已建立/相關連線
$IPT -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 5. 允許 ICMP (ping/MTU探測)
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT

# 6. 開放必要服務 (範例)
$IPT -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT   # SSH
$IPT -A INPUT -p tcp --dport 80,443 -m conntrack --ctstate NEW -j ACCEPT # HTTP/HTTPS

# 7. 防暴力破解 (SSH 最近 60 秒超過 3 次新連線即封鎖 10 分鐘)
$IPT -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --name SSH_ATTACK --set
$IPT -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --name SSH_ATTACK --update --seconds 600 --hitcount 4 -j DROP

# 8. 記錄被拒絕封包 (限速避免日誌洩漏)
$IPT -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPT_INPUT_DROP: " --log-level 4

# 9. 儲存規則 (CentOS/RHEL)
service iptables save
# 或 iptables-save > /etc/sysconfig/iptables

進階主題

  • IPv6:ip6tables 語法相同,地址為 IPv6 格式
  • 持久化:iptables-save/restore、systemd 服務、/etc/iptables/rules.v4 (Debian/Ubuntu)
  • 效能優化:將高頻規則前置、使用 ipset 管理大量 IP 黑白名單
  • 前端工具:ufw (Ubuntu)、firewalld (RHEL/CentOS 7+)、shorewall、ferm

結語

iptables 核心在於 四表五鏈流向 + 狀態匹配 (conntrack) + 精準目標動作。建立「預設拒絕、最小授權、記錄異常、限速防洩漏」防禦心模,配合 ipset 與前端工具落地,即可構建堅固主機防火牆。

Copyright © Windows教程網 All Rights Reserved