《网络安全自学教程》- MySQL安全配置,MySQL安全基线检查加固

时间:2024-10-02 07:29:55
《网络安全自学教程》

在这里插入图片描述

MySQL是一款「关系型数据库」,默认使用3389端口提供服务。

在这里插入图片描述

MySQL基线检查

  • 1、更新版本
  • 2、普通用户运行
  • 3、删除匿名账户和无关账户
  • 4、修改弱口令
  • 5、用户权限
  • 6、文件权限
  • 7、可信IP
  • 8、开启日志
  • 9、连接数限制

1、更新版本

在业务允许的情况下,安装新版本,修补漏洞。

select version(); 查看MySQL版本,结合漏洞情报,判断是否需要安装最新版本。

在这里插入图片描述

2、普通用户运行

MySQL服务需要使用普通用户运行,比如mysql用户。

ps -ef | grep mysqld 属主PID是mysql 或者 运行参数指定了运行用户 --user=mysql

grep -i user /etc/ 数据库配置文件通过 user=mysql 指定了用户是mysql

在这里插入图片描述

如果运行用户不是mysql,就在 /etc/ 添加一行 user=mysql

3、删除匿名账户和无关账户

查询用户,用户名和密码字段为空的,就是匿名账户。

MySQL 5.7 以前:select user,password from ;

MySQL5.7 以后:select user,host,authentication_string from ;

在这里插入图片描述

删除匿名账户:delete from where user='';

刷新权限后生效,否则还可以登录:flush privileges;

4、修改弱口令

修改数据库用户的弱口令。

MySQL 5.7 以前:select user,password from ;

MySQL 5.7 以后:select user,authentication_string from ;

在这里插入图片描述

MySQL5.7以前修改密码:

update user set password=password('1234567') where user='root';
flush privileges;
  • 1
  • 2

MySQL5.7以后修改密码:alter user 'root'@'localhost' identified by '1234567';

在这里插入图片描述

5、用户权限

按照软件安全设计的最小特权原则分配用户权限。

查看用户权限:show grants for root@localhost;

在这里插入图片描述

查看用户权限: select * from where user='root'\G

在这里插入图片描述

设置权限 grant select on *.* to test@localhost;

删除权限 revoke select on *.* from test@localhost;

6、文件权限

  • ll ~/.mysql_history ~/.bash_history 权限600
  • ll /etc/ 权限644
  • find / -name *.ibd | xargs ls -al 权限600
  • find / -name *.MYD | xargs ls -al 权限600
  • find / -name *.MYI| xargs ls -al 权限600
  • find / -name *.frm| xargs ls -al 权限600

在这里插入图片描述

7、可信IP

根据实际业务需求,设置可信IP访问。

查看所有用户和登录主机

select user,host from mysql.user;
  • 1

修改指定用户的登录主机

update mysql.user set host = '192.168.153.197' where user = 'test';
  • 1

flush privileges; 刷新权限生效

在这里插入图片描述

8、开启日志

/etc/ 添加一行 log-error=filename,开启日志记录,重启服务生效。

在这里插入图片描述

9、连接数限制

根据实际业务设置最大连接数。

show variables like 'max_connections'; 查看最大连接数。

在这里插入图片描述

如果每设置,就在数据库配置文件 /etc/ 中,添加一行 max_connections=1000,重启服务生效。