当前位置:   article > 正文

数据库Mysql--基线检查(上)_select count(*) from mysql.user where length(passw

select count(*) from mysql.user where length(password) < 41

1.是否配置ssl_key的路径

配置要求:配置ssl_key的路径

检测步骤:

执行以下命令查看是否配置ssl_key路径

show variables like 'ssl_key';

判断依据:检查是否配置ssl_key的路径并且由文件存在

2.检查是否配置ssl_ca的路径

配置要求:配置ssl_ca的路径

检测步骤:
执行以下命令查看是否配置ssl_key路径

show variables like 'ssl_ca';

判断依据:检查是否配置ssl_ca的路径,并且文件存在

3.检查是否配置ssl_cert的路径

配置要求:配置ssl_cert的路径

检测步骤:
执行以下命令查看是否配置ssl_cert路径

show variables like 'ssl_cert';

判断依据:检查是否配置ssl_cert的路径,并且文件存在

4.检查是否配置日志功能

配置要求:数据库需要配置错误日志,以便于出现问题时更好分析原因和恢复

检测步骤:
执行以下命令查看是否配置错误、查询、二进制日志

  1. show variables like 'log_error';
  2. show variables like 'log_bin';
  3. show variables like 'log';

判断依据:检查数据库是否配置错误日志

参考配置操作:
mysql 有以下几种日志:   
错误日志:log-error 
查询日志log  (可选)
慢查询日志:log-slow-queries  (可选) 
更新日志:log-update   
二进制日志:log-bin   
(1).如果/etc目录下没有my.cnf,可以执行如下命令创建一个mysql的配置文件(windows环境下为my.ini文件):

cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

(2). vi /etc/my.cnf(windows环境下为my.ini文件)
确保有以上日志数据中非可选的的日志参数(log-error、log-update、log-bin),
保存后重启 mysql 服务就行了。   
例如:   

  1. #Enter a name for the binary log. Otherwise a default name will be used.
  2. log-bin=
  3. #Enter a name for the query log file. Otherwise a default name will be used.
  4. #log=
  5. #Enter a name for the error log file. Otherwise a default name will be used.
  6. log-error=
  7. #Enter a name for the update log file. Otherwise a default name will be used.
  8. log-update=

 注:上面只开启了部分日志,要开启其他的日志就把前面的""#""去掉,
请务必在""=""后添加日志的路径及日志文件名"
(3).重启mysql服务.

5.检查是否移除test数据库

配置要求:移除测试数据库test

检测步骤:执行以下命令查看是否存在test数据库

mysql>SHOW DATABASES like 'test';

判断依据:检查是否移除test数据库

参考步骤:
移除test数据库,使用管理员,执行如下命令:

mysql>DROP DATABASE test;

6.检查是否配置禁止自动创建用户自动授权

配置要求:禁止自动创建用户权限

检测步骤:

执行以下命令查看是否配置禁止自动创建用户自动授权

mysql>select @@global.sql_mode;

判断依据:检查是否存在NO_AUTO_CREATE_USER

参考步骤:
方法1:
(1).以管理员用户登录数据库,执行如下命令:

>set global sql_mode='NO_AUTO_CREATE_USER';

方法2:
(1).如果/etc目录下没有my.cnf,可以执行如下命令创建一个mysql的配置文件(windows环境下为my.ini文件):

cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

(2).编辑my.cnf文件在[mysqld]中加入如下配置语句:

sql_mode=NO_AUTO_CREATE_USER

7.检查是否删除无关或匿名帐号

配置要求:不应存在匿名帐号和无关帐号

检测步骤:

执行以下命令查看是否存在匿名账号

select count(*) from mysql.user where user = '';

判断依据

1.如果【不用名称的用户】可以连接数据库,证明存在匿名帐号,需要按照加固方案手动删除此匿名帐号
2.根据业务要求, 查看是否包含【无关帐号】,存在的话,需要手动删除此帐号

参考配置操作:
(1).以管理身份登录数据库执行如下语句:

mysql>select * from mysql.user where user=''

(2).对于查询到的用户使用一下步骤进行删除:
DROP USER语句用于删除一个或多个MySQL账户。要使用DROP USER,必须拥有mysql数据库的全局CREATE USER权限或DELETE权限。账户名称的用户和主机部分与用户表记录的User和Host列值相对应。使用DROP USER,您可以取消一个账户和其权限,操作如下:

DROP USER user;

该语句可以删除来自所有授权表的帐户权限记录。
补充操作说明:DROP USER不能自动关闭任何打开的用户对话。而且,如果用户有打开的对话,此时取消用户,则命令不会生效,直到用户对话被关闭后才生效。一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。

8.检查是否加密数据库密码

配置要求:数据库密码存放是以hash加密的结果存放的

检测步骤:

使用如下命令查看是否存在未加密的数据库密码

mysql>select count(*) from mysql.user where length(password) < 41 and password!='';

判断依据:检查数据库用户密码的长度,一般为41位

参考步骤:

系统密码默认是加密的,如果存在未加密的账号,可以修改其密码:

mysql>update mysql.user set Password='<password>' where User='<username>';

9.检查是否更改root用户

配置要求:修改数据库管理员root的名称

检测步骤:

使用以下命令查看是否修改root用户名称

mysql>select count(*) from mysql.user where user = 'root';

判断依据:检查用root用户是否可以登录数据库

参考步骤:
(1).修改数据库root用户的名称,进入MYSQL: 

#mysql -u root -p

(2).选择需要操作的数据库

mysql>use mysql;

(3).修改用户名

mysql>update mysql.user set user="新用户名" where user="旧用户名";

10.检查是否使用ssl连接

配置要求:要求使用ssl连接

检测步骤:

执行以下命令查看是否使用ssl连接

show variables like 'have_openssl';

判断依据:have_openssl的值为YES则合规,否则不合规.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/882001
推荐阅读
相关标签
  

闽ICP备14008679号