SUSE Linux 防火牆設定指南(含 YaST2 與 CLI 操作)
防火牆是 Linux 系統安全的第一道防線,用於控制網路流量的允許與拒絕。本指南涵蓋 openSUSE / SUSE Linux Enterprise (SLE) 的防火牆管理,包含 YaST2 圖形/文字介面、firewalld
、iptables
與 nftables
的完整配置與實用範例。
目錄
系統防火牆概述
- YaST2:SuSE 提供的整合化管理工具,可透過 GUI 或文字模式配置防火牆。
- firewalld:基於區域(zone)與服務(service)管理,openSUSE 預設支援。
- iptables:傳統的 netfilter 防火牆框架。
- nftables:取代 iptables 的新一代防火牆工具,SLE15+ 和最新 openSUSE 推薦使用。
YaST2 防火牆設定
1. 圖形介面 (GUI)
- 打開 YaST2 → 安全與用戶 → 防火牆。
- 切換至 區域(Zones)分頁,為網路介面指派對應區域(如
public
,internal
)。 - 服務(Allowed Services)分頁,選擇要開放的服務(HTTP, HTTPS, SSH 等)。
- 進階設定 可以加入自訂埠、rich rules 或 Port Forwarding。
- 點擊 下一步 → 完成,並儲存設定。
2. 文字模式
sudo yast2 firewall
- 使用方向鍵、空格鍵切換選項。
- 在「Allowed Services」選取服務,或在「Custom Rules」加入 raw iptables/nft 規則。
- 完成後選擇「Accept」以套用。
Firewalld 基本操作
前提:已安裝並啟動 firewalld
sudo zypper install -y firewalld sudo systemctl enable --now firewalld
-
檢查狀態
sudo firewall-cmd --state
-
列出目前區域與規則
sudo firewall-cmd --list-all
-
允許服務
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
-
允許特定埠
sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload
-
設定預設拒絕
sudo firewall-cmd --set-default-zone=drop
Firewalld 高階設定
-
允許單一 IP 存取 SSH
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept' sudo firewall-cmd --reload
-
阻擋特定 IP
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.50" drop' sudo firewall-cmd --reload
-
Port Forwarding (8080 → 80)
sudo firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toport=80 sudo firewall-cmd --reload
-
自訂服務定義
- 建立
/etc/firewalld/services/custom-service.xml
:<?xml version="1.0" encoding="utf-8"?> <service> <short>Custom</short> <description>Custom TCP on 12345</description> <port protocol="tcp" port="12345"/> </service>
- 啟用:
sudo firewall-cmd --permanent --add-service=custom-service sudo firewall-cmd --reload
- 建立
Iptables (傳統) 設定
若系統僅安裝 iptables
sudo zypper install -y iptables iptables-save
-
檢視規則
sudo iptables -L -v -n
-
允許 SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-
阻擋 IP
sudo iptables -A INPUT -s 203.0.113.50 -j DROP
-
保存規則
sudo iptables-save | sudo tee /etc/sysconfig/iptables
Nftables 設定
SLE15+ 與 openSUSE Leap 建議使用 nftables
sudo zypper install -y nftables sudo systemctl enable --now nftables
-
編輯
/etc/nftables.conf
:table inet filter { chain input { type filter hook input priority 0; iif "lo" accept ip saddr 203.0.113.50 drop tcp dport 22 accept counter drop } }
-
重啟服務
sudo systemctl restart nftables
安全最佳實踐
-
預設拒絕,允許特定
sudo firewall-cmd --set-default-zone=drop
-
結合 Fail2Ban 限制 SSH 嘗試
sudo zypper install -y fail2ban sudo systemctl enable --now fail2ban
-
阻擋 Ping
sudo firewall-cmd --permanent --add-icmp-block=echo-request sudo firewall-cmd --reload
日誌與錯誤排除
-
Firewalld 記錄拒絕
sudo firewall-cmd --set-log-denied=all sudo systemctl restart firewalld
之後可透過:
sudo journalctl -u firewalld -e
-
檢查 iptables/nftables 記錄
sudo iptables -L -v -n sudo nft list ruleset
-
使用 nmap 測試
nmap -p22,80,443 your.server.ip
結語
本指南涵蓋了 SUSE Linux 上防火牆的多種管理方式,從 YaST2 到 firewalld、iptables、nftables,並提供範例與最佳實踐,協助您建立堅固的網路邊界與安全策略。