温馨提示×

Ubuntu防火墙更新规则

小樊
40
2025-11-28 23:28:40
栏目: 智能运维

Ubuntu 防火墙更新规则实用指南

一、UFW 常用更新操作

  • 启用与重载
    • 启用防火墙:sudo ufw enable(首次启用前务必先放行 SSH 22,避免被锁)
    • 重新加载:sudo ufw reload
  • 修改默认策略(影响整体放行/拒绝基线)
    • 入站默认拒绝、出站默认放行:sudo ufw default deny incoming && sudo ufw default allow outgoing
  • 新增或调整规则(按需选择其一)
    • 放行端口/协议:sudo ufw allow 80/tcpsudo ufw allow 443/tcp
    • 放行服务名:sudo ufw allow sshsudo ufw allow http
    • 按来源放行:sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
    • 按网卡放行:sudo ufw allow in on eth0 to any port 80
    • 拒绝/限制
      • 拒绝端口:sudo ufw deny 3306
      • 限制登录防暴力(仅 IPv4):sudo ufw limit ssh
  • 删除规则
    • 按规则删除:sudo ufw delete allow 80
    • 按编号删除:sudo ufw status numbered 查看编号后执行 sudo ufw delete <编号>
  • 查看状态与试运行
    • 查看:sudo ufw status verbose;编号列表:sudo ufw status numbered
    • 试运行(不真正写入):在任意命令前加 –dry-run,如 sudo ufw --dry-run allow 2222/tcp
  • 日志与 IPv6
    • 日志级别:sudo ufw logging medium(可选 low/medium/high/full)
    • 启用 IPv6:编辑 /etc/default/ufwIPV6=yes,然后 sudo ufw reload
      以上命令覆盖日常“新增、修改、删除、回滚”的典型场景,适合快速落地与维护。

二、批量变更与回滚方案

  • 规则文件化与回滚
    • 导出当前规则:sudo ufw status numbered > ufw-$(date +%F).bak
    • 批量编辑后导入:逐条执行新规则,或基于备份做差异更新;如需重置可用 sudo ufw reset(会清空规则,谨慎)
  • 试运行验证
    • 对批量变更,优先用 –dry-run 检查将要添加/删除的规则,确认无误再执行
  • 变更窗口与顺序
    • 先放行新端口(如 SSH),再变更默认策略或删除旧规则,最后重载,降低锁死风险
      通过“备份-验证-导入-重载”的流程,可安全完成批量更新与快速回滚。

三、iptables 规则更新与持久化

  • 查看与临时更新
    • 查看:sudo iptables -L -n -v
    • 新增放行:sudo iptables -A INPUT -p tcp --dport 22 -s 203.0.113.0/24 -j ACCEPT
    • 删除规则:按匹配条件删除,例如 sudo iptables -D INPUT -p tcp --dport 22 -s 203.0.113.0/24 -j ACCEPT
  • 持久化保存与恢复
    • 安装持久化:sudo apt install iptables-persistent
      • 安装时会提示是否保存当前 IPv4/IPv6 规则,选择“是”即可
    • 手动保存/恢复
      • 保存:sudo sh -c “iptables-save > /etc/iptables/rules.v4”
      • 恢复:sudo iptables-restore < /etc/iptables/rules.v4
      • IPv6:sudo ip6tables-restore < /etc/iptables/rules.v6
  • 说明
    • iptables 规则默认重启后丢失,务必完成持久化;变更前建议备份当前规则集
      以上步骤适合需要更细粒度控制或脚本化管理时使用。

四、Docker 场景下的规则生效

  • 现象与原因
    • 使用 Docker 时,容器映射端口可能绕过 UFW,导致已拒绝的端口仍然可达
  • 处理思路(二选一)
    • 由 UFW 管理:在 /etc/docker/daemon.json 中设置 “iptables”: false,重启 Docker 后由 UFW 统一管控;注意需自行维护容器网络与端口放行
    • 由 Docker 管理:保持默认行为,使用 docker run -pdocker-compose 的端口映射,并在 UFW 中仅放行宿主机的管理端口(如 22
      选择哪种方式取决于你对容器网络与防火墙职责边界的偏好。

五、安全与变更建议

  • 变更前先放行 SSH 22,再启用/重载;必要时在本地控制台预留回滚通道
  • 使用 sudo ufw status numbered–dry-run 做变更前检查
  • 适度开启日志(如 medium),避免 high/full 在高流量环境产生大量日志
  • 定期审计与清理不再使用的规则,保持最小暴露面
    这些做法能显著降低误操作风险并提升可维护性。

0