Mysql安全基线

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中maxuserconnections
vim /etc/my.cnf
maxuserconnections 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;|