MySQL数据库基线检查策略

1、禁止mysql以管理员帐号权限运行

1、参考配置
(1)在/etc/my.cnf中设置:
    [mysql.server]
    user=mysql
2、补充操作说明
(1)即使做了上述配置,root用户还是具有启用mysql的权限。为了安全考虑,请尽量不要使用root用户来启用mysql。

2、应删除或锁定与数据库运行、维护等工作无关的账号

1、参考配置
(1)删除用户
    mysql>DROP USER username;
DROP USER语句用于删除一个或多个MySQL账户。要使用该命令,必须拥有mysql数据库的全局CREATE USER权限或DELETE权限。账户名称的用户和主机部分与用户表记录的User和Host列值相对应。
2、补充操作说明
(1)DROP USER不能自动关闭任何打开的用户对话。而且,如果用户有打开的对话,此时取消用户,则命令不会生效,直到用户对话被关闭后才生效。一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。

3、禁止存在空密码用户

参考配置
(1)使用特权用户登录mysql,查看存在空密码的用户:
mysql>  select user,host,password from mysql.user;
+------+----------------------+-------------------------------------------+
| user | host                 | password                                  |
+------+----------------------+-------------------------------------------+
| root | test.com.cn |                                           |
| root | 127.0.0.1            |                                           |
| root | ::1                  |                                           |
+------+----------------------+-------------------------------------------+
3 rows in set (0.00 sec)
(2)根据实际应用情况,删除无用的host对应的user,或者针对user设置密码
     删除方法:
        delete from mysql.user where host='test.com.cn'
    设置密码:
        update mysql.user set password=password('password') where User='root';
  请将password改为实际需要设置的密码
(3)重启mysql

4、禁止存在匿名帐户

5、配置日志功能

6、安装最新的安全补丁

7、存在对所有数据库上的表都具有delete权限的非root用户

8、存在对所有数据库上的表都具有create权限的非root用户

9、存在对所有数据库上的表都具有drop权限的非root用户

10、存在对指定的数据库上的所有表具有select权限的非root用户

11、存在对指定的数据库上的所有表具有insert权限的非root用户

12、存在对指定的数据库上的所有表具有 update 权限的非root用户

13、存在对指定的数据库上的所有表具有delete权限的非root用户

14、存在对指定的数据库上所有表具有create权限的非root用户

15、存在对指定数据库上的所有表具有drop 权限的非root用户

16、存在有shutdown权限的非root用户

17、禁止网络连接

18、存在有create user权限的非root用户

19、存在有reload权限的非root用户

20、存在有grant权限的非root用户

21、禁止have_merge_engine参数设置为enable

22、建议启用ssl安全链接

23、设置数据库连接数的上限

24、默认端口检查

25、禁止存在test数据库

26、存在对所有数据库上的表都具有select权限的非root用户

27、存在对所有数据库上的表都具有insert权限的非root用户

28、存在对所有数据库上的表都具有update权限的非root用户

最后更新于

这有帮助吗?