Linux网络防火墙,详细介绍UFW防火墙的配置和使用

在本Linux指南中,我们将向您展示如何在使用UFW时配置防火墙规则。

configuring-ufw-Thumbnail.png

UFW是一个简单的防火墙,预装在所有最新版本的Ubuntu和Ubuntu Server中。它是在设备或服务器上快速设置防火墙的最简单方法之一。防火墙是维护网络安全不可或缺的一部分,对于服务器来说至关重要。

在本指南中,我们将向您展示如何使用UFW来允许、拒绝或限制您设备上的端口。需要注意的是,在默认情况下,UFW会屏蔽所有的入站连接,但不会阻止出站连接。

 

使用UFW允许通过端口访问

首先学会处理的一件事就是如何允许单个端口的访问。在UFW中允许一个端口,就可以通过它进行连接。这样,其他设备就可以通过您的网络与您的设备连接。

使用UFW,允许端口访问只需要一个命令。最基本的,需要做的就是输入 “ufw allow”,然后输入你想访问设备的端口号。还可以选择指定允许端口使用的协议,是TCP、UDP还是其他协议。如果没有指定协议,端口允许所有的协议。

使用UFW通过端口访问

在其最直接的用法中,需要做的就是指定希望允许通过的端口号。

sudo ufw allow PORT

举个例子,允许通过默认的OpenSSH端口(端口22)进行访问。

sudo ufw allow 22

指定端口允许使用的协议

使用这种简化的语法,您可以指定您希望端口访问的协议。指定了协议后,其他的协议就无法使用了。

sudo ufw allow PORT[/PROTOCOL]

作为参考,互联网上使用最多的两个协议是TCP和UDP。例如,假设我们只想通过TCP协议访问我们的SSH端口。在这种情况下,我们可以使用以下命令。

sudo ufw allow 22/tcp

通过指定服务名称允许访问

使用UFW,还可以通过使用服务名称来指定要允许的服务。

sudo ufw allow SERVICENAME

请注意,这个功能只适用于在/etc/services文件中指定的服务和端口。例如,如果我想允许访问SSH,可以运行以下命令。

sudo ufw allow ssh

允许访问特定的IP地址

也可以使用UFW允许特定IP地址访问你的设备。您可以允许IP地址完全访问您的设备,也可以只访问某个特定的IP地址。这种方法使用不同的语法来允许通过 port 进行全局访问。

允许对某一IP地址进行完全访问

为一个IP地址指定访问权限的最简单方法是让它完全访问你的设备。这不是安全的最佳做法,因为他们会有办法完全绕过你的防火墙。允许从一个IP地址访问的语法是 “sudo ufw allow from”,后面跟着你要加入白名单的IP地址。

sudo ufw allow from IPADDRESS

例如,如果想把192.168.0.1这个IP地址列入白名单,可以使用以下命令。

sudo ufw allow from 192.168.0.1

允许访问某个IP地址的端口

使用这种更高级的语法,仍然可以只使用它来访问特定的端口。也可以选择用它来指定你想让它访问的协议。

sudo ufw allow from TARGET to DESTINATION port PORTNUMBER [proto PROTOCOL]

在此语法中,TARGET是期望访问设备的IP地址。

DESTINATION是你希望这个IP地址访问的点。如果这对你来说并不重要,可以使用任何一个。

例如,如果想从IP地址192.168.0.1访问设备SSH端口(端口22),可以使用以下命令。

sudo ufw allow from 192.168.0.1 to any port 22 proto tcp

使用UFW禁止通过端口访问

在本节中,我将向您展示如何使用UFW来阻止或拒绝访问您设备上的端口。使用UFW拒绝通过端口的连接也很容易。要使用UFW封锁一个端口,需要使用 “ufw deny”,然后是端口号,再加上协议。就像允许一个端口一样,你可以阻止一个端口通过特定的协议进行访问。如果没有指定协议,UFW会自动认为它应该阻止所有协议。

禁止通过端口访问

拒绝访问一个端口和允许访问一样简单。唯一真正的区别是用 “deny“一词代替了 “allow“。

sudo ufw deny PORT

作为一个例子,可以使用UFW来阻止外部访问我们在端口3306上运行的MySQL服务器。

sudo ufw deny 3306

禁止通过特定协议的端口访问

还可以选择性地指定您要通过UFW拒绝访问的特定协议。协议直接在端口号后面指定,并用正斜线符号(/)隔开。

sudo ufw deny PORT[/PROTOCOL]

例如,如果想阻止用户在使用UDP协议时访问MySQL端口。

sudo ufw deny 3306/udp

禁止访问服务

也可以使用UFW通过使用其服务名称来拒绝访问一个或多个端口。这些服务和它们所关联的端口在/etc/services文件中被引用。

sudo ufw deny SERVICENAME

例如,如果想在设备上禁止访问FTP,可以使用以下命令。

sudo ufw deny ftp

禁止访问特定的IP地址

如果想,可以使用UFW来阻止一个特定的IP地址访问你的设备。

UFW提供了两种不同的方法来实现这一目的。

  • 第一种方法是禁止IP地址在任何端口上访问您的设备。
  • 另一种方法只能在特定端口上禁止访问。

封堵一个IP地址与封堵一个端口需要使用不同的语法。

禁止特定IP地址的访问

要阻止一个IP地址的访问,你需要使用稍微不同的语法。你需要做的就是在 “ufw deny from “后面加上你要屏蔽的IP地址。

sudo ufw deny from IPADDRESS

例如,可以通过下面的命令来阻止IP地址192.168.0.2。

sudo ufw deny from 192.168.0.2

禁止通过端口访问特定IP地址

