如何在Ubuntu和Debian上设置UFW防火墙

A correctly functioning firewall is the most crucial part of the complete Linux system security. By default, Debian and Ubuntu distribution comes with a firewall configuration tool called UFW (Uncomplicated Firewall), is a most popular and easy-to-use command line tool for configuring and managing a firewall on Ubuntu and Debian distributions.

在本文中,我們將解釋如何在 Ubuntu 和 Debian 發行版上安裝和設置一個 UFW 防火牆。

先決條件

在開始閱讀本文之前,請確保您已使用 sudo 用戶或 root 帳戶登錄到您的 Ubuntu 或 Debian 伺服器。如果您沒有 sudo 用戶,您可以使用以下指示作為 root 用戶創建一個。

# adduser username
# usermod -aG sudo username 
# su - username
$ sudo whoami

在 Ubuntu 和 Debian 上安裝 UFW 防火牆

UFW(Uncomplicated Firewall)應該在 Ubuntu 和 Debian 中默認安裝,如果沒有安裝,請使用以下命令使用 APT 套件管理器進行安裝。

$ sudo apt install ufw

檢查 UFW 防火牆

安裝完成後,您可以通過輸入以下命令來檢查 UFW 的狀態。

$ sudo ufw status verbose

首次安裝時,UFW 防火牆默認為禁用狀態,輸出將類似於以下內容。

Status: inactive

啟用 UFW 防火牆

您可以使用以下命令啟用 UFW 防火牆,這將加載防火牆並啟用它在啟動時運行。

$ sudo ufw enable

要禁用 UFW 防火牆,請使用以下命令,這將卸載防火牆並禁用它在啟動時運行。

$ sudo ufw disable 

UFW 默認策略

默認情況下,UFW 防火牆拒絕所有傳入連接,僅允許所有傳出連接到伺服器。這意味著,除非您明確打開端口,否則沒有人可以訪問您的伺服器,而您伺服器上運行的所有服務或應用程序都可以訪問外部網絡。

默認的 UFW 防火牆策略位於 /etc/default/ufw 文件中,可以使用以下命令進行更改。

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

UFW 應用程序配置文件

使用 APT 軟件包管理器安裝軟件包時,將在 /etc/ufw/applications.d 目錄中包含一個定義服務和保存 UFW 設置的應用程序配置文件。

您可以使用以下命令列出伺服器上所有可用的應用程序配置文件。

$ sudo ufw app list

根據系統上安裝的軟件包,輸出將類似於以下內容:

Available applications:
  APACHE
  APACHE Full
  APACHE SECURE
  CUPS
  OpenSSH
  Postfix
  Postfix SMTPS
  Postfix Submission

如果您想獲取有關特定配置文件和定義規則的更多信息,可以使用以下命令。

$ sudo ufw app info 'Apache'
Profile: Apache
Title: Web Server 
Description: Apache V2 is the next generation f the omnipresent Apache web server.

Ports:
  80/tcp

在 UFW 中啟用 IPv6

如果您的伺服器配置了 IPv6,請確保您的 UFW 配置了 IPv6IPv4 支持。要驗證它,使用您喜歡的編輯器打開 UFW 配置文件。

$ sudo vi /etc/default/ufw

然後確保配置文件中設置了 “IPV6”"yes",如下所示。

IPV6=yes

保存並退出。然後使用以下命令重新啟動您的防火牆:

$ sudo ufw disable
$ sudo ufw enable

在 UFW 上允許 SSH 連接

如果您已經啟用了UFW防火牆,它將阻止所有傳入連接,如果您正在從遠程位置通過SSH連接到您的伺服器,您將無法再次連接。

讓我們啟用SSH連接到我們的伺服器,以防止發生這種情況,使用以下命令:

$ sudo ufw allow ssh

如果您正在使用自定義SSH端口(例如端口2222),那麼您需要使用以下命令在UFW防火牆上打開該端口。

$ sudo ufw allow 2222/tcp

要阻止所有SSH連接,輸入以下命令。

$ sudo ufw deny ssh/tcp
$ sudo ufw deny 2222/tcp  [If using custom SSH port]

在UFW上啟用特定端口

您還可以在防火牆中打開特定端口,以允許通過它連接到某個服務。例如,如果您想要設置一個默認監聽端口80HTTP)和443HTTPS)的網頁伺服器。

