MYSQL安全加固

MYSQL安全加固

设置口令过期时限

alter user 'root'@'%' PASSWORD expire interval 180 day;

增加密码复杂度

  • 登录mysql

  • 安装插件并配置

    -- 检查是否安装
    show variables like 'validate_password%';
    -- 如果没有安装启用插件
    INSTALL PLUGIN validate_password SONAME 'validate_password.so';
    -- 查看默认配置
    show variables like 'validate_password%';
    

设置登录失败

  • 登录mysql

  • 安装插件并配置

    -- 启用插件
    INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
    INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';
    -- 验证是否正常
    SELECT PLUGIN_NAME, PLUGIN_STATUS 
    FROM INFORMATION_SCHEMA.PLUGINS
    WHERE PLUGIN_NAME LIKE 'connection%';
    -- 查看默认变量
    show variables like 'connection_control%';
    -- 修改配置
    -- 失败5次锁定
    SET GLOBAL connection_control_failed_connections_threshold = 5;
    -- 最多锁10分钟(毫秒)
    SET GLOBAL connection_control_max_connection_delay = 600000;
    -- 最少锁10分钟(毫秒)
    SET GLOBAL connection_control_min_connection_delay = 60000;
    -- 检测配置
    show variables like 'connection_control%';
    
  • 新建测试用户

  • 重复输入错误登录密码,然后查看锁定记录

    use information_schema;
    select * from connection_control_failed_login_attempts;	
    

修改默认ROOT账户名称

工具直接修改即可

开启安全审计

docker 复制命令 docker cp ./libaudit_plugin.so xxxxx:/usr/lib64/mysql/plugin

  • 登录mysql
  • 安装插件 install plugin audit soname 'libaudit_plugin.so';
  • 开启审计功能 set global audit_json_file = 1;
  • 写入配置
audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate'
audit_json_file=on       #保证mysql重启后自动启动插件
plugin-load=AUDIT=libaudit_plugin.so   #防止删除了插件,重启后又会加载
audit_json_log_file=/data/logs/mysql/mysql_audit.json  #日志路径
audit_offsets=7824, 7872, 3632, 4792, 456, 360, 0, 32, 64, 160, 536, 7988, 4360, 3648, 3656, 3660, 6072, 2072, 8, 7056, 7096, 7080
  • 查看配置与审计变量
show global variables like '%audit%';
show global status like '%audit%';
show plugins;

定期备份

  • 编写备份脚本
mysqldump -uroot --all-database > backup.sql