簡介
UFW 代表簡單防火牆(uncomplicated firewall)。它是一個前端平台,能讓您輕鬆管理防火牆功能與指令。您可以在您的 Ubuntu 伺服器中取得 UFW 作為預設選項。如果您還不熟悉此工具,要最大化發揮防火牆指令與功能的潛力可能會有些困難。
我們的目標是為您提供一份適合作為初學者的全面指南。我們將結合各種您可以使用 UFW 執行的操作範例來補充說明。其中許多規則對於日常服務和活動都非常實用。讓我們開始吧!
先決條件
在繼續閱讀之前,請確保您的 UFW 已設定為預設規則集。這意味著防火牆允許傳出流量,但會阻擋傳入流量。此預設重設的好處是您可以選擇允許哪些流量通過防火牆。如果您不確定 UFW 上目前規則集的狀態,請使用此指令進行檢查:sudo ufw status。您也可以使用此指令:
|
1 |
sudo ufw status verbose |
除此之外,您可以自由跳轉到與您的需求最相關的任何章節。您不一定需要使用本指南中提供的每一個指令。您可以根據個人需求進行搭配組合。
如何阻擋 IP 位址
讓我們從任何防火牆最基本的功能之一開始:阻擋 IP 位址。您可以使用一個非常簡單的指令來阻擋來自特定 IP 位址的任何網路連線。例如,假設在我們的案例中,特定的 IP 位址是 15.15.15.51。您可以將此值替換為您想透過 UFW 阻擋的 IP 位址。以下是您為此目的而使用的指令:
|
1 |
sudo ufw deny from 15.15.15.51 |
在這裡,from 15.15.15.51 僅表示來源 IP 位址,即「15.15.15.51」。如果您想指定子網路,可以按如下方式添加:15.15.15.0/24。該指令同樣有效。您可以在任何您想要的防火牆規則中指定此來源 IP 位址,例如 allow 規則。
- 阻擋網路介面連線
有時,需求可能是阻擋從特定 IP 位址到特定網路介面的網路連線。如果是這種情況,我們必須同時指定網路介面與來源 IP 位址。在此範例中,假設來源 IP 位址為 15.15.15.51,網路介面為 eth0:
|
1 |
sudo ufw deny in on eth0 from 15.15.15.51 |
與來源 IP 位址類似,您也可以在任何防火牆規則中指定網路介面。這些規格的目的是將給定的防火牆規則僅限制在特定的網路或連線中。
如何允許 SSH 連線
如果您使用的是雲端伺服器,本節將與您相關。為了能夠建立與雲端伺服器的連線,您需要防火牆允許傳入的 SSH 連線。這些 SSH 連線是透過連接埠 22 進行的。您可以參考這篇 教學,了解如何使用 SSH 連線到 Ubuntu 中的遠端伺服器.
透過建立 SSH 連線,您可以使用本機裝置成功管理您的雲端伺服器。在這裡,我們將介紹與 SSH 相關的防火牆設定之各種規則:
- 允許 SSH
使用以下指令允許所有傳入的 SSH 連線:
|
1 |
sudo ufw allow ssh |
另一方面,您也可以透過指定 SSH 服務的連接埠號碼來執行該指令:
|
1 |
sudo ufw allow 22 |
- 允許來自特定 IP 位址的傳入 SSH
如果您只想允許來自特定 IP 位址或子網路的傳入 SSH 連線,您可以指定來源。例如,假設您要允許的子網路是 15.15.15.0/24。以下是您需要執行的指令:
|
1 |
sudo ufw allow from 15.15.15.0/24 to any port 22 |
- 允許來自特定 IP 位址的傳入 Rsync 連線
Rsync 運行於連接埠 873,可讓您在不同的電腦系統之間進行檔案傳輸。如果您只想允許來自特定 IP 位址或子網路(在此範例中為 15.15.15.0/24)的 Rsync 連線,可以使用此命令來執行此操作:
|
1 |
sudo ufw allow from 15.15.15.0/24 to any port 873 |
這意味著整個 15.15.15.0/24 子網路都將被允許 Rsync 到您的伺服器。這裡還有一個完整的 關於如何利用 Rsync 同步伺服器上本機和遠端目錄的教學.
如何設定網頁伺服器請求
接下來,我們將轉到與網頁伺服器服務相關的規則。像 Apache 和 Nginx 通常從兩個連接埠接收 HTTP 和 HTTPS 連線的請求:連接埠 80 和連接埠 443。連接埠 80 負責處理 HTTP 請求。連接埠 443 則負責處理 HTTPS 請求。
正如我們在先決條件中所討論的,您使用的是 UFW 的預設規則集。基於此規則集,防火牆會封鎖或拒絕所有傳入流量。因此,您必須設定新規則,以允許伺服器接收並讀取這些傳入請求。
- 允許所有 HTTP
如果您想允許來自連接埠 80 的所有 HTTP 連線和請求,請使用以下命令:
|
1 |
sudo ufw allow http |
您也可以在命令中使用連接埠號碼(連接埠 80)來指定 HTTP 服務:
|
1 |
sudo ufw allow 80 |
- 允許所有 HTTPS
如果您想允許來自連接埠 443 的所有 HTTPS 連線和請求,請執行此命令:
|
1 |
sudo ufw allow https |
與上一個命令類似,您可以將「https」替換為 HTTPS 服務的連接埠號碼:
|
1 |
sudo ufw allow 443 |
- 允許所有 HTTP 和 HTTPS
如果您想同時允許 HTTP 和 HTTPS 請求,可以使用針對這兩者的集合規則。透過這個單一命令,您可以允許來自連接埠 80 和連接埠 443 的傳入流量:
|
1 |
sudo ufw allow proto tcp from any to any port 80,443 |
當您一次指定多個連接埠時,必須使用 proto tcp 命令。
您也可以參考這些關於如何保護 Nginx 以及 在 Ubuntu 上使用 Let’s Encrypt 保護 Apache 的詳細指南.
如何允許 MySQL
MySQL 連線是透過連接埠 3306 傳入的。如果用戶端正在遠端伺服器上使用您的 MySQL 資料庫,您必須使用規則來允許傳入流量。請參考我們的 教學以了解 MySQL 的基礎知識以及如何在伺服器上設定 MySQL.
- 允許來自特定 IP 位址的 MySQL 連線
正如我們在之前的規則中所見,您必須指定來源以允許傳入的 MySQL 連線。您的來源可以是特定的 IP 位址或子網路。在我們的範例中,我們將使用整個 15.15.15.0/24 子網路來執行命令:
|
1 |
sudo ufw allow from 15.15.15.0/24 to any port 3306 |
- 允許 MySQL 連線至特定網路介面
如果您還需要指定允許 MySQL 連線的網路介面,您將使用不同的命令。讓我們假設您使用的網路介面是一個名為 eth1 的私有網路介面。您可以將此值替換為您自己的網路介面名稱:
|
1 |
sudo ufw allow in on eth1 to any port 3306 |
如何允許 PostgreSQL
The PostgreSQL 連線是透過連接埠 5432 傳入的。與 MySQL 連線類似,如果用戶端正在遠端伺服器上使用 PostgreSQL 資料庫,您需要允許傳入流量。您可以使用以下命令來執行此操作。
- 允許來自特定 IP 位址的 PostgreSQL 連線
如果您知道 PostgreSQL 連線來自特定的子網路或 IP 位址,您必須指定來源。在這裡,我們將再次使用 15.15.15.0/24 子網路的範例:
|
1 |
sudo ufw allow from 15.15.15.0/24 to any port 5432 |
如果您的 OUTPUT 策略未設定為 ACCEPT,您將必須執行第二個命令。此命令允許已建立的 PostgreSQL 連線的傳出流量。
- 允許 PostgreSQL 連線至特定網路介面
與之前的規則類似,我們將允許 PostgreSQL 連線至特定的網路介面。在我們的案例中是 eth1:
|
1 |
sudo ufw allow in on eth1 to any port 5432 |
如果您的 OUTPUT 策略未設定為 ACCEPT,您將必須執行第二個命令。此命令允許已建立的 PostgreSQL 連線的傳出流量。您可以透過按照我們詳細的教學來了解如何在 Ubuntu 上設定 PostgreSQL.
如何設定郵件伺服器
您也可能在系統上使用郵件伺服器,例如 Sendmail 和 Postfix。這些伺服器開放了多個連接埠。它們監聽的連接埠取決於為郵件遞送設定的協定。這就是為什麼您首先必須確定您的郵件遞送系統中正在執行哪些協定。隨後,您將根據此資訊允許相關類型的流量。
- 封鎖傳出 SMTP 郵件
在我們繼續介紹允許郵件伺服器傳入流量的命令之前,讓我們看看如何封鎖傳出的 SMTP 郵件。如果您不希望伺服器傳送任何傳出郵件,可以使用此命令。SMTP 郵件使用連接埠 25。使用此命令封鎖此流量:
|
1 |
sudo ufw deny out 25 |
執行此命令的結果是,您的防火牆將丟棄連接埠 25 上的所有傳出流量。如果您想封鎖另一個連接埠,只需將連接埠「25」替換為相應的連接埠號碼即可。
- 允許傳入 SMTP
既然您知道如何封鎖傳出流量,允許傳入流量看起來也同樣簡單。使用此命令允許伺服器在連接埠 25 上接收 SMTP 連線:
|
1 |
sudo ufw allow 25 |
- 允許傳入 IMAP
如果您想允許伺服器在連接埠 143 上建立 IMAP 連線,請使用以下命令:
|
1 |
sudo ufw allow 143 |
- 允許傳入 IMAPS
使用此命令允許伺服器回應連接埠 993 上的 IMAPS 連線:
|
1 |
sudo ufw allow 993 |
- 允許傳入 POP3
此命令使您的伺服器能夠透過連接埠 110 回應所有 POP3 連線:
|
1 |
sudo ufw allow 110 |
- 允許傳入 POP3S
最後,您可以使用此命令允許您的伺服器接收來自連接埠 995 的 POP3S 連線請求:
|
1 |
sudo ufw allow 995 |
結論
本指南將幫助您熟悉基本的 UFW 功能。我們已經介紹了設定防火牆所需熟悉的基本命令。您可以選擇最適合您特定需求的命令,以建立個人化的防火牆解決方案。UFW 的靈活性允許進行此類自訂。多加嘗試以找出最適合您的設定。
祝您使用愉快!
留言
目前尚無留言。成為第一個留言的人吧。