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)重启mysql4、禁止存在匿名帐户
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用户
最后更新于
这有帮助吗?