返回博客

在 Ubuntu 18.04 上使用 UFW 配置防火墙

在 Ubuntu 18.04 上使用 UFW 配置防火墙

一个 防火墙 是保障系统安全的核心组件之一。它负责管理网络上的入站和出站连接。它是服务器和数据的第一道防线。这就是为什么配置一个良好的防火墙至关重要。在本指南中,我们将引导您完成在 Ubuntu 18.04 上使用 UFW 设置防火墙的步骤。

Ubuntu 上的 UFW

术语 UFW 代表“Uncomplicated Firewall”(简单防火墙)。它是 Ubuntu 预装的默认防火墙程序。UFW 实际上是 iptables 的一个接口。UFW 的目标是使配置和管理防火墙变得更容易。虽然 iptables 本身是一个强大且灵活的选择,但它对初学者并不友好。UFW 让初学者和有经验的用户都能更轻松地使用。

首先,请阅读我们的 全面指南,它将帮助您熟悉 UFW 的基本功能。您也可以参考 本指南来安装您的 Ubuntu 服务器。现在,让我们开始吧!

首先,如果由于某种原因您的 UFW 未安装,请立即安装它:

配置 UFW

  • 使用 IPv6

目前,IPv4 仍占据主导地位。考虑到这一点,本指南的大部分内容也以 IPv4 为主。值得庆幸的是,UFW 也支持 IPv6。您需要做的就是从 UFW 配置文件中启用该功能。

首先,在文本编辑器中打开 UFW 配置文件。要保存更改,必须以 sudo 权限运行文本编辑器:

寻找“IPV6”并确保其设置为“yes”。

  • 默认策略

如果您是第一次接触防火墙,建议先定义默认策略。这些规则决定了如何控制不匹配任何显式规则的流量。默认情况下,UFW 配置为拒绝所有入站连接,但允许所有出站连接。它定义了任何人都无法访问服务器,而服务器上运行的应用程序可以访问外部。

以下命令将重新定义 UFW 的默认行为。请注意,如果之前修改过,它将改变 UFW 的行为:

对于个人电脑,仅这些防火墙规则就足够了。然而,服务器需要更多设置来妥善加强其安全性。

允许 SSH 连接

按照目前 UFW 的配置,它将拒绝所有入站连接。对于远程服务器来说,这是行不通的。如果无法访问服务器,就什么也做不了。为了避免这个问题,可以将 UFW 配置为允许入站 SSHHTTP 连接。

要允许 SSH 连接到服务器,请运行以下命令。它实际上会告诉 UFW 允许端口 22 上的所有连接。这是 SSH 守护进程默认监听的端口:

除了这个命令,也可以直接配置允许连接到端口 22。该端口定义在 /etc/services 文件中:

因为端口 22 是 SSH 守护进程的默认端口,它也可能容易受到攻击。如果 SSH 服务器配置为监听不同的端口怎么办?在这种情况下,UFW 必须允许连接到该端口。假设 SSH 服务器正在监听端口 1234,那么请使用以下命令:

启用 UFW

虽然建立了 UFW 规则,但除非激活 UFW,否则它们不会起任何作用。默认情况下,UFW 是禁用的,这意味着尽管声明了规则,它也不会执行它们。要启用 UFW,请运行以下命令:

UFW 可能会显示一条关于中断现有 SSH 连接的警告消息。因为已配置允许 SSH 连接,所以启用 UFW 不会造成任何中断。要查看设置了哪些规则,请运行以下命令:

允许各种连接

此时,UFW 应该配置其他规则以获得稳定的体验。允许哪些连接取决于您的具体需求。前面已经演示了如何让 UFW 根据服务名称或端口号允许连接。

以下是一些非常常见且需要开放的其他端口:

  • SSH (端口 22):这是为 SSH 连接配置的默认端口。
  • HTTP (端口 80):这是未加密的 Web 服务器使用的默认端口。
  • HTTPS (端口 443):这是加密的 Web 服务器使用的默认端口。

要启用 SSH 连接,请运行以下任一命令:

接下来,要启用 HTTP 连接,请运行以下任一命令:

要启用 HTTPS 连接,请运行以下任一命令:

端口范围