以下是一些示例,顯示如何允許Apache服務的傳入連接。

在UFW上開放端口80 HTTP
$ sudo ufw allow http     [By service name]
$ sudo ufw allow 80/tcp   [By port number]
$ sudo ufw allow 'Apache' [By application profile]
在UFW上開放端口443 HTTPS
$ sudo ufw allow https
$ sudo ufw allow 443/tcp
$ sudo ufw allow 'Apache Secure'

在UFW上允許端口範圍

假設您有一些應用程序希望在一系列端口(5000-5003)上運行,您可以使用以下命令添加所有這些端口。

sudo ufw allow 5000:5003/tcp
sudo ufw allow 5000:5003/udp

允許特定IP地址

如果您希望允許從特定IP地址192.168.56.1的所有端口連接,則需要在IP地址之前指定from。

$ sudo ufw allow from 192.168.56.1

在特定端口上允許特定IP地址

允許從具有 IP 地址 192.168.56.1 的家用機器連接到特定端口(例如端口 22),則需要在 IP 地址後添加 任何端口端口號碼,如下所示。

$ sudo ufw allow from 192.168.56.1 to any port 22

允許網絡子網連接到特定端口

要允許從 192.168.1.1192.168.1.254 的特定 IP 地址範圍連接到端口 22SSH),執行以下命令。

$ sudo ufw allow from 192.168.1.0/24 to any port 22

允許特定網絡接口

要允許從特定端口 22SSH)連接到特定網絡接口 eth2,執行以下命令。

$ sudo ufw allow in on eth2 to any port 22

在 UFW 上拒絕連接

默認情況下,所有傳入連接都被阻止,除非您在 UFW 上明確開放了連接。例如,您已經打開了端口 80443,而您的 Web 伺服器正受到未知網絡 11.12.13.0/24 的攻擊。

要阻止從這個特定的 11.12.13.0/24 網絡範圍的所有連接,您可以使用以下命令。

$ sudo ufw deny from 11.12.13.0/24

如果您只想封鎖端口 80443 上的連接,可以使用以下命令。

$ sudo ufw deny from 11.12.13.0/24 to any port 80
$ sudo ufw deny from 11.12.13.0/24 to any port 443

刪除 UFW 規則

有兩種方式可以刪除 UFW 規則,即根據 規則編號 和實際 規則

要使用 規則編號 刪除 UFW 規則,首先需要使用以下命令列出編號的規則。

$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere

要刪除規則號碼1,請使用以下命令。

$ sudo ufw delete 1

第二種方法是使用實際規則來刪除規則,例如,要刪除一個規則,請指定端口號和協議如下所示。

$ sudo ufw delete allow 22/tcp

執行 UFW 規則的乾跑

您可以運行任何 ufw 命令,而不實際在系統防火牆中進行任何更改,只需使用 --dry-run 標誌,這只是顯示應該發生的更改。

$ sudo ufw --dry-run enable

重置 UFW 防火牆

出於某種原因,如果您希望刪除 / 重置所有防火牆規則,請輸入以下命令,它將還原您所有的更改並重新開始。

$ sudo ufw reset
$ sudo ufw status

UFW 高級功能

UFW防火牆可以進行任何 iptables 可以做的事情。這可以通過不同的規則文件來完成,這些文件只是簡單的iptables-restore文本文件。

不允許通過 ufw 命令進行 UFW 防火牆的調整或添加其他 iptables 命令,只需更改以下文本文件

  • /etc/default/ufw:帶有預定義規則的主要配置文件。
  • /etc/ufw/before[6].rules:在此文件中,通過 ufw 命令添加規則之前計算規則。
  • /etc/ufw/after[6].rules:在此文件中,通過 ufw 命令添加規則之後計算規則。
  • /etc/ufw/sysctl.conf:此文件用於調整內核網絡。
  • /etc/ufw/ufw.conf:此文件在啟動時啟用 ufw。

使用 UFW 是一個優秀的前端,可以使用單一的 ufw 命令定義複雜規則。

如果您對這篇 ufw 文章有任何疑問或想法,請使用下面的評論表單與我們聯繫。

Source:
https://www.tecmint.com/setup-ufw-firewall-on-ubuntu-and-debian/