首頁 > 軟體

如何在Ubuntu 18.04上使用UFW設定防火牆

2020-06-16 16:50:03

正確設定的防火牆是整個系統安全性最重要的方面之一。 預設情況下,Ubuntu附帶一個名為UFW(簡單防火牆)的防火牆設定工具。UFW是管理iptables防火牆規則的一個使用者友好的前端,它的主要目標是使管理iptables更容易,或者如其名所說,簡單。

先決條件

在開始本教學之前,請確保您使用具有sudo許可權的使用者帳戶或root使用者登入到您的伺服器。 最佳做法是將管理命令作為sudo使用者而非root使用者執行,如果您的Ubuntu系統上沒有sudo使用者,則可以按照此說明建立一個sudo使用者。

安裝UFW

ufw防火牆應該預設安裝在Ubuntu 18.04中,但是如果它沒有安裝在你的系統上,你可以通過鍵入以下命令來安裝它:

sudo apt install ufw

檢查UFW狀態

安裝完成後,您可以使用以下命令檢查UFW的狀態:

sudo ufw status verbose

UFW在預設情況下是禁用的,如果您剛剛安裝或從未啟用過UFW,則輸出如下所示:

輸出

Status: inactive

如果UFW被啟用,輸出將如下所示:

狀態:啟用
紀錄檔: on (low)
預設:deny (incoming), allow (outgoing), disabled (routed)
新建組態檔: skip

至                          動作          來自
-                          --          --
80,443/tcp (Nginx Full)    ALLOW IN    Anywhere                 
80,443/tcp (Nginx Full (v6)) ALLOW IN    Anywhere (v6)     

UFW預設策略

預設情況下,UFW將阻止所有傳入連線並允許所有出站連線。 這意味著任何試圖存取您的伺服器的使用者都將無法連線,除非您專門開啟該埠,而伺服器上執行的所有應用程式和服務都將能夠存取外部世界。

預設策略在/etc/default/ufw檔案中定義,可以使用sudo ufw default <policy> <chain>

防火牆策略是構建更詳細和使用者定義規則的基礎。 在大多數情況下,最初的UFW預設政策是一個很好的起點。

應用程式設定

使用apt安裝軟體包時,它將向/etc/ufw/applications.d目錄中新增應用程式組態檔,該目錄描述該服務並包含UFW設定。

您可以鍵入以下內容列出伺服器上可用的所有應用程式組態檔

sudo ufw app list

根據系統上安裝的軟體包,輸出將如下所示:

可用應用程式:
  CUPS
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  Postfix
  Postfix SMTPS
  Postfix Submission

如果您想要查詢有關組態檔和包含規則的更多資訊,可以使用以下命令:

sudo ufw app info 'Nginx Full'

設定: Nginx Full
標題:Web Server (Nginx, HTTP + HTTPS)
描述: Small, but very powerful and efficient web server

埠:
  80,443/tcp

正如您從上面的輸出中看到'Nginx Full'組態檔開啟埠80和443,

允許SSH連線

在啟用UFW防火牆之前,我們需要新增一個允許傳入SSH連線的規則。 如果您從遠端位置連線到伺服器(幾乎總是如此),並且在明確允許傳入SSH連線之前啟用UFW防火牆,則您將不再能夠連線到您的Ubuntu伺服器。

要設定您的UFW防火牆以允許傳入SSH連線,請鍵入以下命令:

sudo ufw allow ssh

規則已新增
規則已新增 (v6)

如果您將SSH埠更改為自定義埠而不是埠22,則需要開啟該埠。 例如,如果您的ssh守護行程在埠5522上偵聽,那麼您可以使用以下命令來允許該埠上的連線:

sudo ufw allow 5522/tcp

啟用UFW

現在您的UFW防火牆已設定為允許傳入SSH連線,我們可以通過鍵入以下命令啟用它:

sudo ufw enable

在系統啟動時啟用和啟用防火牆

輸出:

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

您將被警告啟用防火牆可能會破壞現有的ssh連線,只需鍵入y並按Enter鍵。

允許其他埠上的連線

根據您的伺服器上執行的應用程式和您的特定需求,您需要允許對其他埠的傳入存取。

下面我們將向您展示一些如何允許傳入連線到一些最常見服務的例子:

開啟埠80 - HTTP

使用以下命令可以允許HTTP連線:

sudo ufw allow http

你可以使用埠號80而不是http:

sudo ufw allow 80/tcp

或者您可以使用應用程式組態檔,在本例中是'Nginx HTTPS':

sudo ufw allow 'Nginx HTTP'

開啟埠443 - HTTPS

使用以下命令可以允許HTTP連線:

sudo ufw allow https

要實現相同而不是https,您可以使用埠號443:

sudo ufw allow 443/tcp

或者您可以使用應用程式組態檔,在本例中是'Nginx HTTPS':

sudo ufw allow 'Nginx HTTP'

開啟埠8080

