如何在 Ubuntu 和 Debian 云服务器上使用 UFW 设置防火墙如何在 Ubuntu 和 Debian 云服务器上使用 UFW 设置防火墙如何在 Ubuntu 和 Debian 云服务器上使用 UFW 设置防火墙如何在 Ubuntu 和 Debian 云服务器上使用 UFW 设置防火墙
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 和 Debian 云服务器上使用 UFW 设置防火墙

介绍

设置功能正常的防火墙对于保护云服务器至关重要。以前,设置防火墙是通过复杂或神秘的实用程序完成的。许多这些实用程序(例如,iptables)内置了很多功能,但需要用户付出额外的努力来学习和理解它们。

另一种选择是 UFW,或 Uncomplicated Firewall。 UFW 是 iptables 的前端,旨在提供比其他防火墙管理实用程序更加用户友好的界面。 UFW 在 Linux 社区中得到了很好的支持,并且通常默认安装在许多发行版中。

在本教程中,您将使用 UFW 设置防火墙来保护 Ubuntu 或 Debian 云服务器。您还将了解如何设置 UFW 默认规则以允许或拒绝端口和 IP 地址的连接、删除您创建的规则、禁用和启用 UFW,以及根据需要将所有内容重置为默认设置。

先决条件

要学习本教程,您需要一台运行 Ubuntu 或 Debian 的服务器。您的服务器应该有一个具有 sudo 权限的非根用户。要为 Ubuntu 进行设置,请按照我们的 Debian 11 初始服务器设置指南进行操作。这两个初始服务器设置指南都将确保您的机器上安装了 UFW,并且您拥有一个安全的环境,您可以使用它来练习创建防火墙规则.

在 UFW 中使用 IPv6

如果您的虚拟专用服务器 (VPS) 配置为 IPv6,请确保 UFW 配置为支持 IPv6,以便它配置您的 IPv4 和 IPv6 防火墙规则。为此,请在您首选的文本编辑器中打开 UFW 配置文件。这里我们将使用 nano:

  1. sudo nano /etc/default/ufw

确认 IPV6 设置为 yes:

/etc/default/ufw
# /etc/default/ufw # # Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback # accepted). You will need to 'disable' and then 'enable' the firewall for # the changes to take affect. IPV6=yes …

进行更改后,保存并退出文件。如果您使用的是 nano,请按 CTRL + X、Y,然后按 ENTER。

现在通过首先禁用它来重新启动你的防火墙:

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

然后再次启用它:

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

您的 UFW 防火墙现在已设置为在适当的时候为 IPv4 和 IPv6 配置防火墙。接下来,您将调整连接到防火墙的默认规则。

设置 UFW 默认值

您可以通过定义允许和拒绝连接的默认规则来提高防火墙的效率。 UFW 的默认设置是拒绝所有传入连接并允许所有传出连接。这意味着任何试图访问您的服务器的人都无法连接,而服务器内的任何应用程序都可以连接到外部。要更新 UFW 设置的默认规则,首先解决传入连接规则:

  1. sudo ufw default deny incoming
Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)

接下来,解决传出连接规则:

  1. sudo ufw default allow outgoing
Output
Default outgoing policy changed to 'allow' (be sure to update your rules accordingly)

注意:如果您想要更严格,您可以拒绝所有传出请求。此选项基于个人喜好。例如,如果您有一个面向公众的云服务器,它可以帮助防止任何类型的远程 shell 连接。虽然,它确实使您的防火墙管理起来更加麻烦,因为您还必须为所有传出连接设置规则。您可以使用以下方法将其设置为默认值:

  1. sudo ufw default deny outgoing

允许连接到防火墙

允许连接需要更改防火墙规则,您可以通过在终端中发出命令来完成。例如,如果您现在打开防火墙,它会拒绝所有传入连接。如果您通过 SSH 连接到您的服务器,这将是一个问题,因为您将被锁定在您的服务器之外。通过启用与服务器的 SSH 连接来防止这种情况发生:

  1. sudo ufw allow ssh

如果您的更改成功,您将收到以下输出:

Output
Rule added Rule added (v6)

UFW 带有一些默认值,例如上一个示例中使用的 ssh 命令。或者,您可以允许传入连接到端口 22/tcp,它使用传输控制协议 (TCP) 来完成相同的事情:

  1. sudo ufw allow 22/tcp

但是,如果您在已经运行 allow ssh 之后尝试此操作,您将收到以下消息,因为该规则已经存在:

Output
Skipping adding existing rule Skipping adding existing rule (v6)

如果您的 SSH 服务器在端口 2222 上运行,您可以允许使用相同语法的连接,但将其替换为端口 2222。请注意,如果您单独使用端口号,它也会影响 tcp 和 udp:

  1. sudo ufw allow 2222/tcp
Output
Rule added Rule added (v6)

保护网络服务器

要通过文件传输协议 (FTP) 访问保护 Web 服务器,您需要允许端口 80/tcp 的连接。

