勒索病毒对MySQL数据库的危害
勒索病毒通常会通过漏洞入侵服务器,扫描并加密MySQL的数据文件、日志文件等核心存储内容,导致数据库无法正常启动,所有业务操作都无法执行。如果仅依赖在线备份,攻击者可能同时删除或加密在线备份文件,导致恢复无门,而离线备份和不可变存储可以从根源上避免这类问题。

MySQL离线备份实施策略
全量离线备份操作
可以使用mysqldump工具进行逻辑备份,也可以直接拷贝物理数据文件,以下是逻辑备份的示例:
-- 备份所有数据库到离线存储目录 mysqldump -u root -p --all-databases --single-transaction --flush-logs --master-data=2 > /offline_backup/full_backup_$(date +%Y%m%d).sql -- 备份指定数据库 mysqldump -u root -p --databases test_db --single-transaction > /offline_backup/test_db_$(date +%Y%m%d).sql
增量离线备份配置
开启MySQL二进制日志功能,通过二进制日志实现增量备份,首先修改配置文件:
[mysqld] # 开启二进制日志 log-bin=mysql-bin # 日志格式设置为行模式,恢复更准确 binlog_format=ROW # 日志过期时间,避免占用过多空间 expire_logs_days=7
增量备份时只需要拷贝新增的二进制日志文件到离线存储即可,恢复时可以结合全量备份和二进制日志回放数据。
离线备份存储要求
- 备份存储设备与线上服务器物理隔离,不保持长期网络连接
- 备份完成后断开存储设备连接,避免被病毒扫描到
- 定期校验备份文件的完整性,确保备份可用
不可变存储的配置与使用
不可变存储的核心原理
不可变存储是指写入后的数据无法被修改或删除,即使攻击者获取了存储权限,也无法篡改或加密已有的备份文件。常见的实现方式包括对象存储的不可变策略、文件系统的写一次读多次特性等。
基于文件系统的不可变配置
如果使用Linux系统,可以通过chattr命令设置文件不可变属性:
# 设置备份文件不可变 chattr +i /offline_backup/full_backup_20240520.sql # 设置整个备份目录下的文件不可变 chattr +i /offline_backup/* # 查看文件的不可变属性 lsattr /offline_backup/full_backup_20240520.sql
如果需要修改或删除不可变文件,需要先移除不可变属性:
# 移除不可变属性 chattr -i /offline_backup/full_backup_20240520.sql
对象存储不可变策略配置
如果使用对象存储服务,可以开启版本控制或者对象锁功能,设置保留周期,在保留周期内对象无法被删除或修改,以下是S3兼容存储的对象锁配置示例:
# 开启对象锁
aws s3api put-object-lock-configuration --bucket mysql-backup-bucket --object-lock-configuration '{"ObjectLockEnabled":"Enabled","Rule":{"DefaultRetention":{"Mode":"GOVERNANCE","Days":30}}}'
# 上传备份文件到对象存储
aws s3 cp /offline_backup/full_backup_20240520.sql s3://mysql-backup-bucket/
勒索攻击后的数据恢复流程
确认攻击范围
首先断开线上MySQL服务器的网络连接,排查所有数据文件、备份文件是否被加密,确认离线备份和不可变存储中的文件是否完好。
数据恢复操作步骤
- 如果使用的是逻辑全量备份,执行以下命令恢复:
-- 恢复全量备份 mysql -u root -p < /offline_backup/full_backup_20240520.sql
- 如果需要恢复增量数据,回放二进制日志:
# 将二进制日志转换为SQL语句 mysqlbinlog /offline_backup/mysql-bin.000001 /offline_backup/mysql-bin.000002 | mysql -u root -p
防护策略优化建议
- 定期演练恢复流程,确保在真实攻击时能够快速操作
- 离线备份周期根据业务数据更新频率调整,核心业务建议每天一次全量备份,每小时一次增量备份
- 限制MySQL服务器的访问权限,关闭不必要的端口和服务,避免病毒入侵
- 不可变存储的权限严格控制,仅允许备份操作写入,禁止其他账号修改删除文件