返回博客

UFW 基础:学习基本的防火墙命令

UFW 基础:学习基本的防火墙命令

简介

UFW 代表简单防火墙(uncomplicated firewall)。它是一个前端平台,使您能够轻松管理防火墙功能和命令。您可以在您的 Ubuntu 服务器中默认获取 UFW。如果您还不熟悉该工具,要最大程度地发挥防火墙命令和功能的潜力可能会很困难。

我们的目标是为您提供一份适合初学者使用的全方位指南。我们将通过您可以使用 UFW 执行的各种操作示例来补充说明。其中许多规则对于日常服务和活动都非常有用。让我们开始吧!

前提条件

在继续阅读之前,请确保您的 UFW 已设置为默认规则集。这意味着防火墙允许传出流量,但阻止传入流量。这种默认重置的好处是您可以选择允许哪些流量通过防火墙。如果您不确定 UFW 上当前规则集的状态,请使用此命令进行检查:sudo ufw status。您也可以使用此命令:

除此之外,您可以自由跳转到与您的需求最相关的任何章节。您不一定非要使用本指南中提供的每一个命令。您可以根据个人需求进行组合搭配。

如何阻止 IP 地址

让我们从任何防火墙最基本的功能之一开始:阻止 IP 地址。您可以使用一个非常简单的命令来阻止来自特定 IP 地址的任何网络连接。例如,假设我们这里的特定 IP 地址是 15.15.15.51。您可以将此值替换为您想要通过 UFW 阻止的 IP 地址。这是您为此目的需要使用的命令:

这里,from 15.15.15.51 仅表示源 IP 地址,即“15.15.15.51”。如果您想指定子网,可以按如下方式添加:15.15.15.0/24。该命令同样有效。您可以在您想要的任何防火墙规则中指定此源 IP 地址,例如 allow 规则。

  • 阻止网络接口连接

有时,可能需要阻止从特定 IP 地址到特定网络接口的网络连接。如果是这种情况,我们将必须指定网络接口以及源 IP 地址。在此示例中,假设源 IP 地址为 15.15.15.51,网络接口为 eth0:

与源 IP 地址类似,您也可以在任何防火墙规则中指定网络接口。这些规范的目的是将给定的防火墙规则仅限制在特定的网络或连接中。

如何允许 SSH 连接

如果您使用的是云服务器,本节将与您相关。为了能够建立与云服务器的连接,您需要防火墙允许传入的 SSH 连接。这些 SSH 连接通过端口 22 进行。您可以按照此 教程学习如何使用 SSH 连接到 Ubuntu 中的远程服务器.

通过建立 SSH 连接,您可以使用本地设备成功管理您的云服务器。在这里,我们将介绍与 SSH 相关的防火墙配置的各种规则:

  • 允许 SSH

使用以下命令允许所有传入的 SSH 连接:

另一方面,您也可以通过指定 SSH 服务的端口号来执行该命令:

  • 允许来自特定 IP 地址的传入 SSH

如果您只想允许来自特定 IP 地址或子网的传入 SSH 连接,您可以指定源。例如,假设您要允许的子网是 15.15.15.0/24。以下是您需要运行的命令:

  • 允许来自特定 IP 地址的传入 Rsync 连接

Rsync 运行在端口 873 上,允许您在不同的计算机系统之间进行文件传输。如果您只想允许来自特定 IP 地址或子网(在本例中为 15.15.15.0/24)的 Rsync 连接,可以使用以下命令:

这意味着整个 15.15.15.0/24 子网都将被允许 Rsync 到您的服务器。这里还有一个全面的关于如何利用 Rsync 同步服务器上本地和远程目录的教程.

如何配置 Web 服务器请求

接下来,我们将继续讨论与 Web 服务器服务相关的规则。像 ApacheNginx 通常从两个端口接收 HTTP 和 HTTPS 连接请求:端口 80 和端口 443。端口 80 负责处理 HTTP 请求。端口 443 负责处理 HTTPS 请求。

正如我们在前提条件中所讨论的,您使用的是 UFW 的默认规则集。基于此规则集,防火墙会阻止或拒绝所有传入流量。因此,您必须配置新规则以允许服务器接收并读取这些传入请求。

  • 允许所有 HTTP

如果您想允许来自端口 80 的所有 HTTP 连接和请求,请使用以下命令:

您也可以在命令中使用端口号(端口 80)来指定 HTTP 服务:

  • 允许所有 HTTPS

