MYSQL 等保整改配置

等保要求 mysql 整改项


配置密码复杂度

  • 看当前复杂度配置

    1
    show variables like ‘validate\_password%’;  

  • 安装插件

    1
    install plugin validate\_password SONAME 'validate\_password.so';


  • 创建简单密码测试

应启用登录失败处理功能

1
2
install plugin CONNECTION\_CONTROL soname 'connection\_control.so';
install plugin CONNECTION\_CONTROL\_FAILED\_LOGIN\_ATTEMPTS soname 'connection\_control.so';


connection_control_min_connection_delay 上面的意思是失败连接超过 3 次,连接延时 1 秒

  • 修改配置文件,连接测试


可以看出失败超过 5 次,连接延时 6 秒 (会影响所有 ip 连接)

启用 ssl 连接

  • 生成证书

    1
    /data/db/mysql-5.7.26/bin/mysql\_ssl\_rsa\_setup -d /data/conf/mysqldb/

  • 修改权限

    1
    cd /data/conf/mysqldb && chown mysql.mysql ./\*
  • 修改配置文件 /data/conf/mysqldb/my.cnf ,添加证书

    1
    2
    3
    ssl-ca=/data/conf/mysqldb/ca.pem  
    ssl-cert=/data/conf/mysqldb/server-cert.pem
    ssl-key=/data/conf/mysqldb/server-key.pem

    重启数据库,连接

  • 启用 ssl 证书后抓包测试
    配置用户:

    1
    2
    grant all privileges on *.* to 用户@‘%’ identified by ‘密码’ require ssl;  
    flush privileges;

    (测试发现使用 root 去连接,抓包也是加密过的,并没配置要求使用 ssl)

  • 连接抓包测试:

    1
    tcpdump -s 0 -l -w - dst 172.xx.xx.xx and port 3306 |strings  

    可以看出已经加密

    另一台没启用 ssl 的则能把语句抓取出来

  • 只授权库权限给某个用户

    1
    2
    3
    grant 权限 on 数据库.\* to ‘用户名’@‘登录主机’ INDENTIFIED BY ‘用户密码’;  
    修改root用户
    update user set user='xxxx' where user='root';
  • 配置超时:

1
2
set global interactive_timeout=1800;
set global wait_timeout=1800;