1、版本安全
NO.1 | 确保此版本数据库没有漏洞 |
原因 | 破坏者会通过漏洞进入数据库,造成数据库丢失、泄露等情况 |
解决 | 在保证业务及网络安全的前提下,并经过兼容性测试后,安装更新补丁 升级最新无漏洞版本 |
2、账号、权限基线检查
NO.1 | 启动 MySQL 的系统账号 是否单独创建且不允许登陆 |
原因 | 禁止 Mysql 以管理员帐号权限运行,以普通帐户安全运行 mysqld |
解决 | 在 /etc/my.cnf 配置文件中进行以下设置[mysql.server]user=mysql |
检查方法 | ps -cf | grep myslqdgrep -i user /etc/my.cnf |
NO.2 | 删除默认数据和帐户(包括匿名账号) |
原因 | Mysql默认会有空用户和test库 |
解决 | 删除test库和除root外帐户再按照业务需求添加 |
NO.3 | 增强root帐户密码登陆、删除空密码 |
原因 | 一、简单密码容易 二、mysql默认是空密码 |
解决 | 一、增强密码强度- 22位以上- 同时包含大写字母、小写字母、数字、特殊字符- 密码不重复使用- 密码定期更换(60天、90天)二、给空密码帐号加上密码 |
NO.4 | 更改root帐户名称 |
原因 | Mysql管理员帐号默认名称为root,存在被爆破的风险 |
解决 | 更改root帐户名称以增大爆破成本 |
NO.5 | 设置root账号只能本地连接 |
原因 | root账号远程连接不利于数据库安全 |
解决 | |
NO.6 | 在数据库权限配置能力范围内,根据用户的业务需要,配置其所需的最小权限 |
原因 | |
解决 | 1、查看数据库授权情况: 2、通过revoke命令回收不必要的或危险的授权。 |
3、网络连接基线检查
NO.1 | 默认端口是否修改 |
原因 | 默认端口容易被 |
解决 | 在 /etc/my.cnf 配置文件中进行以下设置,禁止设置为3306[mysqld]port=xxxx 保存,退出my.cnf 重启MySQL数据库 |
NO.2 | 如果不需要,应禁止远程访问禁止网络连接 |
原因 | 防止猜解密码、溢出、和嗅探 |
解决 | 注意: 仅限于应用和数据库在同一台主机的情况。如果数据库不需要远程访问,可以禁止远程 TCP/IP 连接,通过在 MySQL 服务器的启动参数中添加--skip-networking参数使 MySQL 服务不监听任何 TCP/IP 连接,增加安全性。您可以使用安全组进行内外网访问控制,建议不要将数据库高危服务对互联网开放。 |