允许端口 80 的连接对于侦听 HTTP 连接请求的 Web 服务器(例如 Apache 和 Nginx)很有用。为此,允许连接到端口 80/tcp:

  1. sudo ufw allow 80/tcp

UFW 通常会为配置文件提供 Web 服务器运行所需的规则。如果不是,则 Web 服务器配置文件可能存储为 \WWW 并以 ftp 或 tcp 打开,如以下示例所示:

  1. sudo ufw allow www

您还可以使用 ftp 或端口 21 来允许 FTP 连接:

  1. sudo ufw allow ftp
  1. sudo ufw allow 21/tcp

对于 FTP 连接,您还需要允许端口 20 的连接:

  1. sudo ufw allow 20/tcp

您的调整将取决于您需要打开哪些端口和服务,并且可能需要进行测试。请记住也允许您的 SSH 连接。

指定端口范围

您还可以使用 UFW 指定允许或拒绝的端口范围。为此,您必须首先在范围的低端指定端口,然后是冒号 (:),然后是范围的高端。最后,您必须指定要应用规则的协议(tcp 或 udp)。

例如,以下命令将允许 TCP 访问从 1000 到 2000 的每个端口,包括:

  1. sudo ufw allow 1000:2000/tcp

同样,以下命令将拒绝从 1234 到 4321 的每个端口的 UDP 连接:

  1. sudo ufw deny 1234:4321/udp

指定 IP 地址

您可以允许来自特定 IP 地址的连接,如下所示。请务必将 IP 地址替换为您自己的信息:

  1. sudo ufw allow from your_server_ip

正如这些示例所示,在通过有选择地允许某些端口和 IP 地址连接来调整防火墙规则时,您具有很大的灵活性。查看我们的指南,了解有关允许来自特定 IP 地址或子网的传入连接的更多信息。

拒绝连接

如果您想打开服务器的所有端口(不推荐这样做),您可以允许所有连接,然后拒绝任何您不想授予访问权限的端口。以下示例是您将如何拒绝对端口 80 的访问:

  1. sudo ufw deny 80/tcp

删除规则

如果你想删除一些你管理的规则,使用 delete 并指定你想删除的规则:

  1. sudo ufw delete allow 80/tcp
Output
Rule deleted Rule deleted (v6)

如果规则又长又复杂,还有另一种两步法。首先,生成当前规则的编号列表:

  1. sudo ufw status numbered

然后,通过这个编号列表,查看当前允许哪些规则并通过参考其编号删除规则:

  1. sudo ufw delete number
Output
Status: active To Action From -- ------ ---- [ 1] OpenSSH ALLOW IN Anywhere [ 2] 22/tcp ALLOW IN Anywhere [ 3] 2222/tcp ALLOW IN Anywhere [ 4] 80 ALLOW IN Anywhere [ 5] 20/tcp ALLOW IN Anywhere …

例如,如果端口 80 是列表中的第 4 位,您将使用以下语法。如果您想继续操作,系统可能还会提示您一个问题。您可以决定是 y 或否 n:

  1. sudo ufw delete 4
Output
Deleting: allow 80 Proceed with operation (y|n)? y Rule deleted (v6)

启用 UFW

一旦你定义了你想要应用到你的防火墙的所有规则,你可以启用 UFW 以便它开始执行它们。如果您通过 SSH 连接,请确保设置您的 SSH 端口,通常是端口 22,以允许接收连接。否则,您可能会将自己锁定在服务器之外:

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

要确认您的更改已通过,请检查状态以查看规则列表:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 22/tcp ALLOW Anywhere 2222/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 80/tcp DENY Anywhere …

您还可以使用 verbose 以获得更全面的输出:

  1. sudo ufw status verbose

要禁用 UFW,请运行以下命令:

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

重置默认设置

如果出于某种原因您需要将云服务器的规则重置为其默认设置,您可以使用 ufw reset 命令执行此操作。请注意,在重置所有内容之前,您会收到写入 y 或 n 的提示,因为这样做会中断现有的 SSH 连接:

  1. sudo ufw reset
Output
Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (y|n)? y Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530' Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530' Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530' Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530' Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530' Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'

重置为默认设置将禁用 UFW 并删除您之前定义的任何规则。但是,即使您对默认设置进行了任何修改,它们也不会更改为原始设置。现在您可以使用 UFW 重新开始,并根据您的喜好自定义您的规则和连接。

结论

在本教程中,您学习了如何设置和配置您的云服务器以允许或限制对端口或 IP 地址子集的访问。此外,您还练习了删除不再需要的任何规则,并通过禁用然后启用 UFW 防火墙来确认这些更改已被考虑在内。最后,您了解了如何将 UFW 防火墙重置为默认设置。要了解更多关于 UFW 的可能性,请查看我们的 UFW Essentials 指南:通用防火墙规则和命令。

©2015-2025 艾丽卡 support@alaica.com