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 防火牆:雙宿主機架構、ipchains 規則與復合型防護實戰

編輯:Linux 教學

利用閒置 PC 搭配 Linux 核心內建封包過濾功能,即可構建企業級防火牆,替代昂貴專用硬體設備。本文詳細記錄基於 Linux 2.2 核心(ipchains)的雙宿主機防火牆部署全流程:架構選型、設計策略、核心模組、規則腳本與驗證測試。

一、防火牆類型與架構選型

類型工作層級特點局限
封包過濾網路層 (L3/L4)高效能、透明、規則簡單無法檢視應用層內容、難防特定應用攻擊
應用代理應用層 (L7)深度檢視、精細控制、隱藏內網結構效能較低、需每協定寫代理、可能成單點故障
狀態檢測L3-L7追蹤連線狀態、動態開放埠口核心模組複雜、記憶體佔用高

三大經典架構

  • 雙宿主機:防火牆雙網卡分別連內網/外網,**本文採用**,適合中小企業
  • 屏蔽主機:代理伺服器僅連內網,外網由路由器隔離
  • 屏蔽子網 (DMZ):雙防火牆夾著 DMZ,最高安全等級,成本最高

二、安全策略設計原則

  1. 預設拒絕:先封鎖所有,再逐項放行所需服務(白名單模式)。邏輯上規則集更小、更易管理、新協定風險可控。
  2. 最小權限:僅開放業務必要埠口(HTTP 80、HTTPS 443、SMTP 25、DNS 53 等)
  3. 深度防禦:封包過濾 + 應用代理 (TIS FWTK) 形成復合型防火牆

三、Linux 核心封包過濾機制 (ipchains)

Linux 2.2 核心使用 ipchains,四條內建鏈:

  • Input:處理**進入**本機的封包
  • Output:處理本機**發出**的封包
  • Forward:處理**轉發**經過本機的封包(路由功能啟用時)
  • User-defined:自訂鏈,模組化管理複雜規則

封包流向決策邏輯:

封包進網卡
   → Input 鏈規則匹配 → ACCEPT → 路由決策
                                    ↓
                              本機處理 / 轉發
                                    ↓
                              Forward 鏈 (轉發) → ACCEPT → Output 鏈 → 發送

規則匹配順序:逐條檢查,首次匹配決定動作。動作:ACCEPT、DENY、REJECT (回 ICMP)、MASQ (IP 偽裝/NAT)、REDIRECT (透明代理)、RETURN (返回上層鏈)。

四、實戰部署:雙宿主機防火牆規則腳本

環境假設

  • 防火牆主機:雙網卡 eth0 (內網)、eth1 (外網)
  • 內網:192.168.100.0/24,防火牆內網 IP 192.168.100.1
  • 外網:公網 IP 202.101.2.25 (eth1)
  • 策略:預設允許流出/轉發,**精準封鎖** IP 欺騙、廣播風暴、ICMP 攻擊等惡意封包

規則腳本 (/etc/rc.firewallrules)

#!/bin/sh
IPCHAINS=/sbin/ipchains
LAN_IF=eth0
LAN_NET=192.168.100.0/24
WAN_IF=eth1
WAN_IP=202.101.2.25
ANY=0/0

# 1. 清空所有規則
$IPCHAINS -F input
$IPCHAINS -F output
$IPCHAINS -F forward

# 2. 設定預設策略 (謹慎:遠端管理時勿鎖死自己)
$IPCHAINS -P input ACCEPT
$IPCHAINS -P output ACCEPT
$IPCHAINS -P forward ACCEPT

# 3. 本地回環允許
$IPCHAINS -A input -i lo -j ACCEPT
$IPCHAINS -A output -i lo -j ACCEPT

# 4. 禁止 IP 欺騙:來源為內網 IP 但從外網介面進入
$IPCHAINS -A input -i $WAN_IF -s $LAN_NET -j DENY
$IPCHAINS -A input -i $WAN_IF -s 127.0.0.0/8 -j DENY
$IPCHAINS -A input -i $WAN_IF -s 10.0.0.0/8 -j DENY
$IPCHAINS -A input -i $WAN_IF -s 172.16.0.0/12 -j DENY
$IPCHAINS -A input -i $WAN_IF -s 192.168.0.0/16 -j DENY

