Mysql安全基线

NO.1增强root帐户密码登陆、删除空密码
原因一、简单密码容易暴力破解
二、mysql默认是空密码
解决一、增强密码强度
- 22位以上
- 同时包含大写字母、小写字母、数字、特殊字符
- 密码不重复使用
- 密码定期更换(60天、90天)
二、给空密码帐号加上密码
mysqladmin -u root password “newpassword”
mysql> use mysql;
mysql> update user set password=password(‘newpassword’) where user=’root’;
mysql> flush privileges; # 刷新权限
NO.2删除默认数据和帐户
原因Mysql默认会有空用户和test库
解决删除test库和除root外帐户再按照业务需求添加
mysql> drop database test;
mysql> delete from user where not (user=’root’);
NO.3更改root帐户名称
原因Mysql管理员帐号默认名称为root,存在被爆破的风险
解决更改root帐户名称以增大爆破成本
mysql> update user set user=’newrootname’ where user=’root’;
mysql> flush privileges;
NO.4限制用户的连接数
原因同个用户可以多个远程链接,会导致性能下降
解决# 修改my.cnf中max_user_connections
vim /etc/my.cnf
max_user_connections 150
NO.5目录权限限制
原因mysql默认安装在/usr/local/mysql下,数据库文件在/usr/local/mysql/var下,权限不正确会导致数据存在被COPY走的风险
解决# 修改目录所有者
chown -R root /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql/var/
NO.6历史命令泄漏
原因linux的历史命令可能会泄漏mysql的帐号密码等信息
解决# 限制历史命令记录为一个较小的数
vim ~/.bash_profile
HISTSIZE=3
HISTFLESIZE=3
# 限制不记录某些命令
export HISTCONTROL=ignorespace # 你在执行任何命令前只需要加一个空格就不会记录
# 定时清除历史命令
history -c
NO.7限制访问数据的IP
原因不要使用%来设置来源IP,指定精确的来源IP限制
解决grant selete on database.table to ‘app’@’xx.xx.xx.xx’ identified by ‘password’ with grant option;
flush privileges;