1、 Mysql 数据库系统安全配置基线第 0 页 共 15 页Mysql 数据库系统安全配置基线Mysql 数据库系统安全配置基线第 1 页 共 15 页版本 版本控制信息 更新日期 更新人 审批人V2.0 创建 2012 年 4 月备注:1. 若此文档需要日后更新,请创建人填写版本控制表格,否则删除版本控制表格。Mysql 数据库系统安全配置基线第 2 页 共 15 页目 录第 1 章 概述 .41.1 目的 .41.2 适用范围 .41.3 适用版本 .41.4 实施 .41.5 例外条款 .4第 2 章 帐号 .52.1 帐号安全 .52.1.1 禁止 Mysql 以管理员帐号权限运行 .
2、52.1.2 避免不同用户间共享帐号* 52.1.3 删除无关帐号* 6第 3 章 口令 .83.1 口令安全 .83.1.1 不使用默认密码和弱密码 83.2 授权 .83.2.1 分配用户最小权限* 8第 4 章 日志 .104.1 日志审计 .104.1.1 配置日志功能* 10第 5 章 其他 .125.1 其他配置 .125.1.1 安装了最新的安全补丁* 125.1.2 如果不需要,应禁止远程访问* 125.1.3 可信 IP 地址访问控制* 135.1.4 连接数设置 14第 6 章 评审与修订 .15Mysql 数据库系统安全配置基线第 3 页 共 15 页第 1 章 概述1.
3、1 目的本文档旨在指导数据库管理人员进行 Mysql 数据库系统的安全配置。1.2 适用范围本配置标准的使用者包括:数据库管理员、应用管理员、网络安全管理员。1.3 适用版本Mysql 数据库系统。1.4 实施1.5 例外条款Mysql 数据库系统安全配置基线第 4 页 共 15 页第 2 章 帐号2.1 帐号安全2.1.1 禁止 Mysql 以管理员帐号权限运行安全基线项目名称数据库管理系统 Mysql 远程登录安全基线要求项安全基线编号SBL-Mysql-02-01-01 安全基线项说明 以普通帐户安全运行 mysqld,禁止 mysql 以管理员帐号权限运行。 检测操作步骤1、参考配置操
4、作Unix 下可以通过在/etc/f 中设置:mysql.serveruser=mysql2、补充操作说明基线符合性判定依据1、判定条件各种操作系统下以管理员权限运行。Unix 下禁止以 root 帐号运行 mysqld;2、检测操作检查进程属主和运行参数是否包含-user=mysql 类似语句:# ps ef | grepmysqld#grep -i user /etc/f备注2.1.2 避免不同用户间共享帐号*安全基线项目名称数据库管理系统 Mysql 用户属性控制策略安全基线要求项安全基线编号SBL-Mysql-02-01-02 安全基线项说明 应按照用户分配帐号,避免不同用户间共享帐号
5、Mysql 数据库系统安全配置基线第 5 页 共 15 页检测操作步骤1参考配置操作/创建用户 mysql mysql insert intomysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_sub ject) values(“localhost“,“pppadmin“,password(“passwd“),); 这样就创建了一个名为:phplamp 密码为:1234 的用户。 然后登录一下。 mysqlexit; mysql -u phplamp -p 输入密码 mysql登录成功 2补充操作说明基线符合性判定依据1.判定条件
6、不用名称的用户可以连接数据库2.检测操作使用不同用户连接数据库备注 手工检查2.1.3 删除无关帐号*安全基线项目名称数据库管理系统 Mysql 帐号管理安全基线要求项安全基线编号SBL-Mysql-02-01-03 安全基线项说明 应删除或锁定与数据库运行、维护等工作无关的帐号检测操作步骤1参考配置操作DROP USER 语句用于删除一个或多个 MySQL 账户。要使用 DROP USER,必须拥有 mysql 数据库的全局 CREATE USER 权限或 DELETE 权限。账户名称的用户和主机部分与用户表记录的 User 和 Host 列值相对应。使用 DROP USER,您可以取消一个
7、账户和其权限,操作如下:DROP USER user;该语句可以删除来自所有授权表的帐户权限记录。2补充操作说明要点:DROP USER 不能自动关闭任何打开的用户对话。而且,如果用户有打开的对话,此时取消用户,则命令不会生效,直到用户对话被关闭后才生效。一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。基线符合性判定依据检测操作:mysql 查看所有用户的语句 Mysql 数据库系统安全配置基线第 6 页 共 15 页输入指令 select user();依次检查所列出的账户是否为必要账户,删除无用户或过期账户。注:无关的帐号主要指测试帐户、共享帐号、长期不用帐号(半年以上不用)等
8、备注 手工检查Mysql 数据库系统安全配置基线第 7 页 共 15 页第 3 章 口令3.1 口令安全3.1.1 不使用默认密码和弱密码安全基线项目名称数据库管理系统 Mysql 账户口令安全基线要求项安全基线编号SBL-Mysql-03-01-01 安全基线项说明 检查帐户默认密码和弱密码, 口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号四类中至少两类。且5次以内不得设置相同的口令。密码应至少每90天进行更换。检测操作步骤1参考配置操作修改帐户弱密码如要修改密码,执行如下命令:mysql update user set password=password(test!p3) wh
9、ere user=root;mysql flush privileges;2补充操作说明基线符合性判定依据1.判定条件密码长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 2 类。2.检测操作检查本地密码:(注意,管理帐号 root 默认是空密码)mysql use mysql;mysql select Host,User,Password,Select_priv,Grant_priv from user;备注3.2 授权3.2.1 分配用户最小权限*安全基线项目名称数据库管理系统 Mysql 权限分配策略安全基线要求项Mysql 数据库系统安全配置基线第 8 页 共
10、15 页安全基线编号SBL-Mysql-03-02-01 安全基线项说明 在数据库权限配置能力内,根据用户的业务需要,配置其所需的最小权限。检测操作步骤1、 参考配置操作合理设置用户权限,撤销危险授权。 2、 补充操作说明基线符合性判定依据1 判定条件确保数据库没有不必要的或危险的授权2 检测操作查看数据库授权情况:mysql use mysql;mysql select * from user;mysqlselect * from db;mysqlselect * from host;mysqlselect * from tables_priv;mysqlselect * from colu
11、mns_priv;回收不必要的或危险的授权,可以执行 revoke 命令:mysql help revokeName: REVOKEDescription:Syntax:REVOKEpriv_type (column_list), priv_type (column_list) .ON object_type*| *.*| db_name.*| db_name.tbl_name| tbl_name| db_name.routine_nameFROM user , user .备注 手工检查Mysql 数据库系统安全配置基线第 9 页 共 15 页第 4 章 日志4.1 日志审计4.1.1 配置
12、日志功能*安全基线项目名称数据库管理系统 Mysql 配置日志功能安全基线要求项安全基线编号SBL-Mysql-04-01-01 安全基线项说明 数据库应配置日志功能,检测操作步骤mysql 有以下几种日志: 错误日志: -log-err 查询日志: -log (可选)慢查询日志: -log-slow-queries (可选)更新日志: -log-update 二进制日志: -log-bin 在 mysql 的安装目录下,打开 my.ini,在后面加上上面的参数,保存后重启mysql 服务就行了。 例如: #Enter a name for the binary log. Otherwise
13、a default name will be used. #log-bin= #Enter a name for the query log file. Otherwise a default name will be used. #log= #Enter a name for the error log file. Otherwise a default name will be used. log-error= #Enter a name for the update log file. Otherwise a default name will be used. #log-update=
14、 Mysql 数据库系统安全配置基线第 10 页 共 15 页上面只开启了错误日志,要开其他的日志就把前面的“#”去掉1、 补充操作说明show variables like log_%;查看所有的 log 命令 2、 show variables like log_bin;查看具体的 log 命令基线符合性判定依据1 判定条件启用审核记录对数据库的操作,便于日后检查。2 检测操作打开/etc/f 文件,查看是否包含如下设置:mysqldlog = filename备注 手工检查Mysql 数据库系统安全配置基线第 11 页 共 15 页第 5 章 其他5.1 其他配置5.1.1 安装了最新的
15、安全补丁*安全基线项目名称数据库管理系统 Mysql 补丁安全基线要求项安全基线编号SBL-Mysql-05-01-01 安全基线项说明 系统安装了最新的安全补丁 (注:在保证业务及网络安全的前提下,经过兼容性测试后)检测操作步骤1、 参考配置操作下载并安装最新 mysql 安全补丁,2、 补充操作说明安全警报和补丁下载网址是 http:/基线符合性判定依据1 判定条件确保数据库为企业版,并且安装了最新安全补丁。如果是不安全的社区版,建议替换为企业版(收费)2 检测操作使用如下命令查看当前补丁版本:mysql SELECT VERSION()备注 根据应用场景的不同,如部署场景需开启此功能,则
16、强制要求此项。5.1.2 如果不需要,应禁止远程访问*安全基线项目名称数据库管理系统 Mysql 远程访问安全基线要求项安全基线编号SBL-Mysql-05-01-02 安全基线项说明 禁止网络连接,防止猜解密码攻击,溢出攻击和嗅探攻击。 (仅限于应用和数据库在同一台主机的情况)Mysql 数据库系统安全配置基线第 12 页 共 15 页检测操作步骤1、 参考配置操作如果数据库不需远程访问,可以禁止远程 tcp/ip 连接, 通过在 mysqld 服务器中参数中添加 -skip-networking 启动参数来使 mysql 不监听任何 TCP/IP 连接,增加安全性。2、 补充操作说明基线符
17、合性判定依据1 判定条件远程无法连接2 检测操作#cat /etc/f#ps -ef|grep -i mysql或从客户机远程 telnet mysqlserver 3306备注 根据应用场景的不同,如部署场景需开启此功能,则强制要求此项。5.1.3 可信 IP 地址访问控制*安全基线项目名称数据库管理系统 Mysql 访问策略安全基线要求项安全基线编号SBL-Mysql-05-01-03 安全基线项说明 通过数据库所在操作系统或防火墙限制,只有信任的 IP 地址才能通过监听器访问数据库。检测操作步骤1、 参考配置操作执行命令:mysql GRANT ALL PRIVILEGES ON db.
18、*- - TO 用户名IP 子网/掩码;只有通过指定 IP 地址段的用户才可以登录2、 补充操作说明基线符合性判定依据1、判定条件在非信任的客户端以数据库账户登陆被提示拒绝。2、检测操作用户从其它子网登录,将被拒绝3、补充说明备注 手工检查Mysql 数据库系统安全配置基线第 13 页 共 15 页5.1.4 连接数设置安全基线项目名称数据库管理系统 Mysql 连接数安全基线要求项安全基线编号SBL-Mysql-05-01-04 安全基线项说明 根据机器性能和业务需求,设制最大最小连接数。检测操作步骤1、参考配置操作编辑 MySQL 配置文件:f 或者是 my.ini在mysqld配置段添加:max_connections = 1000保存,重启 MySQL 服务。基线符合性判定依据1、判定条件2、检测操作用命令:SHOW FULL PROCESSLIST 显示哪些线程正在运行mysql admin -uroot -p variables 输入 root 数据库帐号的密码后可看到 | max_connections | 1000 |3、补充说明备注Mysql 数据库系统安全配置基线第 14 页 共 15 页第 6 章 评审与修订