到目前为止,我们已经演示了如何允许特定端口。如果需要允许一个端口范围该怎么办?向 UFW 逐个声明每个端口是非常低效的。有些应用程序会使用多个端口。幸好,UFW 允许声明一个端口范围。为此,请使用以下命令结构:

以下示例启用了使用端口 60006007:

建议尽可能声明协议。但在大多数情况下,这不是必需的,一切仍能正常工作。

特定 IP 地址

使用 UFW 时,还可以通过特定的 IP 地址过滤连接。默认情况下,UFW 将阻止来自任何 IP 地址的连接。可以声明允许来自某些 IP 地址的连接。要允许来自某个 IP 地址的连接,请使用以下命令结构:

您还可以声明允许该 IP 地址连接的特定端口。为此,请在命令中添加 to any port,后跟端口号:

子网

如果您需要允许一个 IP 地址子网,可以使用 CIDR 表示法。在此示例中,UFW 将允许来自以下范围的 IP 地址的连接:203.0.113.1203.0.113.254:

与上一步类似,也可以指定这些 IP 地址可以连接的端口:

连接到特定的网络接口

在服务器环境中,可能会有多个 network interfaces 连接到系统。使用 UFW,可以指定某条规则仅适用于特定的网络接口。首先,检查连接到服务器的所有网络接口。重点关注目标网络接口的名称:

 firewall with UFW on Ubuntu 18.04. 4

在我们的例子中,只有一个网络接口 ens3 连接到公共互联网。要允许来自该网络接口的传入连接,请使用以下命令结构:

还可以定义来自该网络接口的流量可以到达的端口:

拒绝连接

根据默认配置,UFW 将拒绝来自任何源的连接(声明的例外情况除外)。这是使用 UFW 的推荐方式。然而,可能需要阻止来自特定源 IP 地址或子网的特定连接。也许 UFW 的默认行为被设置为允许所有连接(不推荐)。

要拒绝来自某些 IP 地址的连接,UFW 需要拒绝规则。编写拒绝规则非常简单。只需获取任何允许规则,将“allow”一词替换为“deny”即可!它就变成了一条拒绝规则。

请看以下示例。要拒绝任何 HTTP 连接,请使用以下拒绝规则:

要拒绝来自 203.0.113.1 的连接,请使用以下拒绝规则:

删除规则

到目前为止,我们学到的都是如何创建规则。就像创建规则一样,它们也可以被删除。对于 UFW,有两种特定的删除规则的方法。

  • 按规则编号删除规则

这是删除 UFW 规则最简单的方法。UFW 中的每个规则都有一个规则编号。以下命令将打印所有 UFW 规则以及规则编号:

 firewall with UFW on Ubuntu 18.04. 3

以下命令将删除由规则编号指定的规则:

  • 按实际规则删除规则

这是删除规则中较难的方法。它需要手动指定要删除的实际规则。在以下示例中,UFW 将删除由 allow http:

该规则也可以通过 allow 80 来指定。在这种情况下,以下命令将删除它:

删除规则将同时删除 IPv4 和 IPv6 的规则。

检查 UFW 状态和规则

确保 UFW 是否处于活动状态至关重要。要确定 UFW 的状态,请运行以下命令:

 firewall with UFW on Ubuntu 18.04. 2

如果状态为“inactive”,请按照上面的步骤 启用 UFW 进行激活。如果它处于活动状态,UFW 将报告状态为“active”并列出所有活动规则。

禁用 UFW

如果由于某种原因您不打算使用 UFW,请使用以下命令将其禁用:

如果禁用了 UFW,则创建的所有规则都将不再处于活动状态。但是,这些规则并不会被删除。当重新激活 UFW 时,所有规则将再次生效。如果当前的 UFW 配置一团糟怎么办?与其逐个删除规则,不如通过单个命令删除所有规则。要重置 UFW,请运行以下命令:

 firewall with UFW on Ubuntu 18.04. 1

请注意,这不会更改在开始时配置的默认 UFW 行为。

结论

为了确保安全性和功能性,进行适当的防火墙配置是必要的。它应该配置为仅允许必要的传入连接,同时限制不必要的连接。

如果您想了解更多防火墙解决方案,请查看我们的博客以获取更多资源:

祝您使用愉快!

author

Hark Labs

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。