一、身份鉴别
a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
mysql -uroot -p 查看登录是否需要输入口令鉴别用户身份
select user,host from mysql.user 查看是否存在相同账户,身份标识是否唯一
select user,host,authentication_string from mysql.user; 查看是否存在空口令
show variables like '%password%';
b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
show variables like '%connection_control%'
show variables like "%timeout%"; wait_timeout字段
c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;
show variables like "%_ssl%"
d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。
二、访问控制
a) 应对登录的用户分配账户和权限;
select user,host FROM mysql.user
show grants for 'XXXX'@' localhost'
b) 应重命名或删除默认账户,修改默认账户的默认口令
select user,host FROM mysql.user
c) 应及时删除或停用多余的、过期的账户,避免共享账户的存在
select user,account_locked from mysql.user; 查看多余账户是否别锁定
d) 应授予管理用户所需的最小权限,实现管理用户的权限分离
select * from mysql.user
e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则
select * from mysql.user -检查用户权限列
select * from mysql.db --检查数据库权限列
select * from mysql.tables_priv 一检查用户表权限列
select * from mysql.columns_priv-检查列权限列管理员
f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表
select * from mysql.user -检查用户权限列
select * from mysql.db -检查数据库权限列
g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问
MySQL不提供该项功能。
三、安全审计
a) 应启用安全审计功能,审计覆盖到每个用 户,对重要的用户行为和重要安全事件进行审计
show variables like '%general_log%';
b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息
select * from mysql.general_log;
c) 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等
d) 应对审计进程进行保护,防止未经授权的中断
四、入侵防范
c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制
show grants;
e) 应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞
show variables where variable_name like "version"