如果執行Tomcat或在埠8080上偵聽的任何其他應用程式以允許傳入連線,請輸入:

sudo ufw allow 8080/tcp

允許埠範圍

UFW允許我們允許存取埠範圍,而不是允許存取單個埠。 使用UFW允許埠範圍時,您必須指定協定,即tcp或udp。 例如,如果要允許tcp和udp上的埠從8000到8100,則執行以下命令:

sudo ufw allow 8000:8100/tcp

sudo ufw allow 8000:8100/udp

允許特定的IP地址

如果您希望允許您的家庭計算機上的所有埠使用IP地址55.56.57.58存取,則需要在IP地址之前指定:

sudo ufw allow from 55.56.57.58允許特定埠上的特定IP地址

要允許在特定埠上存取,可以使用IP地址為55.56.57.58的工作機器上的埠22,然後您需要指定IP地址後面的任何埠和埠號:

sudo ufw allow from 55.56.57.58 to any port 22

允許子網

允許連線到IP地址的子網的命令與使用單個IP地址時相同,唯一的區別是您需要指定網路掩碼。 例如,如果你想允許存取從192.168.1.1到192.168.1.254到3306(MySQL)的IP地址,你可以使用這個命令:

sudo ufw allow from 192.168.1.0/24 to any port 3306

允許連線到特定的網路介面

為了允許在特定埠上存取,我們假設埠3306僅適用於特定的網路介面eth2,那麼您需要指定允許輸入以及網路介面的名稱:

sudo ufw allow in on eth2 to any port 3306

拒絕連線

所有傳入連線的預設策略設定為拒絕,如果您沒有更改它,UFW將阻止所有傳入連線,除非您專門開啟連線。

假設您開啟埠80和443,並且您的伺服器受到33.34.35.0/34網路的攻擊。 要拒絕來自33.34.35.0/34的所有連線,可以使用以下命令:

sudo ufw deny from 33.34.35.0/34

如果您只想拒絕對埠80和443的存取,則可以使用以下命令:

sudo ufw deny from 23.24.25.0/24 to any port 80
sudo ufw deny from 23.24.25.0/24 to any port 443

寫入拒絕規則與編寫允許規則相同,您只需將允許替換為拒絕。

刪除UFW規則
有兩種不同的方法可以通過規則編號和指定實際規則來刪除UFW規則。

通過規則編號刪除UFW規則更容易,尤其是如果您是UFW的新手。 要首先通過規則編號刪除規則,您需要按數位列出規則,您可以使用以下命令執行此操作:

sudo ufw status numbered

狀態: 啟用

    至                          動作          來自
    -                          --          --
[ 1] Nginx Full                ALLOW IN    Anywhere                 
[ 2] 22/tcp                    ALLOW IN    Anywhere                 
[ 3] 5522/tcp                  ALLOW IN    Anywhere                 
[ 4] 80/tcp                    ALLOW IN    Anywhere                 
[ 5] Nginx HTTP                ALLOW IN    Anywhere                 
[ 6] 443/tcp                    ALLOW IN    Anywhere                 
[ 7] Nginx HTTPS                ALLOW IN    Anywhere                 
[ 8] 8080/tcp                  ALLOW IN    Anywhere                 
[ 9] Nginx Full (v6)            ALLOW IN    Anywhere (v6)           
[10] 22/tcp (v6)                ALLOW IN    Anywhere (v6)           
[11] 5522/tcp (v6)              ALLOW IN    Anywhere (v6)           
[12] 80/tcp (v6)                ALLOW IN    Anywhere (v6)           
[13] Nginx HTTP (v6)            ALLOW IN    Anywhere (v6)           
[14] 443/tcp (v6)              ALLOW IN    Anywhere (v6)           
[15] Nginx HTTPS (v6)          ALLOW IN    Anywhere (v6)           
[16] 8080/tcp (v6)              ALLOW IN    Anywhere (v6)     

要刪除規則編號3,允許連線到埠8080的規則,可以使用以下命令:

sudo ufw delete 2

第二種方法是通過指定實際規則來刪除規則,例如,如果您新增了一條規則以開啟埠8168,則可以使用以下規則將其刪除:

sudo ufw delete allow 8168

禁用UFW
如果因任何原因想停止UFW並停用您可以使用的所有規則:
sudo ufw disable稍後如果您想要重新啟用UTF並啟用所有規則,請輸入:

sudo ufw enable

重置UFW
重置UFW將禁用UFW,並刪除所有活動規則。 如果您想恢復所有更改並重新開始,這很有幫助。

要重置UFW,只需輸入以下命令:
sudo ufw reset

所有規則將被重設為安裝時的預設值。要繼續嗎 (y|n)?

總結

您已經學會了如何在Ubuntu 18.04伺服器上安裝和設定UFW防火牆。 確保允許系統正常執行所需的所有傳入連線,同時限制所有不必要的連線。

如果您有任何問題,請隨時在下面留言。

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-06/152881.htm


IT145.com E-mail:sddin#qq.com