Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战

1. 引言

UFW(Uncomplicated Firewall,简单防火墙)是 Ubuntu 系统上最常用的防火墙管理工具,它基于 iptables 提供了简洁易用的命令行接口。对于刚接触 Linux 的开发者或运维人员来说,UFW 能大幅降低配置防火墙的门槛,让你用几条命令就能完成端口开放、规则管理等操作。

本文将以 Ubuntu 24.04 LTS 为基础,系统梳理 UFW 的常用命令,从安装、启停、规则管理到端口开放实战,帮助你快速掌握这套防火墙工具。

2. 安装与启用

2.1 安装 UFW

Ubuntu 24.04 默认可能未安装 UFW,可通过以下命令安装:

bash 复制代码
sudo apt update
sudo apt install ufw -y

2.2 查看状态

安装后先查看当前状态:

bash 复制代码
sudo ufw status

输出 Status: inactive 表示防火墙未启用。若想查看更详细的信息(含规则编号),可使用:

bash 复制代码
sudo ufw status verbose

2.3 启用与禁用

启用防火墙(注意:启用前请确保已开放 SSH 端口,避免远程连接中断):

bash 复制代码
sudo ufw enable

禁用防火墙:

bash 复制代码
sudo ufw disable

启用后再次查看状态,应显示 Status: active。

3. 基础规则管理

3.1 默认策略

UFW 默认策略为「拒绝所有入站、允许所有出站」。可通过以下命令查看或修改:

bash 复制代码
sudo ufw default deny incoming
sudo ufw default allow outgoing

3.2 允许与拒绝端口

开放指定端口(以 8080 为例):

bash 复制代码
sudo ufw allow 8080

拒绝指定端口:

bash 复制代码
sudo ufw deny 8080

开放端口并指定协议:

bash 复制代码
sudo ufw allow 8080/tcp
sudo ufw allow 53/udp

3.3 允许特定 IP 访问

允许某个 IP 访问所有端口:

bash 复制代码
sudo ufw allow from 192.168.1.100

允许某个 IP 访问指定端口:

bash 复制代码
sudo ufw allow from 192.168.1.100 to any port 22

允许某个网段访问指定端口:

bash 复制代码
sudo ufw allow from 192.168.1.0/24 to any port 3306

3.4 删除规则

按规则编号删除(先查看编号):

bash 复制代码
sudo ufw status numbered
sudo ufw delete 3

按规则内容删除:

bash 复制代码
sudo ufw delete allow 8080
sudo ufw delete allow 8080/tcp

4. 端口开放实战

4.1 开放常用服务端口

以下是一组常见的端口开放命令,可直接复制使用:

bash 复制代码
# SSH(务必保留)
sudo ufw allow 22/tcp

# HTTP / HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# MySQL
sudo ufw allow 3306/tcp

# PostgreSQL
sudo ufw allow 5432/tcp

# Redis
sudo ufw allow 6379/tcp

# Docker 默认端口
sudo ufw allow 2375/tcp
sudo ufw allow 2376/tcp

4.2 开放端口范围

开放一段连续端口(如 1000-2000):

bash 复制代码
sudo ufw allow 1000:2000/tcp
sudo ufw allow 1000:2000/udp

4.3 开放端口并限制来源

仅允许内网访问数据库端口:

bash 复制代码
sudo ufw allow from 192.168.1.0/24 to any port 3306

仅允许特定 IP 访问 SSH:

bash 复制代码
sudo ufw allow from 203.0.113.10 to any port 22

4.4 查看已开放的端口

bash 复制代码
sudo ufw status

输出示例:

text 复制代码
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
3306/tcp                   ALLOW       192.168.1.0/24

5. 高级用法

5.1 应用配置文件

UFW 支持按应用加载规则,先查看可用应用:

bash 复制代码
sudo ufw app list

允许某个应用(如 OpenSSH):

bash 复制代码
sudo ufw allow 'OpenSSH'

5.2 日志功能

