sudo apt install ufw -y

安装后,启用该服务。

sudo systemctl enable ufw --now

接下来,验证 UFW 的状态以确保它处于活动状态且没有错误。

sudo systemctl status ufw

输出示例:
image-1668933451428
如何在 Debian 11 Bullseye 上设置和配置 UFW 防火墙
设置 UFW 防火墙的下一步是启用防火墙本身。

sudo ufw enable

输出示例:

Firewall is active and enabled on system startup

默认情况下,所有传入流量都会被自动阻止,一旦防火墙启用,所有出站流量都将被允许。 这将立即通过阻止任何人远程连接到您的系统来保护您的系统。

以后如果需要暂时禁用UFW,请使用以下命令。

sudo ufw disable

从您的 Debian 系统中完全删除 UFW。

sudo apt remove ufw --purge

除非您有可靠的选择或知道如何使用 IPTables,否则不要删除 UFW,尤其是在运行连接到公共的服务器环境时。 这将是灾难性的。

如何检查 UFW 状态

启用 UFW 后,查看防火墙规则的状态以及活动的内容,请使用以下内容。

sudo ufw status verbose

输出示例:
image-1668933493838
如何在 Debian 11 Bullseye 上设置和配置 UFW 防火墙
上面的示例使用了详细标志,另一种选择是按编号顺序列出规则,这在稍后删除规则时更易于管理。

sudo ufw status numbered

输出示例:
image-1668933511139
如何在 Debian 11 Bullseye 上设置和配置 UFW 防火墙
你现在有 [1], [2] UFW 规则上的数字标签用于识别,如上述输出所示。

如何设置 UFW 默认策略

UFW 防火墙的默认策略是拒绝所有传入连接,只允许出站连接到系统。 通常最安全的默认方式是没有人可以访问您的服务器,除非您允许 IP 地址/范围、程序、端口或所有这些的组合。 默认情况下,您的系统可以访问外部,除非您有特定的安全要求,否则不应对其进行调整。

可以在以下位置找到默认的 UFW 防火墙策略 / etc /默认/ ufw.

拒绝所有传入连接:

sudo ufw default deny incoming

允许所有传出连接:

sudo ufw default allow outgoing

启用后,这已经设置为默认规则,但您可以使用相同的原则来更改它们以满足您的目的。

例如,默认情况下阻止所有传入通信,但您希望阻止所有传出并仅允许出站连接,然后使用以下命令。

*阻止所有传出连接:
*

sudo ufw default deny outgoing

这是一个极端的措施; 对于普通服务器和台式机来说,阻止传入连接通常就足够了,但特定环境可以从额外的安全预防措施中受益。 缺点是您需要维护所有传出连接,这可能很耗时,而且需要不断设置新规则。

如何查看 UFW 应用程序配置文件

要显示所有应用程序配置文件,您可以键入以下内容。

sudo ufw app list

输出示例:
image-1668933675615

以上只是一个例子,每个人都会有不同的列表,因为没有人会安装相同的应用程序。

应用程序配置文件的一个方便功能是查找有关 UFW 应用程序列表中列出的服务的更多信息。

为此,请键入以下命令以查找有关现有配置文件的更多信息。

sudo ufw app info qBittorrent

输出示例:
image-1668933726985

如上,应用程序的一般描述及其使用的端口的打印输出。 当您调查开放端口并且不确定它们与哪些应用程序相关以及应用程序做什么时,这是一个方便的功能。

如何在 UFW 上启用 IPv6

如果您的 Debian 系统配置了 IPv6,您需要确保 UFW 配置了 IPv6 和 IPv4 支持。 默认情况下,这应该自动启用; 但是,您应该检查并在需要时修改它。 您可以在以下操作中执行此操作。

打开默认的 UFW 防火墙文件。

sudo nano /etc/default/ufw

如果未设置,请将以下行调整为 yes。

IPV6=yes

