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

Shorewall 防火牆單網卡靜態 IP 极速部署指南

編輯:Linux 教學

適用場景

單公網 IP、單網卡 (eth0) 的 Linux 服務器,需狀態檢測防火牆、開放特定服務端口(SSH、HTTP/HTTPS、自定義),禁止其餘入站連接。

安裝與核心配置四步走

1. 安裝

apt update && apt install shorewall shorewall6  # IPv6 同步部署

2. 複製單網卡範例配置

cp -r /usr/share/doc/shorewall/examples/one-interface/* /etc/shorewall/
cp -r /usr/share/doc/shorewall6/examples/one-interface/* /etc/shorewall6/

3. 啟用開機自啟

# /etc/shorewall/shorewall.conf
STARTUP_ENABLED=Yes

# /etc/default/shorewall
startup=1

4. 確認網卡名稱並調整 interfaces

ip -br link   # 假設為 eth0
# /etc/shorewall/interfaces
#ZONE   INTERFACE   OPTIONS
net     eth0        detect,tcpflags,logmartians,nosmurfs,blacklist

核心規則配置:rules 文件詳解

# /etc/shorewall/rules
#ACTION     SOURCE          DEST            PROTO   DEST PORT   RATE LIMIT
# 基礎防護
ACCEPT      net             $FW             icmp    echo-request    -       # 允許 ping
DROP        net             $FW             tcp     22              -       # 預設關閉 SSH(下文開放)
# 開放服務
ACCEPT      net             $FW             tcp     22              -       # SSH
ACCEPT      net             $FW             tcp     80,443          -       # HTTP/HTTPS
# 自定義:僅允許特定 IP 訪問管理端口
ACCEPT      net:203.0.113.5 $FW             tcp     8443            -       # 僅此 IP 可訪問 8443
# 拒絕其餘入站(隱含默認策略),出站允許
# 預設 policy: $FW net ACCEPT; net $FW DROP; 已在 policy 文件定義

關鍵語法速查

  • SOURCE:net (互聯網)、$FW (防火牆主機)、loc (內網區域)、net:IP (特定公網 IP)。
  • DEST:同源區域定義。
  • PROTO:tcp/udp/icmp/esp 等。
  • DEST PORT:端口號、逗號分隔列表、start:end 範圍、服務名 (需定義在 /etc/shorewall/services)。
  • RATE LIMIT:limit:burst 格式,如 5/minute:10。

策略文件:policy(區域間默認動作)

# /etc/shorewall/policy
#SOURCE     DEST     POLICY     LOG LEVEL   LIMIT
$FW         net      ACCEPT     info        -
net         $FW      DROP       info        -
net         all      DROP       info        -
# THE FOLLOWING POLICY MUST BE LAST
all         all      REJECT     info        -

啟動與驗證

shorewall check          # 語法檢查,無錯誤顯示 "Shorewall configuration verified"
shorewall start          # 啟動
shorewall status         # 顯示當前規則計數
iptables -nvL            # 底層 iptables 規則檢視
# 測試:外部嘗試連接 SSH/HTTP,確認通/阻符合預期

常見操作速查

任務命令
重新載入規則(無中斷現有連接)shorewall reload
暫時開放端口(調試)shorewall allow net $FW tcp 3306
永久開放端口編輯 rules → shorewall reload
查看日誌journalctl -u shorewall -f 或 dmesg -T | grep Shorewall
IPv6 同步配置編輯 /etc/shorewall6/ 對應文件 → shorewall6 reload

避坑指南

  • 鎖死自己:修改 SSH 規則前,務必保持一個已建立的 SSH 會話,或在 rules 中先添加 ACCEPT net $FW tcp 22 再 reload。
  • Docker/容器衝突:Docker 直接操作 iptables 可能破壞 Shorewall 規則。解決:DOCKER_OPTS="--iptables=false" 或使用 shorewall-docker 集成腳本。
  • 雲廠商安全組:AWS SG、Azure NSG、阿里云安全組為第一層過濾,Shorewall 為第二層,兩者規則需保持一致(安全組放行,Shorewall 精細控制)。

總結

Shorewall 以區域、策略、規則三層抽象,將複雜的 iptables 變為可讀、可維護的聲明式配置。單網卡服務器只需 interfaces、policy、rules 三個核心文件,十分鐘完成企業級防火牆部署。

Copyright © Windows教程網 All Rights Reserved