如何使用UFW配置Ubuntu防火墙

介绍

防火墙是用于监控所有传入和传出流量的网络安全系统。它根据预定义的安全规则允许或阻止数据包。如果您正在运行生产系统,了解如何配置防火墙对您来说至关重要。受防火墙保护的系统不太可能被有害信息感染,因为它们很少暴露在 Internet 上,因为传入和传出流量都根据安全规则进行严格过滤。

如何使用UFW配置Ubuntu防火墙

什么是 UFW

UFW,也称为 Uncomplicated Firewall,是一个前端框架,它提供了一个简单的界面,用于使用 iptables 实用程序来管理 netfilter - 默认的 Linux 内核数据包过滤系统。它是 Ubuntu 20.04 内置的防火墙系统,可以简化复杂的 iptables 命令,让您更轻松地创建基本的防火墙配置。

UFW 使用带有少量简单命令的命令行界面。它支持所有基本的防火墙规则、各种网络协议、日志记录和更多功能。您可以查看官方 UFW 文档中的大量功能列表。

先决条件

要配置 UFW,您需要事先准备好以下内容:

  • 具有root权限的Ubuntu 20.04系统
  • 命令行界面 (CLI) 的基础知识

注意: 本教程不仅适用于 Ubuntu 20.04,也适用于其他 LTS 版本。UFW 的早期版本从 Ubuntu 12.04 开始可用。

安装 UFW 防火墙

UFW 预装了 Ubuntu 操作系统。但是,您可以通过尝试使用以下命令安装它来确保您拥有最新版本的 UFW:

apt install ufw

现在您已经安装了最新版本的 UFW,让我们使用以下命令检查其状态:

ufw status

如何使用UFW配置Ubuntu防火墙

如您所见,默认情况下 UFW 处于非活动状态。我们将在首先进行一些重要更改后启用它。

UFW 默认防火墙策略

如果您是第一次使用 UFW,最好仔细检查默认的防火墙策略。为此,请检查 UFW 的默认配置文件:

nano /etc/default/ufw

默认情况下,UFW 配置为拒绝所有传入流量并允许所有传出流量。这意味着没有人能够访问您的系统,而您可以从任何应用程序或服务发出传出请求。

可以使用以下命令模式更改默认 UFW 策略:

ufw default <policy> <chain>

例如,如果要允许所有传入流量,请使用以下命令:

ufw default allow incoming

虽然以下命令将拒绝所有传出流量:

ufw default deny outgoing

每次政策更改后都会显示一条确认消息,例如:

如何使用UFW配置Ubuntu防火墙

允许 SSH 连接

默认情况下,UFW 将阻止所有传入流量,包括 SSH 和 HTTP。如果您在设置例外之前启用防火墙,您当前的远程会话将被终止,您将无法再连接到您的服务器。

为避免这种情况,您需要使用以下命令允许传入的 SSH 连接:

ufw allow ssh

它将打开端口 22,这是默认端口。可以看到,分别为 IPv4 和 IPv6 协议添加了两条新的防火墙规则:

如何使用UFW配置Ubuntu防火墙

如果您已将 SSH 配置为使用其他端口,请使用更具体的命令为 SSH 连接创建允许规则。例如,如果您有 ssh 服务侦听端口 4422,请使用以下命令:

ufw allow 4422/tcp

此防火墙规则允许 TCP 连接到端口 4422。

启用 UFW 防火墙

现在您的 UFW 已经配置完毕,您需要使用以下命令启用它:

ufw enable

如何使用UFW配置Ubuntu防火墙

这将立即启动 UFW 守护进程并在系统启动时启用它。通过键入 y 接受给定的提示,然后按 ENTER 继续。

您可以使用 systemctl 服务管理器仔细检查它是否正在运行:

systemctl status ufw

如何使用UFW配置Ubuntu防火墙

添加 UFW 防火墙规则

您可以通过 UFW 将各种防火墙规则应用于您的系统:

  • allow– 允许流量
  • deny– 静默丢弃流量
  • reject– 拒绝流量并将错误数据包发送回发件人
  • limit– 限制来自在过去 30 秒内尝试发起 6 个或更多连接的特定 IP 地址的连接

您可以在通用或更具体的范围内应用这些防火墙规则。通用范围将 UFW 规则应用于传入和传出流量。您可以将它与以下命令模式一起使用:

ufw [rule] [target]

另一方面,您可能希望将规则专门应用于传入或传出流量。在这种情况下,您应该相应地使用以下命令模式:

ufw [rule] in [target]

ufw [rule] out [target]

稍后我们将通过一些实际示例,以便您可以看到一些现实生活中的应用程序。

UFW 防火墙规则可以在许多不同的目标上运行。您可以将服务名称、IP 地址、端口甚至网络接口作为目标。现在让我们逐一了解这些目标模式,看看有什么可能。

目标应用程序配置文件

安装 ufw 后,大多数依赖网络进行通信的应用程序都会向 ufw 注册它们的配置文件,从而允许用户快速允许或拒绝对该应用程序的外部访问。

