公司网络突然断了,排查一圈发现是防火墙配置被误删。这种情况其实挺常见,尤其是运维人员交接、多人操作或者设备升级时。一旦配置丢了,重新写规则不仅费时,还容易出错。所以,防火墙配置的备份不是“有空做一下”,而是必须定期执行的硬性动作。
为什么备份不能靠“想起来才做”
很多人觉得“我改完配置手动存一次就行”,但现实是,工作一忙就忘了。比如周五下午改了一条策略,想着周一再备份,结果周末设备出问题自动重启,配置回滚,周一上班一堆人打不开系统,锅就背上了。
更麻烦的是,有些厂商设备默认不会自动保存运行配置到启动配置。你在界面上改了一堆规则,看起来生效了,但没点“save”或执行保存命令,重启之后全都没了。这种教训太多了。
制定可落地的备份策略
一个靠谱的备份策略,得回答三个问题:什么时候备?备什么?备到哪去?
时间上,建议至少做到“变更后必备份 + 每周定时备份”。变更后备份能抓住最新状态,定时备份则是兜底。可以用脚本配合cron,在每周日凌晨2点自动拉取所有防火墙的配置文件。
内容上,不只是导出当前配置,还得包括版本信息、设备序列号、备份时间戳。这样以后查问题才知道当时是什么环境。
存储位置最关键——不能只存在本地电脑。硬盘坏了、电脑丢了,备份也没了。建议至少两份:一份在内网NAS,一份同步到异地服务器或私有云。不要用个人网盘,安全风险太大。
用脚本自动化执行备份
手动登录每台防火墙导出配置太低效。以华为USG系列为例,可以用Python脚本通过SSH登录设备,执行显示配置命令并保存结果:
import paramiko
import datetime
# 设备信息
firewall_ip = "192.168.10.1"
username = "admin"
password = "P@ssw0rd"
# 创建SSH连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(firewall_ip, username=username, password=password)
# 执行命令
stdin, stdout, stderr = ssh.exec_command("display current-configuration")
config = stdout.read().decode("utf-8")
# 生成文件名
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"fw_backup_{firewall_ip}_{timestamp}.cfg"
# 保存到本地
with open(filename, "w") as f:
f.write(config)
ssh.close()
这个脚本可以打包成定时任务,每天跑一次,自动命名归档。如果有几十台设备,加个列表循环就行。
别忘了验证备份的有效性
备份文件看着是生成了,但可能是空的,或者只输出了一半。曾经有公司备份了一年,结果恢复时才发现所有文件都是登录失败的日志。所以,定期抽查很重要——随便挑一个备份文件,找个测试设备导入试试,看能不能正常加载。
还可以在脚本里加判断逻辑:如果返回内容包含“Authentication failed”,就发邮件告警。这样能第一时间发现账号密码失效的问题。
把备份纳入变更管理流程
每次修改防火墙策略前,先自动触发一次备份,再执行变更。这样就算改坏了,能快速回退。很多企业用Git管理配置文件,每次备份都提交一次commit,谁改了哪一行清清楚楚。
比如在团队群里发一句:“现在要调整DMZ区访问策略,已备份当前配置,如有异常立即回滚。” 这样既留痕,也提醒其他人别同时操作。
防火墙是网络的第一道防线,它的配置就是核心资产。备份不是技术难题,而是执行习惯。把策略定下来,工具配好,定期检查,才能真正在出事时不抓瞎。