数据库Mysql--基线检查(下)

11.检查是否设置最大连接数

配置要求:设置合适的最大连接数

检测步骤:

执行以下命令查看最大连接数设置

show variables like 'max_connections';

判断依据:根据业务要求调整 默认的连接数,不能小于100

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

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

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

max_connections = 1000

(3).重启mysql服务

12.检查是否安装最新补丁

配置要求:安装最新的安全补丁

检测步骤:

使用如下命令查看当前补丁版本

mysql> SELECT VERSION()

判断依据:手工判断项,请依据实际情况选择是否进行补丁更新。

参考步骤:

(1).下载并安装最新mysql安全补丁
(2).补充操作说明
安全警报和补丁下载网址是: http://www.mysql.com

13.避免弱口令

配置要求:执行以下命令查看系统是否存在空密码或者默认密码的帐号

检测步骤:

使用如下命令查看当前补丁版本

select * from mysql.user where length(password) = 0 or password is null;

判断依据:检查是否存在空密码的帐号。

参考步骤:

参考配置操作:
(1).登录mysql客户端 命令如下:
mysql -u用户名 -p密码

mysql -u用户名 -p密码

(2).查看密码为空的用户:

select User from mysql.user where Password ='';

(3).将密码为空的用户进行密码修改(密码不能为空);
示例要修改root用户密码,执行如下命令: 

mysql> use mysql
mysql> update user set password=password('test!p3') where user='root';
mysql> flush privileges

14.检查是否存在有通配符的主机信息

配置要求:不能存在有通配符%作为主机信息

检测步骤:

执行以下命令查看是否存在通配符%作为主机信息

#select * from mysql.user where host ='%';

判断依据:检查数据表是否存在有通配符%作为主机信息。

参考步骤:

修改host名存在通配符的账号


mysql>update mysql.user set host='localhost' where host='%';

15.检查是否配置用户最小权限

配置要求:严格控制用户权限,只有管理员才能针对数据库操作权限

检测步骤:

使用以下命令查看数据库账号的权限

select Host,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv from mysql.user where (Select_priv = 'Y') or (Select_priv = 'Y') or (Update_priv = 'Y') or (Delete_priv = 'Y') or (Create_priv = 'Y') or (Drop_priv = 'Y');
select user,host,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv from mysql.db where db = 'mysql' and ( (Select_priv = 'Y') or (Insert_priv = 'Y') or (Update_priv = 'Y') or (Delete_priv = 'Y') or (Create_priv = 'Y') or (Drop_priv = 'Y'));

判断依据:确保数据库没有不必要的或危险的授权。

参考步骤:

mysql回收权限命令:

mysql>revoke <privileges> on <dbname>.<tablename> from username;

<privileges>包括:  alter (修改数据库的表)、create (创建新的数据库或表)、delete (删除表数据)、drop (删除数据库/表)、index (创建/删除索引)、insert (添加表数据)、select (查询表数据)、update (更新表数据)、all (允许任何操作)、usage (只允许登录)

16.检查是否配置不同用户不同账号

配置要求:应按照用户分配帐号,避免不同用户间共享帐号

检测步骤:

使用以下命令查看名称不为root,且名称和密码不为空的账号

mysql>select count(*) from mysql.user where user !='root' and User !='' and Password !='';

判断依据:不用名称的用户可以连接数据库,说明了 mysql帐号存在共享的情况。

参考步骤:

使用以下命令创建用户

mysql> insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values("localhost","pppadmin",password("passwd"),'','','');

17.检查是否禁止远程下载文件

配置要求:禁止远程下载文件

检测步骤:

执行以下命令查看是否禁止下载文件

>show variables like 'local_infile';

判断依据:local_infile的值为OFF则合规,否则不合规。

参考步骤:

(1).以管理员用户登录数据库,执行如下命令:

MYSQL>set global local_infile='OFF';

(2).重启mysql数据库服务.

18.检查是否禁止使用旧密码

配置要求:禁止使用旧密码

检测步骤:

编辑文件/etc/my.cnf文件,在[mysqld]区域是否存在如下内容(windows下为my.ini文件): secure_auth

判断依据:/etc/my.cnf或者(my.ini)文件中存在secure_auth则合规。

参考步骤:

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

MYSQL>set global secure_auth='ON';

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

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

(2)编辑my.cnf(my.ini)文件在[mysqld]中加入如下配置语句:
secure_auth
(3).重启mysql服务

19.检查是否配置禁止网络连接

配置要求:在不需要外部IP连接数据库的时候,禁止网络连接

检测步骤:

编辑文件/etc/my.cnf文件,在[mysqld]区域是否存在如下内容(windows下为my.ini文件):
skip-networking

判断依据:检查在不需要外部IP连接数据库的时候,是否禁止网络连接。

参考步骤:

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

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

(2).编辑my.cnf文件在[mysqld]中加入如下配置语句:
skip_networking
(3).重启数据库服务让配置生效。

20.禁止MySql进程管理员权限

配置要求:以普通帐户安全运行mysqld,禁止mysql以管理员账号权限运行

检测步骤:

使用以下命令查看mysqld进程的启动用户

ps -ef|grep "mysqld"|grep -v "grep"|grep -v "mysqld_safe"|awk '{print $1}'

判断依据:各种操作系统下以管理员权限运行;Unix下禁止以root账号运行mysqld。

参考步骤:

(1).linux\Unix下可以编辑/etc/my.cnf(默认没有该文件,可以执行下面的命令copy一个mysql的配置文件至/etc目录下)

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

(2).编辑/etc/my.cnf,在[mysqld]区域添加如下语句:

[mysqld]
user=mysql

(2).重启mysql服务

service mysql restart

21.可信IP地址访问控制

配置要求:通过数据库所在操作系统或防火墙限制,只有信任的IP地址才能通过监听器访问数据库。

检测步骤:

使用如下命令查看是否设置可信ip地址

select Host from mysql.user where Host not in ('localhost','localhost.localdomain','127.0.0.1') and Password !='';

判断依据:在非信任的客户端以数据库账户登录被提示拒绝。

参考步骤:

执行命令:

mysql> grant all  on <数据库名称>.<表名> to  用户名@'IP子网/掩码' identified by '<password>'

如果是所有数据库,则<数据库名称>为*,如果是所有表名,则<表名>为*.
补充说明:
建议在操作系统或防火墙配置访问控制策略.

  • 28
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值