MySql数据库安全配置基线Word格式.doc
《MySql数据库安全配置基线Word格式.doc》由会员分享,可在线阅读,更多相关《MySql数据库安全配置基线Word格式.doc(15页珍藏版)》请在冰点文库上搜索。
3.2 授权 8
3.2.1 分配用户最小权限* 8
第4章 日志 10
4.1 日志审计 10
4.1.1 配置日志功能* 10
第5章 其他 12
5.1 其他配置 12
5.1.1 安装了最新的安全补丁* 12
5.1.2 如果不需要,应禁止远程访问* 12
5.1.3 可信IP地址访问控制* 13
5.1.4 连接数设置 14
第6章 评审与修订 15
第1章概述
1.1目的
本文档旨在指导数据库管理人员进行Mysql数据库系统的安全配置。
1.2适用范围
本配置标准的使用者包括:
数据库管理员、应用管理员、网络安全管理员。
1.3适用版本
Mysql数据库系统。
1.4实施
1.5例外条款
第2章帐号
2.1帐号安全
2.1.1禁止Mysql以管理员帐号权限运行
安全基线项目名称
数据库管理系统Mysql远程登录安全基线要求项
安全基线编号
SBL-Mysql-02-01-01
安全基线项说明
以普通帐户安全运行mysqld,禁止mysql以管理员帐号权限运行。
检测操作步骤
1、参考配置操作
Unix下可以通过在/etc/f中设置:
[mysql.server]
user=mysql
2、补充操作说明
基线符合性判定依据
1、判定条件
各种操作系统下以管理员权限运行。
Unix下禁止以root帐号运行mysqld;
2、检测操作
检查进程属主和运行参数是否包含--user=mysql类似语句:
#ps–ef|grepmysqld
#grep-iuser/etc/f
备注
2.1.2避免不同用户间共享帐号*
数据库管理系统Mysql用户属性控制策略安全基线要求项
SBL-Mysql-02-01-02
应按照用户分配帐号,避免不同用户间共享帐号
1.参考配置操作
//创建用户
mysql>
mysql>
insertinto
mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_sub
ject)values("
localhost"
"
pppadmin"
password("
passwd"
),'
'
'
);
这样就创建了一个名为:
phplamp密码为:
1234的用户。
然后登录一下。
exit;
@>
mysql-uphplamp-p
输入密码
登录成功
2.补充操作说明
1.判定条件
不用名称的用户可以连接数据库
2.检测操作
使用不同用户连接数据库
手工检查
2.1.3删除无关帐号*
数据库管理系统Mysql帐号管理安全基线要求项
SBL-Mysql-02-01-03
应删除或锁定与数据库运行、维护等工作无关的帐号
DROPUSER语句用于删除一个或多个MySQL账户。
要使用DROPUSER,必须拥有mysql数据库的全局CREATEUSER权限或DELETE权限。
账户名称的用户和主机部分与用户表记录的User和Host列值相对应。
使用DROPUSER,您可以取消一个账户和其权限,操作如下:
DROPUSERuser;
该语句可以删除来自所有授权表的帐户权限记录。
要点:
DROPUSER不能自动关闭任何打开的用户对话。
而且,如果用户有打开的对话,此时取消用户,则命令不会生效,直到用户对话被关闭后才生效。
一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。
检测操作:
mysql查看所有用户的语句
输入指令selectuser();
依次检查所列出的账户是否为必要账户,删除无用户或过期账户。
注:
无关的帐号主要指测试帐户、共享帐号、长期不用帐号(半年以上不用)等
第3章口令
3.1口令安全
3.1.1不使用默认密码和弱密码
数据库管理系统Mysql账户口令安全基线要求项
SBL-Mysql-03-01-01
检查帐户默认密码和弱密码,口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号四类中至少两类。
且5次以内不得设置相同的口令。
密码应至少每90天进行更换。
修改帐户弱密码
如要修改密码,执行如下命令:
updateusersetpassword=password('
test!
p3'
)whereuser='
root'
;
flushprivileges;
密码长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类。
检查本地密码:
(注意,管理帐号root默认是空密码)
usemysql;
selectHost,User,Password,Select_priv,Grant_privfromuser;
3.2授权
3.2.1分配用户最小权限*
数据库管理系统Mysql权限分配策略安全基线要求项
SBL-Mysql-03-02-01
在数据库权限配置能力内,根据用户的业务需要,配置其所需的最小权限。
1、参考配置操作
合理设置用户权限,撤销危险授权。
2、补充操作说明
1判定条件
确保数据库没有不必要的或危险的授权
2检测操作
查看数据库授权情况:
select*fromuser;
select*fromdb;
select*fromhost;
select*fromtables_priv;
select*fromcolumns_priv;
回收不必要的或危险的授权,可以执行revoke命令:
helprevoke
Name:
'
REVOKE'
Description:
Syntax:
REVOKE
priv_type[(column_list)]
[,priv_type[(column_list)]]...
ON[object_type]
{
*
|*.*
|db_name.*
|db_name.tbl_name
|tbl_name
|db_name.routine_name
}
FROMuser[,user]...
第4章日志
4.1日志审计
4.1.1配置日志功能*
数据库管理系统Mysql配置日志功能安全基线要求项
SBL-Mysql-04-01-01
数据库应配置日志功能,
mysql有以下几种日志:
错误日志:
-log-err
查询日志:
-log(可选)
慢查询日志:
-log-slow-queries(可选)
更新日志:
-log-update
二进制日志:
-log-bin
在mysql的安装目录下,打开my.ini,在后面加上上面的参数,保存后重启mysql服务就行了。
例如:
#Enteranameforthebinarylog.Otherwiseadefaultnamewillbeused.
#log-bin=
#Enteranameforthequerylogfile.Otherwiseadefaultnamewillbeused.
#log=
#Enteranamefortheerrorlogfile.Otherwiseadefaultnamewillbeused.
log-error=
#Enteranamefortheupdatelogfile.Otherwiseadefaultnamewillbeused.
#log-update=
上面只开启了错误日志,要开其他的日志就把前面的“#”去掉
1、补充操作说明
showvariableslike'
log_%'
查看所有的log命令
2、showvariableslike'
log_bin'
查看具体的log命令
启用审核记录对数据库的操作,便于日后检查。
打开/etc/f文件,查看是否包含如下设置:
[mysqld]
log=filename
第5章其他
5.1其他配置
5.1.1安装了最新的安全补丁*
数据库管理系统Mysql补丁安全基线要求项
SBL-Mysql-05-01-01
系统安装了最新的安全补丁(注:
在保证业务及网络安全的前提下,经过兼容性测试后)
下载并安装最新mysql安全补丁,
安全警报和补丁下载网址是
确保数据库为企业版,并且安装了最新安全补丁。
如果是不安全的社区版,建议替换为企业版(收费)
使用如下命令查看当前补丁版本:
SELECTVERSION()
根据应用场景的不同,如部署场景需开启此功能,则强制要求此项。
5.1.2如果不需要,应禁止远程访问*
数据库管理系统Mysql远程访问安全基线要求项
SBL-Mysql-05-01-02
禁止网络连接,防止猜解密码攻击,溢出攻击和嗅探攻击。
(仅限于应用和数据库在同一台主机的情况)
如果数据库不需远程访问,可以禁止远程tcp/ip连接,通过在mysqld服务器中参数中添加--skip-networking启动参数来使mysql不监听任何TCP/IP连接,增加安全性。
远程无法连接
#cat/etc/f
#ps-ef|grep-imysql
或从客户机远程telnetmysqlserver3306
5.1.3可信IP地址访问控制*
数据库管理系统Mysql访问策略安全基线要求项
SBL-Mysql-05-01-03
通过数据库所在操作系统或防火墙限制,只有信任的IP地址才能通过监听器访问数据库。
执行命令:
GRANTALLPRIVILEGESONdb.*
·
->
->
TO用户名@'
IP子网/掩码'
只有通过指定IP地址段的用户才可以登录
在非信任的客户端以数据库账户登陆被提示拒绝。
用户从其它子网登录,将被拒绝
3、补充说明
5.1.4连接数设置
数据库管理系统Mysql连接数安全基线要求项
SBL-Mysql-05-01-04
根据机器性能和业务需求,设制最大最小连接数。
编辑MySQL配置文件:
f或者是my.ini
在[mysqld]配置段添加:
max_connections=1000
保存,重启MySQL服务。
用命令:
SHOW[FULL]PROCESSLIST显示哪些线程正在运行
mysqladmin-uroot-pvariables
输入root数据库帐号的密码后可看到
|max_connections|1000|
第6章评审与修订
第14页共15页