CTRL + O 保存对文件的新更改,然后按 CTRL + X 退出文件。

现在重新启动 UFW 防火墙服务以使更改生效。

sudo systemctl restart ufw

如何允许 UFW SSH 连接

默认情况下,UFW 不允许 SSH 连接。 如果您已经远程启用了防火墙,您会注意到自己被锁定了。

要解决此问题,您需要在启用 UFW 防火墙之前设置以下 SSH 配置,尤其是在连接到远程服务器时。

首先,启用 SSH 应用程序配置文件。

sudo ufw allow ssh

如果您为 SSH 连接设置了自定义侦听端口而不是默认端口 22,例如端口 3541,您将通过键入以下内容在 UFW 防火墙上打开该端口。

sudo ufw allow 3541/tcp

如果您想阻止所有 SSH 连接或更改端口并阻止旧的连接。

阻止所有 SSH 连接 (确保本地访问是可能的),使用以下命令。

sudo ufw deny ssh/tcp

如果更改自定义 SSH 端口,则打开一个新端口并关闭现有的; 教程示例是端口 3541。

sudo ufw deny 3541/tcp

如何启用 UFW 端口

使用 UFW,您可以打开防火墙中的特定端口以允许为特定应用程序指定的连接。 您可以为应用程序设置自定义规则。 这个规则的一个很好的例子是设置一个监听端口的网络服务器 80 (HTTP) 和 443 (HTTPS) 默认情况下。

允许 HTTP 端口 80
通过应用程序配置文件允许:

sudo ufw allow 'Nginx HTTP'

按服务名称允许:

sudo ufw allow http

按端口号允许:

sudo ufw allow 80/tcp

允许 HTTPS 端口 443
通过应用程序配置文件允许:

sudo ufw allow 'Nginx HTTPS'

按服务名称允许:

sudo ufw allow https

按端口号允许:

sudo ufw allow 443/tcp

请注意,您可以使用以下命令默认启用所有规则。

sudo ufw allow 'Nginx Full'

UFW 允许端口范围
UFW 可以允许访问端口范围。 打开端口范围时,您必须确定端口协议。

允许使用 TCP 和 UDP 的端口范围:

sudo ufw allow 6500:6800/tcp sudo ufw allow 6500:6800/udp

或者,您可以在一次点击中允许多个端口,但允许范围可能更容易访问,如上所述。

sudo ufw allow 6500, 6501, 6505, 6509/tcp sudo ufw allow 6500, 6501, 6505, 6509/udp

如何在 UFW 上允许远程连接
UFW 允许特定 IP 地址
例如,要允许指定 IP 地址,您在内部网络上并要求系统一起通信,请使用以下命令

sudo ufw allow from 192.168.55.131

UFW 允许特定端口上的特定 IP 地址
启用 IP 以通过定义的端口连接到您的系统 (示例端口 “3900”),键入以下内容。

sudo ufw allow from 192.168.55.131 to any port 3900

允许子网连接到指定端口
如果您需要从 IP 范围子网到特定端口的整个连接范围,您可以通过创建以下规则来启用此功能。

sudo ufw allow from 192.168.1.0/24 to any port 3900

这将允许从 192.168.1.1 到 192.168.1.254 的所有 IP 地址连接到端口 3900。

允许特定网络接口
例如,允许连接到特定的网络接口, “Eth2” 到指定的端口 3900。您可以通过创建以下规则来实现此目的。

sudo ufw allow in on eth2 to any port 3900

如何拒绝 UFW 上的远程连接

根据 UFW 的默认设置策略,安装后,所有传入连接都设置为 “否定。” 这将拒绝所有传入流量,除非您创建规则以允许连接通过。

但是,您已经注意到一个特定的 IP 地址在您的日志中不断攻击您。 用以下方法阻止它。

sudo ufw deny from 203.13.56.121

黑客使用来自同一子网的多个 IP 地址试图入侵您。 创建以下以阻止。

