UFW(簡單防火牆)是用於管理 Linux 系統上的防火牆規則的簡單工具。它簡化了配置防火牆的過程,對於可能發現傳統 iptables 具有挑戰性的新用戶特別有用。 UFW 提供了一種透過簡單命令建立和管理防火牆規則的簡單方法,使其既易於存取又有效。
UFW的技術特點包括:
- 使用方便:簡化了常見防火牆任務的命令。
- 預先配置的設定檔:帶有常用服務的設定檔。
- 記錄:允許輕鬆配置日誌以監控活動。
- IPv6支援:完全支援IPv6。
- 可擴充:可以使用附加規則進行擴展,以實現更高級的設定。
對於新用戶來說,UFW 通常比 iptables 更好,因為它隱藏了複雜性,同時仍提供強大的安全功能。它可以讓使用者快速設定防火牆規則,無需了解 iptables 的詳細語法和操作,減少出錯的機會。
本指南將向您展示如何在 Debian 12、11 或 10 上安裝和設定 UFW,涵蓋基本命令和技巧,以幫助您有效管理防火牆。
透過APT指令安裝UFW(簡單防火牆)
如果您是 Debian Linux 和命令終端機的新手,學習使用防火牆保護系統可能會令人畏懼。幸運的是,Debian 使用者可以輕鬆使用簡單防火牆 (UFW) 來管理系統的安全性。
在安裝 UFW 之前,必須確保您的系統是最新的,以避免安裝過程中出現任何衝突。執行以下命令來更新您的系統:
sudo apt update && sudo apt upgrade
請注意,如果您的 Linux 核心已更新,您可能需要重新啟動系統。
系統更新後,您可以透過執行以下命令來安裝 UFW:
sudo apt install ufw
與其他基於 Debian 的發行版(例如 Ubuntu)不同,Debian 中預設不安裝 UFW。因此,手動安裝UFW至關重要。
安裝UFW後,需要透過執行以下命令啟用該服務:
sudo systemctl enable ufw --now
此命令將在啟動時啟用 UFW 服務,確保您的系統在重新啟動後仍受到保護。
最後,必須驗證 UFW 的狀態以確保其運作無錯誤。您可以透過執行以下命令來檢查 UFW 服務的狀態:
systemctl status ufw
執行上述命令,您已成功安裝UFW並確保其正常運作。在下一步中,我們將探索使用 UFW 來保護您的系統。
啟用 UFW 防火牆
現在 UFW 已安裝並運行,防火牆將啟用。預設情況下,UFW 會阻止所有傳入流量並允許所有出站流量。啟用防火牆可確保您的系統因封鎖未經授權的存取而受到保護。
若要啟用 UFW,請執行以下命令:
sudo ufw enable
執行該命令後,您將收到一條確認訊息,表示防火牆處於活動狀態,並且每當您重新啟動系統時都會自動啟動。這是一個範例輸出:
Firewall is active and enabled on system startup
一旦防火牆處於活動狀態,它將阻止所有傳入系統的流量,從而保護您免受未經授權的存取。但是,值得注意的是,這也可能會阻止某些合法流量,例如存取您所需的服務。
檢查 UFW 狀態
啟用 UFW 防火牆後,驗證規則是否處於作用中且配置正確至關重要。您可以使用以下命令檢查防火牆的狀態:
sudo ufw status verbose
執行此命令將顯示防火牆的目前狀態,包括任何活動規則以及為傳入和傳出流量設定的預設策略。
若要更簡潔地了解防火牆規則,您可以使用「編號」選項。此選項按編號順序顯示您的防火牆規則,使識別和管理它們變得更加容易。使用以下指令依編號順序列出防火牆規則:
sudo ufw status numbered
編號的輸出以更有條理的方式顯示規則,從而更容易識別和管理它們。您可以使用「刪除」指令使用規則編號來修改或刪除特定規則。
總而言之,驗證防火牆的狀態對於確保您的系統免受未經授權的存取至關重要。使用此步驟中概述的命令,您可以快速檢查 UFW 防火牆的狀態並識別任何錯誤配置。
設定 UFW 預設策略
UFW 防火牆的預設設定是阻止所有傳入連線並允許所有出站連線。此配置是最安全的,因為它確保未經明確許可,未經授權的使用者無法連接到您的系統。若要允許傳入連接,您必須建立特定規則來允許基於 IP 位址、程式、連接埠或這些因素的組合的流量。
若要修改UFW規則,可以在終端機中輸入以下命令:
拒絕所有傳入連線:
sudo ufw default deny incoming
允許所有傳出連線:
sudo ufw default allow outgoing
預設情況下,UFW 已使用預設規則啟用。但是,您可以修改這些規則以滿足您的特定需求。例如,如果您想阻止所有出站連接並只允許特定的出站連接,您可以使用以下命令相應地調整規則:
若要阻止所有傳出連線:
sudo ufw default deny outgoing
值得注意的是,如果您需要找到預設的UFW防火牆策略,可以在/etc/default/ufw檔案中找到它們。此檔案包含 UFW 的配置設置,包括傳入和傳出流量的預設策略。透過修改此文件中的設置,您可以自訂防火牆規則以滿足您的特定安全需求。
附加 UFW 命令
以下各節將介紹 UFW 的一些基本面向。預設情況下,大多數桌面用戶將受益於簡單地阻止傳入連線並允許所有傳出流量,這適用於大多數環境。但是,UFW 提供了對桌上型電腦和伺服器有用的其他配置。下面將顯示一些可以使用 UFW 進行操作的範例。
查看 UFW 應用簡介
如果您有興趣了解有關 UFW 提供的應用程式設定檔的更多信息,您可以透過執行以下命令來查看它們:
sudo ufw app list
這將顯示所有可用應用程式設定檔的清單。請務必記住,應用程式清單可能會有所不同,具體取決於您系統上安裝的軟體。
UFW 應用程式設定檔的一項實用功能是取得有關特定設定檔的更多資訊。為此,請執行以下命令:
sudo ufw app info [application]
將 [application] 替換為您想要了解更多資訊的名稱。此命令將提供應用程式及其使用的連接埠的簡要描述。這在調查開放埠並嘗試確定它們屬於哪個應用程式時非常有用。
在 UFW 上啟用 IPv6
如果您的 Debian 系統配置了 IPv6,則必須確保 UFW 配置為支援 IPv6 和 IPv4 流量。預設情況下,UFW 應自動啟用對兩個版本的 IP 的支援;不過,最好確認一下這一點。
為此,請使用以下命令開啟預設的 UFW 防火牆檔案:
sudo nano /etc/default/ufw
文件打開後,找到以下行:
IPV6=yes
如果該值設為“no”,請將其變更為“yes”並按儲存文件 CTRL+O
進而 CTRL+X
退出。
更改檔案後,您需要重新啟動 UFW 防火牆服務才能使變更生效。為此,請執行以下命令:
sudo systemctl restart ufw
這將使用新配置重新啟動 UFW 防火牆服務,從而支援 IPv6 流量。
允許 UFW SSH 連接
SSH(安全外殼)對於遠端存取 Linux 伺服器至關重要。但是,預設情況下,UFW 不允許 SSH 連線。這可能會出現問題,特別是如果您遠端啟用了防火牆,因為您可能會發現自己被鎖定。若要允許 SSH 連接,您需要執行以下步驟。
首先,透過鍵入以下命令啟用 SSH 應用程式設定檔:
sudo ufw allow ssh
如果您為 SSH 連線設定了預設連接埠 22 以外的自訂偵聽連接埠(例如連接埠 3541),則必須透過鍵入下列命令在 UFW 防火牆上開啟該連接埠。
sudo ufw allow 3541/tcp
以下命令可用於阻止所有 SSH 連線或變更連接埠並封鎖舊的連線。
使用以下命令阻止所有 SSH 連線(確保可以進行本地存取):
sudo ufw deny ssh/tcp
如果變更自訂 SSH 端口,請開啟一個新端口並關閉現有端口,例如:
sudo ufw deny 3541/tcp
啟用 UFW 端口
UFW 可以允許存取應用程式或服務的特定連接埠。本節將介紹如何為 Web 伺服器開啟 HTTP(連接埠 80)和 HTTPS(連接埠 443)連接埠以及如何允許連接埠範圍。
若要允許 HTTP 連接埠 80,您可以使用以下任意命令:
透過應用程式設定檔允許:
sudo ufw allow 'Nginx HTTP
按服務名稱允許:
sudo ufw allow http
透過連接埠號碼允許:
sudo ufw allow 80/tcp
若要允許 HTTPS 連接埠 443,您可以使用以下任意命令:
透過應用程式設定檔允許:
sudo ufw allow 'Nginx HTTPS'
按服務名稱允許:
sudo ufw allow https
透過連接埠號碼允許:
sudo ufw allow 443/tcp
如果要同時允許 HTTP 和 HTTPS 端口,可以使用以下命令:
sudo ufw allow 'Nginx Full'
UFW 允許連接埠範圍
您可以允許單獨的連接埠和連接埠範圍。開啟連接埠範圍時,必須識別連接埠協定。
若要允許使用 TCP 和 UDP 協定的連接埠範圍,請使用下列命令:
sudo ufw allow 6500:6800/tcp
sudo ufw allow 6500:6800/udp
或者,您可以使用以下命令一次允許多個連接埠:
sudo ufw allow 6500, 6501, 6505, 6509/tcp
sudo ufw allow 6500, 6501, 6505, 6509/udp
允許 UFW 上的遠端連接
在 UFW 上啟用遠端連線對於網路目的至關重要,並且可以透過一些簡單的命令快速完成。本節介紹如何允許透過 UFW 遠端連線到您的系統。
UFW 允許特定 IP 位址
您可以使用以下命令允許特定 IP 位址連接到您的系統。當您需要僅允許特定係統連接到您的伺服器並且您可以指定它們的 IP 位址時,這非常有用。
sudo ufw allow from 192.168.55.131
UFW 允許特定連接埠上的特定 IP 位址
您可以使用下列命令允許 IP 連接到系統上的特定連接埠。例如,如果您需要允許某個 IP 連接到系統的連接埠 3900,您可以使用下列命令:
sudo ufw allow from 192.168.55.131 to any port 3900
允許子網路連接到指定連接埠
您可以使用下列命令允許從子網路中的一系列 IP 到特定連接埠的連線。當您需要允許來自特定範圍的 IP 的連接並且可以指定允許連接的子網路時,這非常有用。
sudo ufw allow from 192.168.1.0/24 to any port 3900
此指令會將 192.168.1.1 到 192.168.1.254 之間的所有 IP 位址連接到連接埠 3900。
允許特定網路介面
如果需要允許連接到特定網路接口,可以使用以下命令。當您有多個網路介面並且需要允許連接到特定介面時,這非常有用。
sudo ufw allow in on eth2 to any port 3900
透過使用這些命令,您可以輕鬆地允許透過 UFW 遠端連接到您的系統,同時保持其安全性。
拒絕 UFW 上的遠端連接
如果您發現來自特定 IP 位址的可疑或不需要的流量,您可以使用 UFW 拒絕來自該位址的連線。預設情況下,UFW 會拒絕所有傳入連接,但您可以建立規則來阻止來自特定 IP 或 IP 範圍的連接。
例如,要封鎖來自單一 IP 位址的連接,可以使用下列命令:
sudo ufw deny from 203.13.56.121
如果駭客使用同一子網路內的多個 IP 位址來攻擊您的系統,您可以透過以 CIDR 表示法指定 IP 範圍來封鎖整個子網路:
sudo ufw deny from 203.13.56.121/24
您也可以建立規則來拒絕存取被封鎖的 IP 或 IP 範圍的特定連接埠。例如,要阻止相同子網路到連接埠 80 和 443 的連接,可以使用下列命令:
sudo ufw deny from 203.13.56.121/24 to any port 80
sudo ufw deny from 203.13.56.121/24 to any port 443
值得注意的是,阻止傳入連線可能是一種有效的安全措施,但它並不是萬無一失的。駭客仍然可以使用 IP 欺騙等技術來偽裝他們的真實 IP 位址。因此,實施多層安全性而不僅僅是依賴 IP 阻止非常重要。
刪除 UFW 規則
刪除不必要或不需要的 UFW 規則對於維護有組織且有效率的防火牆至關重要。您可以透過兩種不同的方式刪除 UFW 規則。首先,要使用編號刪除 UFW 規則,您需要透過鍵入以下命令列出規則編號:
sudo ufw status numbered
輸出將顯示編號的 UFW 規則列表,使您可以識別要刪除的規則。確定要刪除的規則的編號後,請鍵入以下命令:
sudo ufw delete [rule number]
例如,假設您要刪除 IP 位址 1.1.1.1 的第三條規則。在這種情況下,您需要透過執行「sudo ufw status numbered」命令來尋找規則編號,並在終端機中鍵入以下命令:
sudo ufw delete 3
刪除不再需要的規則有助於維護防火牆的安全性和效率。
訪問和查看 UFW 日誌
UFW 防火牆會記錄所有事件,因此必須定期查看這些日誌以識別潛在的安全漏洞或解決網路問題。預設情況下,UFW 日誌記錄設定為低,這對於大多數桌面系統來說已經足夠了。但是,伺服器可能需要更高層級的日誌記錄才能捕獲更多詳細資訊。
您可以將 UFW 的日誌記錄等級調整為低、中或高,或完全停用它。若要將 UFW 日誌記錄等級設為低,請使用以下命令:
sudo ufw logging low
若要將 UFW 日誌記錄設定為中:
sudo ufw logging medium
若要將 UFW 日誌記錄設為高:
sudo ufw logging high
最後一個選項是完全禁用日誌記錄;確保您對此感到滿意,並且不需要檢查日誌。
sudo ufw logging off
若要查看 UFW 日誌,您可以在預設位置 /var/log/ufw.log 中找到它們。使用 tail 命令,您可以查看即時日誌或列印指定數量的最近日誌行。例如,若要查看日誌的最後 30 行,請使用下列命令:
sudo ufw tail /var/log/ufw.log -n 30
查看日誌可以幫助您確定哪些 IP 位址正在嘗試連線到您的系統,並識別任何可疑或未經授權的活動。此外,查看日誌可以幫助您了解網路流量模式、最佳化網路效能並識別可能出現的任何問題。
測試 UFW 規則
在應用 UFW 防火牆規則之前對其進行測試以確保它們按預期工作始終是一個好主意。 「--dry-run」標誌可讓您查看在不實際應用的情況下所做的變更。對於高度關鍵的系統來說,這是一個有用的選項,可以防止意外更改。
若要使用“–dry-run”標誌,請鍵入以下命令:
sudo ufw --dry-run enable
若要停用“–dry-run”標誌,只需使用以下命令:
sudo ufw --dry-run disable
重置 UFW 規則
有時,您可能需要將防火牆重設回原始狀態,阻止所有傳入連線並允許傳出連線。這可以使用“重置”命令來完成:
sudo ufw reset
確認重置,輸入以下:
sudo ufw status
輸出應該是:
Status: inactive
重置完成後,防火牆將處於非活動狀態,您需要重新啟用它並開始新增規則。需要注意的是,應謹慎使用重置命令,因為它會刪除所有現有規則,如果操作不當,可能會使您的系統容易受到攻擊。
如何查找所有開放連接埠(安全檢查)
您的系統安全應該是重中之重,確保安全的一種方法是定期檢查開放連接埠。預設情況下,UFW 會阻止所有傳入連接,但有時連接埠可能會無意中或出於正當原因保持開啟。在這種情況下,了解哪些連接埠是開放的以及為什麼開放是至關重要的。
檢查開放埠的一種方法是使用 Nmap,這是一種眾所周知且值得信賴的網路探索工具。若要安裝 Nmap,請先鍵入以下命令進行安裝。
sudo apt install nmap
接下來,透過鍵入以下內容來尋找系統的內部 IP 位址:
hostname -I
輸出範例:
192.168.50.45
使用 IP 位址,執行以下命令:
nmap 192.168.50.45
Nmap 將掃描您的系統並列出所有開放連接埠。如果您發現任何不確定的開放端口,請在關閉或封鎖它們之前對其進行調查,因為這可能會中斷服務或將您鎖定在系統之外。
根據本教程中的信息,您可以建立自訂 UFW 規則來關閉或限制開放連接埠。預設情況下,UFW 會阻止所有傳入連接,因此請確保在實施變更之前不會阻止合法流量。
UFW 管理 APT 指令
刪除 UFW 防火牆
UFW 是管理防火牆規則和保護 Debian 系統的寶貴工具。但是,在某些情況下您可能需要停用或刪除它。
如果您想暫時停用 UFW,可以透過鍵入以下命令來實現:
sudo ufw disable
這將關閉防火牆,允許所有流量通過系統。
另一方面,如果您需要從系統中完全刪除 UFW,可以使用以下命令來執行此操作:
sudo apt remove ufw
但是,需要注意的是,從系統中完全刪除 UFW 可能會使其容易受到外部攻擊。除非您有可靠的替代方案來管理系統的防火牆或了解如何使用 IPTables,否則不建議刪除 UFW。
因此,在刪除 UFW 之前,請確保您有替代解決方案來維護系統安全並防止未經授權的存取。