UFW Ubuntu 防火墙¶
一句话概述:UFW(Uncomplicated Firewall)是 Ubuntu 默认的防火墙管理工具,用简单的命令控制哪些端口开放、哪些端口关闭,比直接写 iptables 规则容易 100 倍。
核心知识点¶
| 概念 | 白话解释 |
|---|---|
| 防火墙 | 控制哪些网络流量能进出你的服务器 |
| UFW | iptables 的简化前端,命令更友好 |
| 入站(Incoming) | 外部到你服务器的流量 |
| 出站(Outgoing) | 你服务器到外部的流量 |
| 允许(Allow) | 放行流量 |
| 拒绝(Deny) | 丢弃流量(不响应) |
| 拒绝并通知(Reject) | 拒绝流量但告诉对方被拒了 |
安装配置¶
# Ubuntu 通常已预装
sudo apt install ufw # 如果没有就安装
# ⚠️ 重要:开启前先允许 SSH!
sudo ufw allow ssh # 或 sudo ufw allow 22
# 不做这步就开防火墙 = 把自己锁在门外!
# 开启防火墙
sudo ufw enable # 启用防火墙
# 查看状态
sudo ufw status # 简要状态
sudo ufw status verbose # 详细状态(显示默认策略)
sudo ufw status numbered # 带编号的规则列表
默认策略¶
基本使用¶
按端口允许¶
sudo ufw allow 80 # 允许 HTTP
sudo ufw allow 443 # 允许 HTTPS
sudo ufw allow 3000 # 允许 Node.js 开发端口
sudo ufw allow 5432 # 允许 PostgreSQL(谨慎!)
按服务名允许¶
sudo ufw allow ssh # SSH(22)
sudo ufw allow http # HTTP(80)
sudo ufw allow https # HTTPS(443)
sudo ufw app list # 列出所有可用的应用配置
按 IP 限制¶
# 只允许特定 IP 访问
sudo ufw allow from 192.168.1.100 # 允许这个 IP 的所有流量
sudo ufw allow from 192.168.1.100 to any port 22 # 只允许这个 IP 访问 SSH
sudo ufw allow from 192.168.1.0/24 to any port 3306 # 允许整个子网访问 MySQL
# 拒绝特定 IP
sudo ufw deny from 1.2.3.4 # 封禁某 IP
按协议限制¶
sudo ufw allow 53/tcp # 只允许 TCP 的 53 端口
sudo ufw allow 53/udp # 只允许 UDP 的 53 端口
sudo ufw allow 6000:6007/tcp # 允许端口范围 6000-6007
删除规则¶
sudo ufw status numbered # 先查看编号
# [1] 22/tcp ALLOW IN Anywhere
# [2] 80/tcp ALLOW IN Anywhere
sudo ufw delete 2 # 按编号删除第 2 条规则
sudo ufw delete allow 80 # 按规则内容删除
高级用法¶
限速(防暴力破解)¶
日志¶
sudo ufw logging on # 开启日志
sudo ufw logging medium # 日志级别:low/medium/high/full
# 日志位置:/var/log/ufw.log
sudo tail -f /var/log/ufw.log # 实时查看
Nginx/Apache 应用配置¶
sudo ufw app list # 查看可用应用
# Available applications:
# Nginx Full (80,443)
# Nginx HTTP (80)
# Nginx HTTPS (443)
# OpenSSH (22)
sudo ufw allow 'Nginx Full' # 同时允许 HTTP 和 HTTPS
典型 Web 服务器配置¶
# 推荐的 Web 服务器防火墙配置
sudo ufw default deny incoming # 默认拒绝入站
sudo ufw default allow outgoing # 默认允许出站
sudo ufw allow ssh # SSH(必须!)
sudo ufw allow 'Nginx Full' # HTTP + HTTPS
sudo ufw limit ssh # SSH 限速
sudo ufw enable # 启用
常见报错¶
| 报错信息 | 原因 | 解决方案 |
|---|---|---|
| SSH 连不上了 | 开防火墙前没允许 SSH | 通过云平台控制台登录,ufw allow ssh |
ERROR: Could not find a profile | 应用配置不存在 | ufw app list 查看可用配置 |
| 规则不生效 | 防火墙没启用 | sudo ufw enable |
| Docker 绕过 UFW | Docker 直接操作 iptables | 需要额外配置 Docker UFW 规则 |
| 端口扫描仍可探测 | UFW deny 会丢弃包但端口仍可探测 | 正常行为,deny 已经阻止连接 |
速查表¶
# 基础命令
sudo ufw enable # 启用防火墙
sudo ufw disable # 关闭防火墙
sudo ufw status # 查看状态
sudo ufw status verbose # 详细状态
sudo ufw status numbered # 带编号
# 规则管理
sudo ufw allow <端口> # 允许端口
sudo ufw deny <端口> # 拒绝端口
sudo ufw delete <编号> # 删除规则
sudo ufw reset # 重置所有规则
sudo ufw limit <端口> # 限速
# 常用组合
sudo ufw allow ssh # 允许 SSH
sudo ufw allow http # 允许 HTTP
sudo ufw allow https # 允许 HTTPS
sudo ufw allow from <IP> # 允许特定 IP
sudo ufw deny from <IP> # 封禁 IP
sudo ufw allow <端口>/tcp # 指定协议
sudo ufw allow <起>:<止>/tcp # 端口范围
参考:UFW 手册 | Ubuntu 防火墙文档