一、什么是 ufw?
ufw(Uncomplicated Firewall)是 iptables 的前端工具,旨在简化 Linux 防火墙的配置过程。与直接编写 iptables 规则相比,ufw 提供了更加直观和友好的命令行接口,即使是 Linux 新手也能快速上手。
ufw 的主要特点:
- 命令简洁,易于记忆
- 支持 IPv4 和 IPv6
- 可以设置应用配置文件
- 支持日志记录
- 集成在 Ubuntu 等主流发行版中
二、安装 ufw
大多数 Ubuntu/Debian 系统已经预装了 ufw。如果没有安装,可以通过以下命令快速安装:
# Ubuntu/Debian 系统
sudo apt update
sudo apt install ufw -y
# 检查 ufw 状态
sudo ufw status
如果系统提示"未找到命令",说明 ufw 尚未安装,执行上述安装命令即可。
重要警告:对于远程连接的服务器,在安装完成后务必先配置 SSH 允许规则,再启用 ufw,否则会被锁机无法远程连接。
三、ufw 基础操作
3.1 查看防火墙状态
# 简洁查看(显示状态和核心规则)
sudo ufw status
# 详细查看(显示规则、端口、协议、来源IP、默认策略)
sudo ufw status verbose
# 编号查看(方便后续删除规则)
sudo ufw status numbered
3.2 启用/禁用防火墙
# 启用防火墙(默认策略:拒绝入站,允许出站)
sudo ufw enable
# 禁用防火墙
sudo ufw disable
# 重启防火墙
sudo ufw reload
重要警告:如果是通过 SSH 远程管理服务器,启用 ufw 前必须允许 SSH 端口(默认 22),否则会立即断开连接且无法重新登录!
3.3 重置防火墙规则
# 重置所有规则为默认状态
sudo ufw reset
此命令会禁用 ufw 并删除所有自定义规则,适用于配置出错需要重新开始的情况。
四、配置 ufw 防火墙规则
4.1 默认策略
ufw 的默认策略非常安全:拒绝所有入站连接,允许所有出站连接。
# 查看默认策略
sudo ufw status verbose
# 手动设置默认策略(可选)
sudo ufw default deny incoming # 拒绝入站
sudo ufw default allow outgoing # 允许出站
4.2 允许/拒绝端口
# 允许 SSH 连接(务必先执行)
sudo ufw allow 22/tcp
# 允许 HTTP(80)和 HTTPS(443)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 允许指定端口范围
sudo ufw allow 6000:6005/tcp
# 拒绝指定端口
sudo ufw deny 23/tcp
4.3 按服务名配置
ufw 支持使用服务名(基于 /etc/services 文件)来配置规则:
# 允许 SSH 服务
sudo ufw allow ssh
# 允许 HTTP 服务
sudo ufw allow http
# 允许 HTTPS 服务
sudo ufw allow https
4.4 按 IP 地址配置
# 允许指定 IP 访问所有端口
sudo ufw allow from 192.168.1.100
# 允许指定子网访问
sudo ufw allow from 192.168.1.0/24
# 允许指定 IP 访问指定端口
sudo ufw allow from 192.168.1.100 to any port 22
# 拒绝指定 IP
sudo ufw deny from 10.0.0.5
4.5 删除规则
# 按编号删除(推荐)
sudo ufw status numbered # 先查看编号
sudo ufw delete 2 # 删除编号为 2 的规则
# 按规则内容删除
sudo ufw delete allow 80/tcp
五、ufw 高级配置
5.1 应用配置文件
ufw 支持应用配置文件(位于 /etc/ufw/applications.d/),可以批量管理复杂应用的端口。
# 列出所有应用配置
sudo ufw app list
# 查看指定应用的详细信息
sudo ufw app info OpenSSH
# 允许应用的所有端口
sudo ufw allow OpenSSH
5.2 限速防护(防暴力破解)
ufw 支持简单的速率限制,可以有效防止 SSH 暴力破解攻击:
# 限制 SSH 连接速率(每分钟最多 6 次连接,超过则拒绝)
sudo ufw limit ssh/tcp
# 限制指定端口
sudo ufw limit 22/tcp
5.3 日志记录
# 启用日志
sudo ufw logging on
# 设置日志级别(low/medium/high/full)
sudo ufw logging medium
# 查看日志
sudo tail -f /var/log/ufw.log
日志级别说明:
low:记录默认策略匹配的包medium:记录所有允许的包high:记录所有允许的包和部分被拒绝的包full:记录所有包
5.4 IPv6 支持
编辑 /etc/default/ufw 文件,设置 IPV6=yes 即可启用 IPv6 防火墙支持。
# 查看当前 IPv6 设置
sudo grep IPV6 /etc/default/ufw
# 修改后重新加载
sudo ufw reload
六、实战配置示例
6.1 Web 服务器配置
# 1. 允许 SSH(务必第一步执行)
sudo ufw allow 22/tcp
# 2. 允许 HTTP 和 HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 3. 启用防火墙
sudo ufw enable
# 4. 验证规则
sudo ufw status numbered
6.2 数据库服务器配置
# 只允许应用服务器访问数据库端口
sudo ufw allow from 192.168.1.50 to any port 3306
sudo ufw allow from 192.168.1.51 to any port 3306
# 拒绝其他所有访问
sudo ufw default deny incoming
6.3 Docker 环境配置
Docker 会直接修改 iptables 规则,可能与 ufw 冲突。推荐做法:
- 修改 Docker 配置文件
/etc/docker/daemon.json:
{
"iptables": false
}
- 然后手动配置 ufw 规则允许 Docker 容器通信。
七、ufw 使用注意事项
- 远程服务器必看:配置 ufw 前,务必先允许 SSH 端口,否则会被锁机
- 规则顺序:ufw 按规则编号顺序匹配,先添加的规则优先生效
- Docker 冲突:Docker 会绕过 ufw,需要额外配置
- 备份规则:重大修改前建议备份 ufw 配置文件(
/etc/ufw/目录) - 测试验证:启用防火墙后,立即测试所有服务是否正常访问
八、相关文章推荐
如果你对 Linux 服务器安全感兴趣,还可以阅读以下文章:
总结
ufw 作为 Linux 系统下的简易防火墙工具,凭借其简洁的命令和强大的功能,成为了 Ubuntu/Debian 系统运维的标配工具。掌握 ufw 的基本操作和高级配置,能够有效提升服务器的安全性。
在实际应用中,建议结合服务器的具体业务需求,精细化配置防火墙规则,避免过度开放端口。同时,定期检查防火墙日志,及时发现和处理异常访问行为。
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论