MySQL 安全审计日志保留与定期备份整改操作文档


MySQL 日志定期备份与保留整改操作文档

一、整改背景

等保测评发现项:

问题描述: MySQL 数据库日志保留不满足 180 天,未定期进行备份。
控制要求: 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等。


二、整改目标

  1. MySQL 日志(log_bingeneral_logerror.log)保存时间不少于 180 天;
  2. 日志文件每日自动备份、轮转并压缩;
  3. 防止日志被意外删除或覆盖,满足等保安全审计要求。

三、MySQL 日志配置调整

编辑配置文件 /etc/my.cnf

[mysqld]

# 数据路径与 socket
datadir=/mnt/sdc/mysql
socket=/var/lib/mysql/mysql.sock

# 端口与进程
port=3411
pid-file=/var/run/mysqld/mysqld.pid

# 错误日志
log-error=/var/log/mysqld.log

# 普通查询日志
general_log = ON
general_log_file = /mnt/sdc/mysql/general.log

# 二进制日志(主从复制与数据变更记录)
log_bin = /mnt/sdc/mysql/binlog/mysql-bin
server-id = 1
binlog_format = ROW
expire_logs_days = 180     # 二进制日志自动保留 180 天

保存后执行:

systemctl restart mysqld

四、配置日志自动轮转与备份

创建 logrotate 配置文件 /etc/logrotate.d/mysql-logs

/mnt/sdc/mysql/general.log {
    daily                   # 每天轮转一次
    rotate 180              # 保留180份(约180天)
    compress                # 压缩旧日志
    delaycompress           # 延迟一天再压缩
    missingok
    notifempty
    create 640 mysql mysql  # 设置新文件权限
    postrotate
        # 通知MySQL刷新日志
        mysql -uroot -p'你的root密码' -e "FLUSH GENERAL LOGS;"
    endscript
}

/var/log/mysqld.log {
    daily
    rotate 180
    compress
    delaycompress
    missingok
    notifempty
    create 640 mysql mysql
}

/mnt/sdc/mysql/binlog/mysql-bin.* {
    daily
    rotate 180
    missingok
    notifempty
    compress
    delaycompress
    create 640 mysql mysql
}

⚠️ 将 '你的root密码' 替换为实际数据库密码。


五、验证 logrotate 配置

  1. 检查配置语法:

    logrotate -d /etc/logrotate.conf
    

    输出无报错表示配置正常。

  2. 手动执行一次轮转测试:

    logrotate -f /etc/logrotate.d/mysql-logs
    
  3. 验证生成的备份文件:

    ls -lh /mnt/sdc/mysql/ | grep general.log
    

    可看到类似:

    general.log
    general.log-20251028.gz
    general.log-20251027.gz
    

六、防止日志被误删或篡改

  1. 设置日志目录权限:

    chown -R mysql:mysql /mnt/sdc/mysql
    chmod 750 /mnt/sdc/mysql
    
  2. 设置日志文件仅允许追加写入(防篡改):

    chattr +a /mnt/sdc/mysql/general.log
    
  3. 如需远程备份,可在 /etc/crontab 增加:

    0 2 * * * rsync -az /mnt/sdc/mysql/*.gz backupuser@192.168.237.56:/backup/mysql_logs/
    

七、整改说明(可提交测评单位)

整改措施:

  1. 已启用 MySQL 二进制日志 log_bin 并设置 expire_logs_days=180,确保日志自动保留 180 天。
  2. 已启用通用查询日志 general_log 并通过 logrotate 实现每日自动轮转、压缩与归档。
  3. 已将错误日志 /var/log/mysqld.log 纳入轮转策略,设置保留 180 天。
  4. 已为日志目录配置权限及追加保护,防止误删或篡改。
  5. 后续将定期检查备份有效性,确保审计日志完整、可追溯。

八、后续建议

  • 每季度验证一次日志轮转与保留周期;
  • 可在监控系统中加入日志大小监控,避免磁盘占满;
  • 定期抽查日志文件内容,确保可正常追溯操作记录。

posted @ 2025-10-28 17:01  wangwenzhe  阅读(21)  评论(0)    收藏  举报