sudo ufw deny from 203.13.56.121/24

如果您想拒绝对特定端口的访问,您可以创建特定规则。 键入以下示例。

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

如何删除 UFW 规则

您已创建并拒绝规则,但您需要删除它们,因为您不再需要它们。 这可以通过两种不同的方式实现。

首先,要使用规则编号删除 UFW 规则,您必须通过键入以下内容列出规则编号。

sudo ufw status numbered

输出示例:
image-1668934025261

如何在 Debian 11 Bullseye 上设置和配置 UFW 防火墙

该示例将删除第三条规则 IP 地址 1.1.1.1, 上面突出显示。

在您的终端中键入以下内容。

sudo ufw delete 3

如何访问和查看 UFW 日志

默认情况下,UFW 日志记录设置为低,这适用于大多数桌面系统。 但是,服务器可能需要更高级别的日志记录。

要将 UFW 日志记录设置为低(默认):

sudo ufw logging low
要将 UFW 日志记录设置为中等:

sudo ufw logging medium
要将 UFW 日志记录设置为高:

sudo ufw logging high
最后一个选项是完全禁用日志记录,确保您对此感到满意并且不需要日志检查。

sudo ufw logging off
要查看 UFW 日志,它们保存在默认位置 /var/log/ufw.log.

查看实时日志的一种简单快捷的方法是使用 tail 命令。

sudo ufw tail -f /var/log/ufw.log
或者,您可以使用 -n.

sudo ufw tail /var/log/ufw.log -n 30
这将打印出日志的最后 30 行。 您可以使用 GREP 和其他排序命令进一步微调。

如何测试 UFW 规则

高度关键的系统,在玩弄防火墙设置时是一个不错的选择,可以添加 – 试运行标志. 这允许查看可能发生但未处理的更改的示例。

sudo ufw --dry-run enable
禁用 – 试运行标志,使用以下命令。

sudo ufw --dry-run disable
如何重置 UFW 规则
要将您的防火墙重置回其原始状态并将所有传入阻止和传出设置为允许,请键入以下内容进行重置。

sudo ufw reset
确认重置,输入以下内容:

sudo ufw status
输出应该是:

Status: inactive

UFW 防火墙重置后,您现在需要重新启用防火墙并开始添加规则的整个过程。 如果可能,应谨慎使用重置命令。

如何查找所有打开的端口(安全检查)
大多数系统没有意识到它们可以打开端口。 在互联网上每个 IP 地址每天都被扫描的时代,观察幕后发生的事情至关重要。

最好的选择是安装 Nmap,然后使用这个著名的应用程序列出打开的端口。

sudo apt install nmap -y
接下来,找到系统的内部 IP 地址。

hostname -I
输出示例:

192.168.50.45
现在使用以下 Nmap 命令 与 服务器的IP地址.

sudo nmap 192.168.50.45
输出示例:

如何在 Debian 11 Bullseye 上设置和配置 UFW 防火墙

如上所述,所有端口都已关闭。 但是,如果您在关闭或阻止端口之前发现端口已打开,如果您不确定,请首先调查它们是什么,因为这可能会中断服务,或者更糟糕的情况是将您锁定在服务器之外。

从这一点开始,您可以创建您在教程中学到的自定义 UFW 规则来关闭或限制开放端口。

评论和结论

本教程已成功向您展示了如何在 Debian 11 Bullseye 上为桌面或服务器设置和配置 UFW。

强烈推荐使用 UFW,因为与其他选项相比,它是一个简单的防火墙系统,对于非高级用户来说可能过于混乱。 鉴于网络犯罪和黑客行为的兴起,这无疑是保护您系统的快捷方式。

UFW 将开始缺乏的一个领域是主要规则集和 IP 黑名单,其中可能有数十万甚至数百万个 IP 被阻止。 可能需要其他替代方案,但这不会影响大多数用户,因为这些服务器通常有一个很好的选择。