暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

等保2.0数据库测评之MySQL数据库测评(上)

天盾安全 2022-05-31
6939

MySQL数据库部署在Windows10操作系统中,可以直接通过windows命令提示框登录数据库进行管理,也采用navicat、mysqldump等数据库管理工具进行管理,以三级等保2.0安全计算环境的MySQL数据库测评的身份鉴别、访问控制为例进行测评作业,如有不妥处还望后台留言指正。

身份鉴别

a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;

1)执行命令“mysql"验证数据库是否需要口令登录:


2)执行命令:“mysql -u root -p”登录数据库,通过不输入口令的方式验证管理账户是否存在空口令(也可执行命令:“select user,authentication_string from user;”验证是否存在空口令用户):


3)执行命令:“select user, host FROM mysql.user;” 查看是否存在相同用户名:


5)执行命令:“show variables like 'validate%';”查看口令策略是否合理,默认未配置,为空:

其中:

validate_password_policy:密码安全策略,默认MEDIUM策略

validate_password_dictionary_file:密码策略文件,策略为STRONG才需要
validate_password_length:密码最少长度
validate_password_mixed_case_count:大小写字符长度,至少1个
validate_password_number_count :数字至少1个  
validate_password_special_char_count:特殊字符至少1个

b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;

登录失败功能也需要mysql安装connection_control.dll或者connection_control.so插件才能实现(Windows:connection_control.dll,Linux:connection_control.so

第一步在my.ini配置文件中添加下列字段并保存。

第二步在命令对话框中分别执行命令

“install plugin  CONNECTION_CONTROL soname 'connection_control.dll';

“install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.dll';”

(windows后缀为.dll,Linux后缀为.so,注意替换)。

1)询问管理员是否采取其他手段配置数据库登录失败处理功能。

2)执行命令:”show variables like '%connection_control%';“或核查my.cnf置文件或者my.ini配置文件(Windows:my.ini,Linux:my.cnf)。


3) 执行命令:“show variables like '%timeout%';”默认Wait_ timeout: 一个连接connection空闲超过8个小时(默认值28800秒),默认不符合,时间太长,需要加固。

c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;

1)是否采用加密等安全方式对系统进行远程管理是否用户都是localhost,全为localhost则为本地管理,可判定为不适用。

2)若存在远程管理,执行命令:“show variables like '%have_ssl%';”或者“show variables like '%have_openssl%';”查看是否启用ssl协议,并验证协议是否生效:


3)查看是否支持ssl的连接特性,若为disabled,说明此功能没有激活,或执行命令:“\s;”查看是否启用SSL:

d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。

对于数据库目前可能都判不符合。


访问控制

a) 应对登录的用户分配账户和权限;

1)执行命令:“select user,host FROM mysql.user;”查看用户,并结果结合访谈管理员是否存在网络管理员,安全管理员,系统管理员、审计管理员等多个账户,为各个管理用户分配对应的权限:


2)执行命令:“show grants for 'XXXX'@' localhost';”查看用户的权限:


2)执行命令:“SELECT user,authentication_string FROm mysql.user;”查看匿名账户:

b) 应重命名或删除默认账户,修改默认账户的默认口令

1)执行命令:“select user,host FROM mysql.user;”查看root是否被重命名或被删除,若未重命名但修改了默认口令,口令复杂度设置比较高,不存在空口令、弱口令的现象判为符合:


2执行命令:“CREATE USER “test1”@”localhost” IDENTIFIED BY ’123456‘;若不存在空口令、弱口令的现象判为符合:

c) 应及时删除或停用多余的、过期的账户,避免共享账户的存在 

1)执行命令:“select username,account_status from dba_users;”查看哪些账户属于可用账户,并结合访谈管理员是否存在多余的、过期的账户,避免共享账户。

2)检查网络管理员,安全管理员、系统管理员不同用户是否采用不同账户登录数据库。

d) 应授予管理用户所需的最小权限,实现管理用户的权限分离

1)是否对用户进行角色划分且只授予账号必须的权限,执行命令:“select * from mysql.user;”或者在数据库管理工具中检查账户权限分配情况,如禁止将fil、process、 super权限授予管理员以外的账户:


2)执行命令:“select * from mysql.user where user='用户名'”查看用户权限表,并验证用户是否具有自身角色外的其他用户的权限:

e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则

1.访谈和查看管理员是否制定了访问控制策略

2.执行以下几条命令,查看相关权限。

1)执行命令:“select * from mysql.user ;”查看用户权限列:


2)执行命令:“select * from mysql.db;”查看数据库权限列:


3)执行命令:“select * from mysql.tables_priv;”查看用户表权限列:


4)执行命令:“select * from mysql.columns_priv;”查看列权限列管理员:

权限上述列表中的权限分配是否与管理员制定的访问控制策略及规则一致。

3)检查登录不同的用户,验证是否存在越权访问的情形。

(个人认为此测评点在a)、c)d)均符合的情况下判定为符合,实际情况这条测评项大多数默认符合)

f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表

1)执行命令:“select * from mysql.user;”查看用户权限列,


2)执行命令:“select * from mysql.db;查看数据库权限列:


3)访谈管理员并核查访问控制粒度主体是否为用户级,客体是否为数据库表级。

(此测评点多数测评机构判定为符合)

g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问

MySQL不提供该项功能,访谈管理员,是否采用其他技术手段。

(此测评项大部分都判定为不符合)



等保2.0数据库测评之MySQL数据库测评的安全审计、恶意代码防范、数据完整性、数据保密性、数据备份恢复、剩余信息保护、个人信息保护正在更新中........


参考资料:

GB∕T 28448-2019 《信息安全技术  网络安全等级保护测评要求》

文章转载自天盾安全,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论