Debian 防火墙备份与恢复方法
一、iptables 与 nftables 的备份与恢复
- 备份
- 使用 iptables-save 导出规则到文件(同时处理 IPv4/IPv6):
- sudo iptables-save > /etc/iptables/rules.v4
- sudo ip6tables-save > /etc/iptables/rules.v6
- 使用 nftables 导出当前规则集:
- sudo nft list ruleset > /etc/nftables.conf
- 恢复
- 从备份文件恢复 iptables 规则:
- sudo iptables-restore < /etc/iptables/rules.v4
- sudo ip6tables-restore < /etc/iptables/rules.v6
- 从备份文件恢复 nftables 规则:
- sudo nft -f /etc/nftables.conf
- 验证
- 查看当前规则是否生效:
- sudo iptables -L -n -v
- sudo nft list ruleset
- 说明
- 以上命令直接作用于运行中的内核规则,适合快速备份/回滚;若需持久化,请结合下一节的持久化方法。
二、持久化与自动恢复
- 使用 netfilter-persistent(推荐)
- 安装并保存当前规则:
- sudo apt-get update && sudo apt-get install netfilter-persistent
- 安装过程中选择“是”保存当前 iptables 规则;或之后手动保存:
- sudo netfilter-persistent save
- 恢复/重载规则:
- sudo netfilter-persistent reload
- 使用 UFW 的场景
- UFW 规则会在启用时写入并管理底层 iptables;若需备份/恢复,优先使用 UFW 自身的配置与状态管理(见下一节)。
- 说明
- 通过 netfilter-persistent,系统重启后会自动从 /etc/iptables/rules.v4 与 /etc/iptables/rules.v6 恢复规则,避免丢失。
三、UFW 的备份与恢复
- 备份
- 导出规则清单(便于审计与迁移):
- sudo ufw status numbered > /path/to/backup/ufw-status.txt
- 备份 UFW 配置目录(包含规则与策略片段):
- sudo rsync -a /etc/ufw/ /path/to/backup/ufw/
- 恢复
- 将备份的配置目录复制回系统:
- sudo rsync -a /path/to/backup/ufw/ /etc/ufw/
- 使配置生效:
- sudo ufw disable && sudo ufw enable
- 或仅重载:sudo ufw reload
- 说明
- UFW 本质是对 iptables/nftables 的封装,直接拷贝规则文件不如使用 UFW 自身的启用/重载流程稳妥。
四、异地备份与快速回滚脚本
- 本地与远程备份
- 本地归档:
- sudo tar czf /backup/firewall-$(date +%F).tgz /etc/iptables /etc/nftables.conf /etc/ufw
- 远程同步(示例到备份服务器):
- rsync -avz /etc/iptables/ user@backup:/backup/iptables/
- rsync -avz /etc/nftables.conf user@backup:/backup/
- rsync -avz /etc/ufw/ user@backup:/backup/ufw/
- 快速回滚脚本(iptables 示例)
- 备份:
- sudo iptables-save > /root/iptables-rollback-$(date +%F).bak
- 回滚:
- sudo iptables-restore < /root/iptables-rollback-YYYY-MM-DD.bak
- 说明
- 建议将备份文件纳入版本控制或定期同步到异地存储,保留多个历史版本以便快速回滚。
五、安全操作与常见问题
- 避免锁死
- 远程操作(如通过 SSH 22/TCP)时,先确保允许关键端口,再应用更严格的规则;必要时在控制台保留应急通道。
- 重置为默认
- iptables 快速清空并放行所有流量(谨慎):
- sudo iptables -P INPUT ACCEPT
- sudo iptables -P FORWARD ACCEPT
- sudo iptables -P OUTPUT ACCEPT
- sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -F && sudo iptables -X
- UFW 重置:
- sudo ufw disable && sudo ufw reset && sudo ufw enable
- 验证与排错
- 规则生效后核对:
- sudo iptables -L -n -v
- sudo nft list ruleset
- sudo ufw status verbose
- 说明
- 变更前先备份,变更后立即验证,可显著降低误操作风险。