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

Linux 防火牆構建實戰:netfilter/iptables 核心機制與規則配置全解析

編輯:Linux 教學

前言

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

架構圖解

三種表實現的功能

圖 1:三大表功能對照

核心概念

  • netfilter: 核心空間掛鉤點,攔截封包於五個鏈點
  • iptables: 用戶空間管理工具,操作規則集
  • 表: 功能分類容器
  • 鏈: 規則串聯順序
  • 規則: 匹配條件 + 動作

四大表詳解

表名用途核心鏈
filter封包過濾(預設表)INPUT、OUTPUT、FORWARD
nat網址轉換PREROUTING、POSTROUTING、OUTPUT
mangle封包標記/修改 TOS、TTL五大鏈皆有
raw連線追蹤豁免PREROUTING、OUTPUT

五大標準鏈

  • PREROUTING: 封包進入介面,路由判斷前
  • INPUT: 目的為本機的封包
  • FORWARD: 經由本機轉發的封包
  • OUTPUT: 本機產生的封包
  • POSTROUTING: 路由判斷後,離開介面前

規則語法標準形式

iptables [-t 表] 命令 [匹配條件] [動作]

1. 常用命令

命令的功能和樣例

  • -A 追加規則至鏈尾
  • -I 插入規則至指定位置
  • -D 刪除規則
  • -L 列出規則
  • -F 清空鏈
  • -Z 歸零計數器
  • -N 建立用戶自定義鏈
  • -P 設定預設政策

2. 通用匹配條件

通用匹配及示例說明

  • -p protocol:tcp/udp/icmp/all
  • -s IP[/mask]:來源 IP
  • -d IP[/mask]:目的 IP
  • -i interface:進入介面
  • -o interface:離開介面
  • --sport/--dport:來源/目的埠
  • -m state --state:連線狀態

3. 常用動作

目標及示例說明

  • ACCEPT:允許通過
  • DROP:靜默丟棄
  • REJECT:拒絕並回應 ICMP/TCP RST
  • LOG:記錄系統日誌
  • REDIRECT:導向本機埠
  • MASQUERADE:動態 NAT(ADSL 適用)
  • SNAT/DNAT:靜態來源/目的 NAT
  • MARK:打標記供 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

NAT 實戰:內網共享上網

# 開啟轉發
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

規則持久化與管理

  • RHEL/CentOS 6:service iptables save 存至 /etc/sysconfig/iptables
  • RHEL/CentOS 7+:iptables-save > /etc/sysconfig/iptables,配合 iptables-restore
  • 現代替代:firewall-cmd(firewalld)、nftables(核心 3.13+)

進階技巧

  1. 模組擴展: -m limit --limit 3/min 限制日誌頻率,-m recent 防暴力破解
  2. 自定義鏈: 將同類規則模組化,如 -N SSH_GUARD
  3. 狀態機制: 善用 ESTABLISHED,RELATED 減少規則數量
  4. 效能優化: 高頻規則前置,使用 --tcp-flags 精準匹配
Copyright © Windows教程網 All Rights Reserved