UFW 防火墙使用手册 UFW(Uncomplicated Firewall)是 Ubuntu/Debian 系统自带的简化版 iptables 防火墙管理工具,易用且功能强大。 倾听风雨著 2026-07-30 更多教程请去网址:https://blog.qtfyu.top/ =========================================================================== 目 录 =========================================================================== 1. 基本状态查看 2. 启用与禁用 3. 端口管理 4. IP 白名单与黑名单 5. 默认策略 6. 应用配置文件 7. 接口级别的规则 8. 日志管理 9. 速率限制 10. 规则优先级与插入 11. 完整配置示例 12. 常见问题排查 =========================================================================== 1. 基本状态查看 =========================================================================== # 查看防火墙状态(是否启用、已开放端口) sudo ufw status # 查看详细状态(含编号、动作、来源等) sudo ufw status verbose # 查看带编号的规则列表(方便删除指定规则) sudo ufw status numbered # 查看防火墙版本 ufw --version =========================================================================== 2. 启用与禁用 =========================================================================== # 启用防火墙(首次启用会提示可能断开 SSH,确认已放行 22 端口再执行) sudo ufw enable # 禁用防火墙(完全关闭,所有规则失效但保留) sudo ufw disable # 重置防火墙(清空所有规则并禁用,谨慎使用) sudo ufw reset ⚠️ 警告:sudo ufw reset 会清空所有规则并禁用防火墙,执行前请确认你还有其他方式可以连接服务器(如 VNC/控制台)。 =========================================================================== 3. 端口管理 =========================================================================== # 开放指定端口(TCP 默认) sudo ufw allow 22 sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 8080 # 开放指定端口并指定协议 sudo ufw allow 22/tcp sudo ufw allow 53/udp # 开放端口范围 sudo ufw allow 1000:2000/tcp sudo ufw allow 1000:2000/udp # 关闭(拒绝)指定端口 sudo ufw deny 3306 sudo ufw deny 6379/tcp # 删除某条开放端口的规则 sudo ufw delete allow 8080 # 通过编号删除规则(先用 status numbered 查看编号) sudo ufw status numbered sudo ufw delete 3 =========================================================================== 4. IP 白名单与黑名单 =========================================================================== # 允许单个 IP 访问所有端口(全局白名单) sudo ufw allow from 192.168.1.100 # 允许单个 IP 访问指定端口 sudo ufw allow from 192.168.1.100 to any port 22 sudo ufw allow from 192.168.1.100 to any port 3306 # 允许 IP 段访问(CIDR 格式) sudo ufw allow from 192.168.1.0/24 sudo ufw allow from 10.0.0.0/8 to any port 22 # 允许特定 IP 和端口组合 sudo ufw allow from 203.0.113.0/24 to any port 8080 proto tcp # 拒绝单个 IP(黑名单) sudo ufw deny from 192.168.1.200 # 拒绝 IP 段 sudo ufw deny from 10.10.10.0/24 # 删除某条 IP 规则 sudo ufw delete allow from 192.168.1.100 =========================================================================== 5. 默认策略 =========================================================================== # 默认拒绝所有传入连接(推荐,安全模式) sudo ufw default deny incoming # 默认允许所有传出连接(推荐) sudo ufw default allow outgoing # 默认允许所有传入(不推荐,除非在内网测试) sudo ufw default allow incoming # 默认拒绝所有传出(极端安全,可能断网) sudo ufw default deny outgoing =========================================================================== 6. 应用配置文件 =========================================================================== # 查看系统预置的应用配置列表 sudo ufw app list # 查看某个应用具体会开放哪些端口 sudo ufw app info 'Nginx Full' sudo ufw app info 'OpenSSH' # 通过应用名放行(比记端口号更方便) sudo ufw allow 'OpenSSH' sudo ufw allow 'Nginx Full' sudo ufw allow 'Apache' sudo ufw allow 'MySQL' # 删除应用规则 sudo ufw delete allow 'Nginx Full' =========================================================================== 7. 接口级别的规则 =========================================================================== # 仅允许从指定网卡进入的流量 sudo ufw allow in on eth0 to any port 80 sudo ufw allow in on eth0 to any port 443 # 拒绝某网卡的所有传入 sudo ufw deny in on eth1 # 查看网卡名称 ip addr =========================================================================== 8. 日志管理 =========================================================================== # 启用日志(记录被拦截/放行的连接) sudo ufw logging on # 禁用日志 sudo ufw logging off # 设置日志级别 sudo ufw logging low # 低:只记录被拦截的 sudo ufw logging medium # 中:记录被拦截和放行的 sudo ufw logging high # 高:记录所有,包括速率限制 sudo ufw logging full # 完整:记录所有包 # 查看 UFW 日志 sudo tail -f /var/log/ufw.log =========================================================================== 9. 速率限制 =========================================================================== # 限制 SSH 连接速率(30 秒内超过 6 次连接会被临时封禁) sudo ufw limit 22/tcp sudo ufw limit ssh # 限制其他端口速率 sudo ufw limit 8080/tcp =========================================================================== 10. 规则优先级与插入 =========================================================================== # UFW 规则按添加顺序匹配,先匹配的先执行 # 建议顺序:白名单 > 正常端口 > 拒绝所有 # 在指定位置插入规则(例如在规则 #1 之前插入) sudo ufw insert 1 allow from 192.168.1.100 =========================================================================== 11. 完整配置示例(Web 服务器场景) =========================================================================== # 1. 重置并设置默认策略 sudo ufw reset sudo ufw default deny incoming sudo ufw default allow outgoing # 2. 先放行 SSH(防止把自己锁在外面) sudo ufw allow 22/tcp # 或 sudo ufw allow 'OpenSSH' # 3. 放行 Web 端口 sudo ufw allow 80/tcp sudo ufw allow 443/tcp # 4. 放行 1Panel 端口(如果需要) sudo ufw allow 42544/tcp # 5. 添加管理员 IP 白名单(可选) sudo ufw allow from 203.0.113.50 to any port 22 # 6. 启用防火墙 sudo ufw enable # 7. 查看最终规则 sudo ufw status verbose =========================================================================== 12. 常见问题排查 =========================================================================== # 规则不生效? sudo ufw reload # 检查 iptables 底层规则(UFW 的底层) sudo iptables -L -n -v | grep ufw # 查看某端口是否被监听 sudo ss -tunlp | grep :80 # 测试端口连通性(从其他机器) nc -zv 你的IP 80 ⚠️ 警告:如果启用 UFW 后 SSH 连不上,在服务器控制台/VNC 执行 sudo ufw disable 或 sudo ufw allow 22/tcp 恢复。 =========================================================================== 文档版本:2026-07-30 ===========================================================================