概述
ufw-before-rules 檔案包含 UFW 啟用時最先載入的 `iptables` 規則。這使得使用者能夠新增 UFW 的高階命令無法提供的特定場景(例如:載入特定模組、進階路由規則、特定封包操作等)的自訂規則。新增至此檔案的規則會優先於 UFW 的預設策略和使用者自訂規則生效。
主要特點
- 定義優先於 UFW 預設規則生效的 `iptables` 規則
- 可使用低階 `iptables` 語法進行精細控制
- 用於處理 UFW 命令難以實現的進階防火牆設定
- 檔案路徑:`/etc/ufw/before.rules`
安裝
ufw-before-rules 檔案是 UFW (Uncomplicated Firewall) 套件的一部分。因此,安裝 UFW 時也會一併建立此檔案。大多數最新的 Linux 發行版預設未安裝 UFW,因此需要使用以下命令進行安裝。
Debian/Ubuntu 系統
sudo apt update
sudo apt install ufw
使用 APT 套件管理器安裝 UFW。
CentOS/RHEL 系統
sudo yum install epel-release
sudo yum install ufw
使用 YUM 或 DNF 套件管理器安裝 UFW。
安裝確認
安裝後,可以檢查 UFW 的狀態以確認是否正常安裝。
UFW 狀態檢查
sudo ufw status
使用範例
ufw-before-rules 檔案需要直接編輯,並在修改後重新載入 UFW 以套用變更。
檢查 ufw-before-rules 檔案位置
ls -l /etc/ufw/before.rules
檢查 ufw-before-rules 檔案的預設路徑。
檢查 ufw-before-rules 檔案內容
cat /etc/ufw/before.rules
檢查檔案的目前內容以了解預設規則。
編輯 ufw-before-rules 檔案
sudo nano /etc/ufw/before.rules
# 在檔案內容的適當位置新增以下行:
# -A ufw-before-input -i eth0 -p icmp --icmp-type echo-request -j ACCEPT
使用文字編輯器(例如 nano 或 vi)編輯檔案。例如,可以新增一條規則以允許特定介面上的 ICMP (ping)。以下範例顯示如何在 `*filter` 區段的 `INPUT` 鏈中新增允許 `eth0` 介面上的 ICMP 的規則。
重新載入 UFW 以套用變更
sudo ufw reload
修改 ufw-before-rules 檔案後,必須重新載入 UFW 才能套用變更。
停用並重新啟用 UFW (強制套用)
sudo ufw disable
sudo ufw enable
有時僅執行 `ufw reload` 可能不足夠。在此情況下,可以完全停用 UFW 後再重新啟用,以載入所有規則。此操作可能會暫時中斷網路連線,請謹慎操作。
提示與注意事項
編輯 ufw-before-rules 檔案時,由於它直接影響系統的網路安全,因此需要格外小心。
注意事項
- **理解 `iptables` 語法**:此檔案使用純粹的 `iptables` 語法,因此必須理解 `iptables` 規則的撰寫方式。錯誤的規則可能會完全阻斷系統的網路連線。
- **必須備份**:修改檔案前,請務必備份原始檔案。`sudo cp /etc/ufw/before.rules /etc/ufw/before.rules.bak`
- **謹慎測試**:新增新規則後,務必徹底測試該規則是否按預期工作,以及是否對其他重要服務產生影響。
- **遠端連線注意**:在遠端伺服器上操作時,錯誤的規則可能會導致 SSH 連線中斷。請在可透過主控台存取的環境下操作,或考慮使用在套用規則後一段時間內自動回滾的腳本。
提示
- **優先使用 UFW 命令**:如果可能,建議使用 `ufw` 命令來設定規則。`ufw` 命令提供更安全且易於使用的抽象層。
- **善用註解**:在檔案中使用註解 (`#`) 明確記錄每條規則的目的,這對於日後理解和管理規則非常有幫助。
- **最小化變更**:建議僅在絕對必要時才對 `before.rules` 檔案進行最小化的變更。複雜的規則可能會增加除錯的難度。