在 Ubuntu 中用 UFW 配置防火墙
创始人
2024-03-01 18:36:04
0

UFW,即 简单防火墙 ( uncomplicated firewall ) ,是一个 Arch Linux、Debian 或 Ubuntu 中管理防火墙规则的前端。 UFW 通过命令行使用(尽管它有可用的 GUI),它的目的是使防火墙配置简单(即 不复杂 ( uncomplicated ) )。

开始之前

1、 熟悉我们的入门指南,并完成设置服务器主机名和时区的步骤。

2、 本指南将尽可能使用 sudo。 在完成保护你的服务器指南的章节,创建一个标准用户帐户,强化 SSH 访问和移除不必要的网络服务。 但不要跟着创建防火墙部分 - 本指南是介绍使用 UFW 的,它对于 iptables 而言是另外一种控制防火墙的方法。

3、 更新系统

Arch Linux

sudo pacman -Syu

Debian / Ubuntu

sudo apt-get update && sudo apt-get upgrade

安装 UFW

UFW 默认包含在 Ubuntu 中,但在 Arch 和 Debian 中需要安装。 Debian 将自动启用 UFW 的 systemd 单元,并使其在重新启动时启动,但 Arch 不会。 这与告诉 UFW 启用防火墙规则不同,因为使用 systemd 或者 upstart 启用 UFW 仅仅是告知 init 系统打开 UFW 守护程序。

默认情况下,UFW 的规则集为空,因此即使守护程序正在运行,也不会强制执行任何防火墙规则。 强制执行防火墙规则集的部分在下面。

Arch Linux

1、 安装 UFW:

sudo pacman -S ufw

2、 启动并启用 UFW 的 systemd 单元:

sudo systemctl start ufw
sudo systemctl enable ufw

Debian / Ubuntu

1、 安装 UFW

sudo apt-get install ufw

使用 UFW 管理防火墙规则

设置默认规则

大多数系统只需要打开少量的端口接受传入连接,并且关闭所有剩余的端口。 从一个简单的规则基础开始,ufw default命令可以用于设置对传入和传出连接的默认响应动作。 要拒绝所有传入并允许所有传出连接,那么运行:

sudo ufw default allow outgoing
sudo ufw default deny incoming

ufw default 也允许使用 reject 参数。

警告:

除非明确设置允许规则,否则配置默认 denyreject 规则会锁定你的服务器。确保在应用默认 denyreject 规则之前,已按照下面的部分配置了 SSH 和其他关键服务的允许规则。

添加规则

可以有两种方式添加规则:用端口号或者服务名表示。

要允许 SSH 的 22 端口的传入和传出连接,你可以运行:

sudo ufw allow ssh

你也可以运行:

sudo ufw allow 22

相似的,要在特定端口(比如 111)上 deny 流量,你需要运行:

sudo ufw deny 111

为了更好地调整你的规则,你也可以允许基于 TCP 或者 UDP 的包。下面例子会允许 80 端口的 TCP 包:

sudo ufw allow 80/tcp
sudo ufw allow http/tcp

这个会允许 1725 端口上的 UDP 包:

sudo ufw allow 1725/udp

高级规则

除了基于端口的允许或阻止,UFW 还允许您按照 IP 地址、子网和 IP 地址/子网/端口的组合来允许/阻止。

允许从一个 IP 地址连接:

sudo ufw allow from 123.45.67.89

允许特定子网的连接:

sudo ufw allow from 123.45.67.89/24

允许特定 IP/ 端口的组合:

sudo ufw allow from 123.45.67.89 to any port 22 proto tcp

proto tcp 可以删除或者根据你的需求改成 proto udp,所有例子的 allow 都可以根据需要变成 deny

删除规则

要删除一条规则,在规则的前面加上 delete。如果你希望不再允许 HTTP 流量,你可以运行:

sudo ufw delete allow 80

删除规则同样可以使用服务名。

编辑 UFW 的配置文件

虽然可以通过命令行添加简单的规则,但仍有可能需要添加或删除更高级或特定的规则。 在运行通过终端输入的规则之前,UFW 将运行一个文件 before.rules,它允许回环接口、ping 和 DHCP 等服务。要添加或改变这些规则,编辑 /etc/ufw/before.rules 这个文件。 同一目录中的 before6.rules 文件用于 IPv6 。

还存在一个 after.ruleafter6.rule 文件,用于添加在 UFW 运行你通过命令行输入的规则之后需要添加的任何规则。

还有一个配置文件位于 /etc/default/ufw。 从此处可以禁用或启用 IPv6,可以设置默认规则,并可以设置 UFW 以管理内置防火墙链。

UFW 状态

你可以在任何时候使用命令:sudo ufw status 查看 UFW 的状态。这会显示所有规则列表,以及 UFW 是否处于激活状态:

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

启用防火墙

随着你选择规则完成,你初始运行 ufw status 可能会输出 Status: inactive。 启用 UFW 并强制执行防火墙规则:

sudo ufw enable

相似地,禁用 UFW 规则:

sudo ufw disable

UFW 会继续运行,并且在下次启动时会再次启动。

日志记录

你可以用下面的命令启动日志记录:

sudo ufw logging on

可以通过运行 sudo ufw logging low|medium|high 设计日志级别,可以选择 lowmedium 或者 high。默认级别是 low

常规日志类似于下面这样,位于 /var/logs/ufw

Sep 16 15:08:14  kernel: [UFW BLOCK] IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=123.45.67.89 DST=987.65.43.21 LEN=40 TOS=0x00 PREC=0x00 TTL=249 ID=8475 PROTO=TCP SPT=48247 DPT=22 WINDOW=1024 RES=0x00 SYN URGP=0

前面的值列出了你的服务器的日期、时间、主机名。剩下的重要信息包括:

  • [UFW BLOCK]:这是记录事件的描述开始的位置。在此例中,它表示阻止了连接。
  • IN:如果它包含一个值,那么代表该事件是传入事件
  • OUT:如果它包含一个值,那么代表事件是传出事件
  • MAC:目的地和源 MAC 地址的组合
  • SRC:包源的 IP
  • DST:包目的地的 IP
  • LEN:数据包长度
  • TTL:数据包 TTL,或称为 time to live。 在找到目的地之前,它将在路由器之间跳跃,直到它过期。
  • PROTO:数据包的协议
  • SPT:包的源端口
  • DPT:包的目标端口
  • WINDOW:发送方可以接收的数据包的大小
  • SYN URGP:指示是否需要三次握手。 0 表示不需要。

via: https://www.linode.com/docs/security/firewalls/configure-firewall-with-ufw

作者:Linode 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

Xfce 桌面终极对决:F...
谁:两个自带 Xfce 桌面的发行版——Fedora Xfce 与...
2026-07-22 14:40:01
Buildroot vs ...
在嵌入式与边缘计算开发中,操作系统的选择直接决定了产品的开发效率、...
2026-07-20 15:54:01
雷蛇推进灵刃18 Ubun...
近日,科技媒体Phoronix披露了一则重要消息:雷蛇正为其旗舰级...
2026-07-08 23:01:45
别被外表骗了:KDE 桌面...
核心结论:KDE Plasma 桌面同样漂亮,但两款发行版定位不同...
2026-05-21 03:37:42
放弃Ubuntu吧!Deb...
过去几年,我看到不少读者在评论区、私信里吐槽Ubuntu:Snap...
2026-05-09 16:17:21
告别近10年界面停滞,Ub...
IT之家 4 月 25 日消息,科技媒体 omgubuntu 昨日...
2026-05-06 06:51:18

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...