您可以使用以下命令检查哪些应用程序已在 UFW 注册:

ufw app list

您的输出可能如下所示:

如何使用UFW配置Ubuntu防火墙

要允许对这些应用程序中的任何应用程序进行传入和传出访问,请使用以下命令模式:

ufw allow [App name]

例如,您可以使用以下命令允许 OpenSSH 连接:

ufw allow OpenSSH

如何使用UFW配置Ubuntu防火墙

此防火墙规则允许 OpenSSH 应用程序的所有传入和传出流量。您可以更具体,只允许使用以下命令传入的 SSH 流量:

ufw allow in OpenSSH

尽管如此,在远程服务器中启用 SSH 访问的最佳实践是使用限制规则集。它只允许在 30 秒窗口内来自同一 IP 地址的 6 个连接,使您免受潜在的暴力攻击。在生产环境中对 OpenSSH 应用程序使用限制而不是允许规则集:

ufw limit OpenSSH

目标 IP 地址

在 UFW 中,您可以使用以下命令模式允许或拒绝特定 IP 地址:

ufw [rule] from [ip_address]

例如,如果您看到来自 IP 地址 192.168.100.20 的一些恶意活动,您可以使用以下命令阻止来自它的所有流量:

ufw deny from 192.168.100.20

尽管您已阻止来自此恶意 IP 地址的所有传入流量,但在某些情况下它仍可能到达您的服务器。这可能是因为 UFW 从上到下应用其规则。例如,您的第一个规则可能allow是所有传入流量到端口 22,您的deny from 192.168.100.20规则可能是一步失败。

为了避免这种情况,请使用该prepend选项将最具体的防火墙规则添加到规则列表的最顶部。最终命令如下所示:

ufw prepend deny from 192.168.100.20

目标端口

您还可以使用 UFW 定位特定端口或端口范围。例如,您可以允许使用任何协议连接到端口 8080:

ufw allow 8080

通常,您可能想要更具体,并且只允许使用特定网络协议连接到特定端口。例如,您可以仅使用以下命令允许 TCP 连接到端口 8080:

ufw allow 8080/tcp

但是,有时您的应用程序可能会针对不同的活动使用一系列端口。在这种情况下,您可以使用以下命令将端口范围列入白名单:

ufw allow 8080:9090/tcp

还记得定位 IP 地址的可能性吗?如果您不想阻止来自某个 IP 地址的所有流量,您可能会更具体一些,只阻止到特定端口的流量:

ufw deny from 192.168.100.20 to any port 53 proto udp

这样,您将使用 UDP 协议阻止从 192.168.100.20 到端口 53 的所有流量,该协议通常为 DNS 服务保留。

您的输出如下所示:

如何使用UFW配置Ubuntu防火墙

目标网络接口

一些系统配置了多个网络接口,可能需要不同的防火墙规则。幸运的是,UFW 允许您针对特定的网络接口并仅对其应用防火墙规则。让我们试试看。

首先,使用以下命令列出系统的网络接口:

ip addr

如何使用UFW配置Ubuntu防火墙

如您所见,目前在 Ubuntu 20.04 系统上配置了三个网络接口。让我们瞄准第二个名为eth0. 为此,您应该on eth0在 UFW 命令中使用该选项:

ufw allow in on eth0 from 192.168.100.255

现在所有来自 192.168.100.255 的流量只允许流向 eth0 网络接口:

如何使用UFW配置Ubuntu防火墙

检查 UFW 防火墙规则

现在您已经完成添加防火墙规则,最好仔细检查规则表以查看结果。您可以使用以下命令检查您的活动 UFW 规则:

ufw status

如何使用UFW配置Ubuntu防火墙

要查看 UFW 防火墙规则的更详细版本,请使用以下verbose选项:

ufw status verbose

如何使用UFW配置Ubuntu防火墙

如果您只想以您第一次键入规则的方式查看规则列表,请使用以下命令:

ufw show added

如何使用UFW配置Ubuntu防火墙

与 相比ufw status,ufw show命令即使在禁用 UFW 时也会显示防火墙规则。

删除 UFW 防火墙规则

现在您已经完成添加防火墙规则,如果您想删除其中的一些怎么办?为此,我们有两种方法可用:您可以通过规则编号删除规则,或通过名称删除规则。让我们逐一分析。

按编号删除

您可以通过对规则表进行编号来删除 UFW 规则,然后使用其关联编号删除特定规则。

首先,使用以下命令检查 UFW 规则的编号列表:

ufw status numbered

如何使用UFW配置Ubuntu防火墙

如您所见,您的防火墙规则现在有一个与之关联的编号,您可以使用这些编号来定位它们。例如,现在让我们使用以下命令删除第 6 条规则:

ufw delete 6

如何使用UFW配置Ubuntu防火墙

只需按 y 接受确认提示,规则 3 将被删除。

按规则名称删除

删除 UFW 规则的第二种方法是通过名称指定它。首先以您第一次输入规则的方式列出规则:

ufw show added

如何使用UFW配置Ubuntu防火墙

