如何在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防火墙

在Ubuntu和Debian中,默认情况下应安装UFW简单防火墙),如果没有,请使用以下命令使用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)的 Web 服务器。

以下是几个示例,说明如何允许针对 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

允许网络子网访问特定端口

要允许特定IP地址范围从192.168.1.1192.168.1.254的连接到端口22SSH),请运行以下命令。

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

允许特定网络接口

要允许连接到特定网络接口eth2的特定端口22SSH),请运行以下命令。

$ 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

dry-run UFW规则

您可以使用--dry-run标志运行任何ufw命令,而不会实际更改系统防火墙,这仅仅显示了将要发生的变化。

$ 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/