开启日志记录:

bash 复制代码
sudo ufw logging on

查看日志:

bash 复制代码
sudo tail -f /var/log/ufw.log

5.3 重置规则

清空所有规则并恢复默认策略:

bash 复制代码
sudo ufw reset

5.4 规则持久化

UFW 的规则在启用后会自动持久化,重启系统后依然生效。若需手动备份规则,可复制配置文件:

bash 复制代码
sudo cp /etc/ufw/user.rules ~/ufw-user.rules.bak
sudo cp /etc/ufw/before.rules ~/ufw-before.rules.bak
sudo cp /etc/ufw/after.rules ~/ufw-after.rules.bak

6. 常见问题与注意事项

6.1 远程操作前先放行 SSH

在启用 UFW 前,务必先执行:

bash 复制代码
sudo ufw allow 22/tcp

否则启用防火墙后可能导致 SSH 连接被切断。

6.2 规则顺序

UFW 按规则添加顺序依次匹配,先添加的规则优先生效。默认策略(deny incoming)优先级最低,仅在没有任何规则匹配时才生效。若规则冲突,可通过 sudo ufw status numbered 查看编号,再用 sudo ufw delete 删除后重新添加。

6.3 与 Docker 的兼容性

Docker 默认会直接修改 iptables 规则,绕过 UFW 的管控,导致 Docker 发布的端口即使被 UFW 拒绝也能从外部访问。切勿 在 /etc/docker/daemon.json 中设置 "iptables": false,否则容器将完全无法联网。

推荐做法:在 /etc/ufw/before.rules 末尾追加 Docker 的端口转发规则,例如:

bash 复制代码
# 允许 Docker 容器访问外部网络
*filter
:DOCKER-USER - [0:0]
:ufw-before-input - [0:0]
-A ufw-before-input -i docker0 -j ACCEPT
COMMIT

修改后执行 sudo ufw reload 生效。这样既能保留 Docker 的网络能力,又能让 UFW 统一管理宿主机端口。

7. 总结

UFW 是 Ubuntu 上高效且易用的防火墙工具,掌握本文介绍的安装、启停、规则管理、端口开放与高级用法,足以应对日常开发与生产环境的防火墙配置需求。建议在操作前先规划好端口清单,并始终保留 SSH 端口的放行规则,避免远程管理中断。

8. 参考命令速查表

操作 命令
查看状态 sudo ufw status
启用防火墙 sudo ufw enable
禁用防火墙 sudo ufw disable
开放端口 sudo ufw allow 8080
开放端口+协议 sudo ufw allow 8080/tcp
开放端口范围 sudo ufw allow 1000:2000/tcp
允许 IP 访问端口 sudo ufw allow from 192.168.1.100 to any port 22
删除规则 sudo ufw delete allow 8080
查看规则编号 sudo ufw status numbered
开启日志 sudo ufw logging on
重置规则 sudo ufw reset
相关推荐
xiaoqiMikko1 小时前
Linux 实战(七):useradd、sudoers、umask、SGID、软链 —— 三台真机实测
linux·centos
weifont3 小时前
自动化抓取和上架商品:能不动手,就少动手
运维·前端·自动化
拂拉氏3 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
Fcy6483 小时前
Linux下 五种IO模型的认识与⾮阻塞IO的实现
linux·服务器·io
Mikko74 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
夏尔Gaesar4 小时前
解决Ubuntu安装vm tools时选项为灰色问题
ubuntu
书生执笔画浮沉4 小时前
分享一个开源小工具CAdapt
linux·c·gnu·glibc·kernel·升级·灵感
光依旧4 小时前
发版就掉请求?Spring Boot优雅停机的四步
运维·spring boot·nginx·高可用·优雅停机·mcp server
mounter6254 小时前
Linux 内核热升级(Live Update)技术详解:PCI、VFIO 与 IOMMU 子系统的演进与实战解析引言
linux·linux kernel·kernel·iommu·vfio