如果您想允许来自端口 443 的所有 HTTPS 连接和请求,请运行以下命令:

与之前的命令类似,您可以将 'https' 替换为 HTTPS 服务的端口号:

  • 允许所有 HTTP 和 HTTPS

如果您想同时允许 HTTP 和 HTTPS 请求,可以使用针对两者的集合规则。通过这单条命令,您可以允许来自端口 80 和端口 443 的传入流量:

当您一次指定多个端口时,必须使用 proto tcp 命令。

您还可以参考这些关于如何保护 Nginx 以及 在 Ubuntu 上使用 Let’s Encrypt 保护 Apache 的详细指南.

如何允许 MySQL

MySQL 连接通过端口 3306 传入。如果客户端在远程服务器上使用您的 MySQL 数据库,您必须使用规则来允许传入流量。请按照我们的教程来学习 MySQL 的基础知识以及如何在服务器上设置 MySQL.

  • 允许来自特定 IP 地址的 MySQL 连接

正如我们在之前的规则中已经看到的,您必须指定源以允许传入的 MySQL 连接。您的源可以是特定的 IP 地址或子网。在我们的示例中,我们将使用整个 15.15.15.0/24 子网来运行该命令:

  • 允许 MySQL 连接到特定的网络接口

如果您还需要指定允许 MySQL 连接的网络接口,您将使用不同的命令。假设您使用的网络接口是一个名为 eth1 的私有网络接口。您可以将此值替换为您自己的网络接口名称:

如何允许 PostgreSQL

The PostgreSQL 连接通过端口 5432 传入。与 MySQL 连接类似,如果客户端在远程服务器上使用 PostgreSQL 数据库,您需要允许传入流量。您可以使用以下命令来执行此操作。

  • 允许来自特定 IP 地址的 PostgreSQL 连接

如果您知道 PostgreSQL 连接来自特定的子网或 IP 地址,则必须指定源。在这里,我们将再次以 15.15.15.0/24 子网为例:

如果您的 OUTPUT 策略未设置为 ACCEPT,您将必须运行第二条命令。此命令允许已建立的 PostgreSQL 连接的传出流量。

  • 允许 PostgreSQL 访问特定的网络接口

与之前的规则类似,我们将允许 PostgreSQL 连接到特定的网络接口。在我们的例子中是 eth1:

如果您的 OUTPUT 策略未设置为 ACCEPT,您将必须运行第二条命令。此命令允许已建立的 PostgreSQL 连接的传出流量。您可以了解如何通过我们详细的教程在 Ubuntu 上设置 PostgreSQL.

如何配置邮件服务器

您可能还会在系统上使用诸如 SendmailPostfix 之类的邮件服务器。这些服务器开放了多个端口。它们监听的端口取决于为邮件传递设置的协议。这就是为什么您首先必须确定您的邮件传递系统中运行的是哪些协议。随后,您将根据此信息允许相关类型的流量。

  • 阻止传出 SMTP 邮件

在继续介绍允许邮件服务器传入流量的命令之前,让我们先看看如何阻止传出的 SMTP 邮件。如果您不希望服务器发送任何传出邮件,可以使用此命令。SMTP 邮件使用端口 25。使用此命令阻止此流量:

运行此命令后,您的防火墙将丢弃端口 25 上的所有传出流量。如果您想阻止其他端口,只需将端口“25”替换为相应的端口号即可。

  • 允许传入 SMTP

既然您已经知道如何阻止传出流量,那么允许传入流量就显得同样简单了。使用此命令允许服务器在端口 25 上接收 SMTP 连接:

  • 允许传入 IMAP

如果您想允许服务器在端口 143 上建立 IMAP 连接,请使用以下命令:

  • 允许传入 IMAPS

使用此命令允许服务器响应端口 993 上的 IMAPS 连接:

  • 允许传入 POP3

此命令使您的服务器能够通过端口 110 响应所有 POP3 连接:

  • 允许传入 POP3S

最后,您可以使用此命令允许您的服务器接收来自端口 995 的 POP3S 连接请求:

结论

本指南将帮助您熟悉基本的 UFW 功能。我们已经介绍了配置防火墙所需了解的基本命令。您可以选择最适合您特定要求的命令,以创建个性化的防火墙解决方案。UFW 的灵活性允许进行此类自定义。动手尝试一下,看看什么最适合您。

祝您使用愉快!

author

Akshay Nagpal

作者 · CloudSigma

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

评论

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