即使使用这种方法,仍然可以阻止一个IP地址访问特定的端口,而不是整个设备。这个协议稍微复杂一些,因为你需要指定协议和端口号的方式是不同的。

sudo ufw deny from IPADDRESS to PROTOCOL port PORTNUMBER

将IPADDRESS替换为您要在指定端口上屏蔽的IP地址。

PROTOCOL是您希望被禁止的协议。如果您想屏蔽所有协议的IP地址,请使用 “any “关键字。

最后,将 PORTNUMBER 替换为您要禁止的 IP 地址的端口。

例如,如果我们想禁止任何协议的SSH端口(端口22)的IP地址192.168.0.2,我们可以使用以下命令。

sudo ufw deny from 192.168.0.2 to any port 22

端口上的速率限制

UFW最有用的功能之一是它能够轻松地对特定端口的连接进行速率限制。可以使用此功能来限制连接到关键端口的数量。

例如,你可以通过限制通过SSH连接进行的连接来减少用户强行登录你的SSH的机会。

当您限制一个连接时,UFW将不允许在过去30秒内有任何超过6个连接。防火墙将阻止任何额外的连接。限制端口相对简单。语法方面, 它的工作原理与 allow 命令类似, 但您需要使用 limit 关键字。你只需要使用 “ufw limit”,然后是端口号,再加上连接协议的选项,就可以限制连接。

sudo ufw limit PORT[/PROTOCOL]

例如,可以通过运行以下命令,使用防火墙来限制与Raspberry Pi的SSH端口的连接。

sudo ufw limit 22

由于SSH默认只在TCP上工作,你可以限制使用TCP协议的连接。

sudo ufw limit 22/tcp

删除现有的防火墙规则

使用UFW删除现有的防火墙规则相当直接。有两种不同的方法可以用来删除现有的防火墙规则。要删除一个防火墙规则,你需要知道规则本身或分配给它的编号。

使用已知的防火墙规则进行删除

对于第一种方法,我们将向你展示如何在你知道确切的现有规则的情况下删除一个防火墙规则。这种方法对于在UFW中删除一条未激活的规则很有用。要使用这种方法删除一个规则,你需要使用 “sudo ufw delete”,后面跟着规则。

sudo ufw delete RULE

1. 例如,假设我们有以下规则,对我们的SSH端口进行限制。

ufw limit 22/tcp

2. 我们可以通过使用以下命令,参照我们要删除的规则来删除这个规则。

sudo ufw delete limit 22/tcp

使用索引删除

另一种方法是通过引用防火墙规则的索引号来删除该规则。该编号由UFW分配给该规则。请注意,该方法目前仅在您启用UFW的情况下有效。要使用这种方式删除一条规则,你需要使用ufw delete,后面跟着规则编号。

sudo ufw delete RULENUMBER

下面我们附上了一个例子,说明如何检索一个规则的编号,并删除它。

1. 首先,使用以下命令检索规则列表及其编号。

sudo ufw status numbered

2. 这条命令会给你一个类似于下面的列表。

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         LIMIT IN    Anywhere
[ 2] 80                         ALLOW IN    Anywhere
[ 3] 443                        ALLOW IN    Anywhere
[ 4] 22 (v6)                    LIMIT IN    Anywhere (v6)
[ 5] 80 (v6)                    ALLOW IN    Anywhere (v6)
[ 6] 443 (v6)                   ALLOW IN    Anywhere (v6)

第一列是分配给该规则的编号。

3. 例如,如果想删除允许通过HTTP端口(80)进入的规则,我们可以使用以下命令。

sudo ufw delete 2

检查UFW状态

当使用UFW时,检查你的防火墙的状态很简单。需要做的就是使用以下命令来检查状态

sudo ufw status

从这个命令中,可以得到两种可能的结果之一。

如果UFW已被禁用,您将看到以下结果,通知您防火墙目前处于非活动状态。

Status: inactive

或者,如果你启用了UFW,你会看到类似下面的东西。这条命令应该列出了启用UFW时的所有防火墙规则。

Status: active

To                         Action      From
--                         ------      ----
22                         LIMIT       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
22 (v6)                    LIMIT       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

列出UFW规则

在使用UFW时,你可能会遇到一个问题,那就是 “ufw status “命令在防火墙被禁用时不会返回你的防火墙规则。

为了解决这个问题,我们可以使用以下命令。

sudo ufw show added

该命令将返回已添加到UFW的所有规则。

由于UFW没有运行,你将无法获得分配给这些规则的数字。

Added user rules (see 'ufw status' for running firewall):
ufw limit 22
ufw allow 80
ufw allow 443

如何启用或禁用UFW

最后要讲的是如何在设备上禁用或启用UFW。在启用防火墙之前,你应该始终确保你已经添加了所有你想要的规则。例如,如果你依赖SSH连接,你应该确保端口有一个活跃的 “允许 “规则。如果不能正确配置规则,有可能会让你被锁定,无法远程访问你的设备。

启用UFW

启用UFW很简单,可以通过一个命令来完成。

sudo ufw enable

通过这个命令打开UFW,它将立即被启用。此外,现在它将在启动时启动。

禁用UFW

停用UFW就像启用UFW一样简单。要禁用UFW,可以使用以下命令。

sudo ufw disable

当UFW被禁用时,它不会自动启动。

希望本指南能让你对如何在基于Linux的系统上使用UFW有一个很好的认识。如果你对本指南有任何反馈,欢迎在下方留言。

平均: 5 / 5. votes: 1

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » Linux网络防火墙,详细介绍UFW防火墙的配置和使用

赞 (1)

评论

8+7=