假设您要删除拒绝来自 192.168.100.20 IP 地址的所有流量的规则。为此,您必须使用delete带有规则名称的命令deny from 192.168.100.20。最终命令如下所示:

ufw delete deny from 192.168.100.20

如何使用UFW配置Ubuntu防火墙

管理 UFW 日志

UFW 支持多个日志记录级别,因此您可以仔细查看您的网络活动。默认情况下,UFW 会记录所有不符合定义策略的被阻止的数据包,以及符合您定义的规则的数据包。这是low您可以根据需要修改的日志记录级别。

您可以使用以下命令仔细检查您的日志记录活动:

ufw status verbose

如何使用UFW配置Ubuntu防火墙

输出的第二行显示日志记录已打开,日志记录级别设置为低。

设置 UFW 日志级别

有五个 UFW 日志记录级别。他们每个人都有不同的日志记录策略,并收集越来越多的数据。请注意,中等以上的日志级别可能会生成大量日志输出,并且可能会在繁忙的系统上快速填满磁盘,因此请谨慎使用。

  • off- 禁用 UFW 管理的日志记录。
  • low- 记录所有不匹配默认策略的被阻止的数据包,以及匹配预设规则的数据包。
  • medium- 同上,加上所有不符合定义策略的允许数据包、所有无效数据包和所有新连接。
  • high- 与上面相同,只是没有速率限制,加上所有具有速率限制的数据包。
  • full- 同上,只是没有速率限制。

您可以使用以下命令模式更改默认的低日志记录级别:

ufw logging [level]

例如,使用以下命令将日志记录级别更改为中等:

ufw logging medium

如何使用UFW配置Ubuntu防火墙

通过这种方式,您可以启用中等日志记录级别并增加日志记录范围。

了解 UFW 日志

日志文件存储在 /var/log/ 目录中。您可以使用 ls 命令列出 UFW 创建的所有日志文件:

ls /var/log/ufw*

如何使用UFW配置Ubuntu防火墙

您现在可以检查您的日志文件以查找有关 UFW 活动的相关信息,例如:

less /var/log/ufw.log

如何使用UFW配置Ubuntu防火墙

如您所见,有大量信息可供您了解 UFW 活动。单行可能如下所示:

Jan 2 00:00:14 ubuntu-sandbox kernel: [142705.160851] [UFW BLOCK] IN=eth0 OUT= MAC=52:54:21:9a:ca:d7:fe:54:21:9a:ca:d7:08:00 SRC=198.144.159.22 DST=5.199.162.56 LEN=40 TOS=0x00 PREC=0x00 TTL=239 ID=61187 PROTO=TCP SPT=49194 DPT=10164 WINDOW=1024 RES=0x00 SYN URGP=0

现在让我们剖析这行 UFW 日志以更好地理解其含义。信息量最大的变量可能是 SRC 和 DST IP 地址及其相关端口号 SPT 和 DPT,但了解所有这些变量很有用:

  • [UFW BLOCK]: 表示数据包被阻塞
  • IN=eth0:传入流量设备。
  • OUT=:传出流量设备为空,因为流量是传入的。
  • MAC=52:54:21:9a:ca:d7:fe:54:21:9a:ca:d7:08:00:设备的MAC地址。
  • SRC=198.144.159.22:数据包发送方的源IP地址。
  • DST=5.199.162.56:用于接收数据包的目标 IP 地址。在这种情况下,它是我的 IP 地址。
  • LEN=40:数据包长度。
  • TOS=0x00和PREC=0x00:不推荐使用的不相关的变量并设置为 0。
  • TTL=239: 一次换一个包。每个数据包在终止之前只能通过给定数量的路由器反弹。
  • ID=61187:IP 数据报的唯一 ID,由同一数据包的片段共享。
  • PROTO=TCP: 使用的协议。
  • SPT=49194:连接的源端口。该端口可能表明是什么服务发起了连接尝试。
  • DPT=10164: 连接的目标端口。该端口可能表明什么服务是用来接收连接尝试的。
  • WINDOW=1024:发送方愿意接收的数据包大小。
  • RES=0x00:该位保留供将来使用。它目前无关紧要并设置为 0。
  • SYN URGP=0: SYN表示这个连接需要三次握手,URGP代表紧急指针相关性是无关紧要的,设置为0。

重置 UFW 配置

有时您需要从头开始配置。如果您想将 UFW 配置重置为默认设置,可以使用以下命令:

ufw reset

如何使用UFW配置Ubuntu防火墙

出现提示时输入y并按下ENTER以重置所有活动的防火墙规则并关闭 UFW 守护进程。如您所见,UFW 会自动为您刚刚重置的规则创建备份文件,以防您改变主意或想在将来查看它们。

文章链接: https://www.mfisp.com/13728.html

文章标题:如何使用UFW配置Ubuntu防火墙

文章版权:梦飞科技所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
IDC云库

如何创建和使用Ansible Playbook

2022-12-5 10:57:07

IDC云库

使用色彩心理学提高网站转化率的5个技巧

2022-12-5 11:09:15

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
客户经理
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

梦飞科技 - 最新云主机促销服务器租用优惠