赞
踩
配置要求:设置合适的最大连接数
检测步骤:
执行以下命令查看最大连接数设置
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服务
配置要求:安装最新的安全补丁
检测步骤:
使用如下命令查看当前补丁版本
mysql> SELECT VERSION()
判断依据:手工判断项,请依据实际情况选择是否进行补丁更新。
参考步骤:
(1).下载并安装最新mysql安全补丁
(2).补充操作说明
安全警报和补丁下载网址是: http://www.mysql.com
配置要求:执行以下命令查看系统是否存在空密码或者默认密码的帐号
检测步骤:
使用如下命令查看当前补丁版本
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
配置要求:不能存在有通配符%作为主机信息
检测步骤:
执行以下命令查看是否存在通配符%作为主机信息
#select * from mysql.user where host ='%';
判断依据:检查数据表是否存在有通配符%作为主机信息。
参考步骤:
修改host名存在通配符的账号
-
- mysql>update mysql.user set host='localhost' where host='%';
配置要求:严格控制用户权限,只有管理员才能针对数据库操作权限
检测步骤:
使用以下命令查看数据库账号的权限
- 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 (只允许登录)
配置要求:应按照用户分配帐号,避免不同用户间共享帐号
检测步骤:
使用以下命令查看名称不为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"),'','','');
配置要求:禁止远程下载文件
检测步骤:
执行以下命令查看是否禁止下载文件
>show variables like 'local_infile';
判断依据:local_infile的值为OFF则合规,否则不合规。
参考步骤:
(1).以管理员用户登录数据库,执行如下命令:
MYSQL>set global local_infile='OFF';
(2).重启mysql数据库服务.
配置要求:禁止使用旧密码
检测步骤:
编辑文件/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服务
配置要求:在不需要外部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).重启数据库服务让配置生效。
配置要求:以普通帐户安全运行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
配置要求:通过数据库所在操作系统或防火墙限制,只有信任的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>'
如果是所有数据库,则<数据库名称>为*,如果是所有表名,则<表名>为*.
补充说明:
建议在操作系统或防火墙配置访问控制策略.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。