总体判断
在 Ubuntu 镜像上配置防火墙并不复杂,日常场景使用 UFW(Uncomplicated Firewall) 几行命令即可完成:启用、放行端口、限制来源 IP 等。UFW 是 iptables 的前端,语法简洁、易上手,适合大多数服务器与桌面环境的基础防护需求。
常见操作一览
- 查看状态与版本
- 查看状态:sudo ufw status(加 verbose 可看更详细;加 numbered 显示规则编号)
- 查看版本:sudo ufw version
- 启用与默认策略
- 启用:sudo ufw enable
- 常用默认:sudo ufw default deny incoming(入站默认拒绝)、sudo ufw default allow outgoing(出站默认允许)
- 放行端口与服务
- 按端口:sudo ufw allow 22/tcp
- 按服务名:sudo ufw allow ssh(依赖应用配置)
- 按来源 IP:sudo ufw allow from 203.0.113.10 to any port 22
- 删除与重置
- 按编号删除:sudo ufw delete 10
- 重置:sudo ufw reset
以上命令覆盖日常 90% 的使用场景,足以完成服务器的最小防护基线。
什么时候会变得复杂
- 需要细粒度控制(如基于连接状态、速率限制、按域名动态解析放行等)时,UFW 可能不够用,要直接使用 iptables/nftables 编写更复杂的规则。
- 需要严格的出站流量治理(例如仅允许 HTTPS 443 出站,或按域名白名单放行)时,常见做法是结合 UFW 基础策略并用 iptables 实现出站限制与动态解析。
- 多环境/多工作流(CI/CD Runner、不同安全级别环境)需要分场景策略、规则审计与变更记录,复杂度主要来自流程与合规要求,而非 UFW 本身。
快速上手建议
- 远程操作务必先放行 SSH(22/TCP) 再启用防火墙,避免被锁死:先执行 sudo ufw allow 22/tcp,再执行 sudo ufw enable。
- 服务器常用基线:仅开放 22/TCP(SSH)、80/TCP(HTTP)、443/TCP(HTTPS);其余按需最小化开放。
- 需要按来源限制时,使用 from 源地址 to any port 端口 的语法精准放行。
- 规则调整频繁时,用 status numbered 查看编号并按编号删除,降低误操作成本。