# 5. 禁止廣播/多播封包
$IPCHAINS -A input -d 255.255.255.255 -j DENY
$IPCHAINS -A input -d 224.0.0.0/4 -j DENY

# 6. 禁止惡意 ICMP 類型 (重定向、來源抑制、時間戳等)
$IPCHAINS -A input -p icmp --icmp-type redirect -j DENY
$IPCHAINS -A input -p icmp --icmp-type source-quench -j DENY
$IPCHAINS -A input -p icmp --icmp-type timestamp-request -j DENY
$IPCHAINS -A input -p icmp --icmp-type address-mask-request -j DENY
# 允許必要 ICMP: echo-reply(0), destination-unreachable(3), time-exceeded(11), parameter-problem(12)
$IPCHAINS -A input -p icmp -j ACCEPT

# 7. 內網介面轉發規則:允許內網存取外網
$IPCHAINS -A forward -i $LAN_IF -s $LAN_NET -d $ANY -j ACCEPT
$IPCHAINS -A forward -i $WAN_IF -s $ANY -d $LAN_NET -j ACCEPT

# 8. 外網介面輸入規則:僅允許必要服務 (SSH、DNS 回應等)
$IPCHAINS -A input -i $WAN_IF -p tcp -d $WAN_IP --dport 22 -j ACCEPT   # SSH 管理
$IPCHAINS -A input -i $WAN_IF -p udp -d $WAN_IP --dport 53 -j ACCEPT   # DNS
$IPCHAINS -A input -i $WAN_IF -p tcp --sport 53 -j ACCEPT              # DNS TCP 回應
# 拒絕其他外網主動連入
$IPCHAINS -A input -i $WAN_IF -j DENY

# 9. IP 偽裝 (NAT) 啟用內網上網
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPCHAINS -A forward -s $LAN_NET -d $ANY -j MASQ

# 10. 記錄被拒絕封包 (可選)
$IPCHAINS -A input -j DENY -l
$IPCHAINS -A forward -j DENY -l

部署生效

chmod +x /etc/rc.firewallrules
echo "/etc/rc.firewallrules" >> /etc/rc.d/rc.local
# 立即執行
/etc/rc.firewallrules

五、進階強化:復合型防火牆

在封包過濾基礎上部署 **TIS Firewall Toolkit (FWTK)** 等應用代理套件:

  • smap:SMTP 郵件代理,過濾垃圾郵件、緩衝溢位攻擊
  • http-gw:HTTP 代理,URL 過濾、病毒掃描整合、存取控制
  • ftp-gw:FTP 代理,指令過濾、資料連線控制
  • plug-gw:通用 TCP 代理,支援任意協定透明穿透

代理服務運行於防火牆主機用戶態,**不直接暴露內網服務**,即使代理程式被攻破,攻擊者仍處於 DMZ/防火牆主機,無法直接跳板至內網核心資產。

六、驗證與維運

任務指令/方法
檢視規則ipchains -L -n -v
即時監控日誌tail -f /var/log/messages | grep IPCHAINS (需核心啟用 CONFIG_IP_FIREWALL_VERBOSE)
測試連通性內網主機 ping 外網、瀏覽網頁、SSH 管理防火牆
掃描測試外部 nmap -sS 驗證埠口關閉
備份規則ipchains-save > /etc/ipchains.rules

七、現代化遷移提示

Linux 2.4+ 核心已棄用 ipchains 改用 **iptables (Netfilter)**,功能更強(狀態檢測、NAT 分離、模組化擴展)。新部署請直接採用 iptables 或更高階的 firewalld/ufw/nftables。本文架構邏輯(雙宿主機、預設拒絕、分層規則、復合型防禦)完全適用,僅語法與模組不同。

Copyright © Windows教程網 All Rights Reserved