环境搭建
在虚拟机搭建centos 7 搭建过程可进入阿里云的开发者社区:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区进行下载
我的centos7是在centos-7-isos-x86_64安装包下载_开源镜像站-阿里云下载的,根据不同需求选择不同版本的镜像文件
下载完后进入到centos 7 对mysql进行安装
安装可根据博客Centos7 安装MySQL详细步骤_centos7安装mysql_Chris馒头的博客-优快云博客进行安装
开始实测练习
Root登录Mysql
mysql -u root -p 输入密码登录
根据作业指导书开展实测
实测(仅仅写测的方面)
身份鉴别
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
1、描述数据库是否存在空口令用户;
select host,user,authentication_string,plugin,file_priv,grant_priv from mysql.user;
--图有点扭曲麻了
如图该命令可以查询所有用户的口令、插件、文件权限与授予权限
描述为:数据库用户password字段不为空,登录需要输入用户名和密码
2、描述数据库是否安装了口令复杂度校验模块,核查口令复杂度策略。
select * from information_schema.PLUGINS WHERE PLUGIN_NAME='validate password';
在该centos 7 中是没有口令复杂度校验模块的(我也是没想到的😂),但我们在实际测评中一般都有,举个例子:
Example:
validate_password.policy=MEDIUM;
vaildate_password.length=8;
vaildate_password.mixed_case_count=1;
vaildate_password.number_count=1;
vaildate_password.special_char_count=1。
描述为:启用了密码复杂度,设置validate_password.policy=MEDIUM,vaildate_password.length=8,vaildate_password.mixed_case_count=1,vaildate_password.number_count=1,vaildate_password.special_char_count=1;设置密码验证策略为中级 ,密码长度为8,密码小写和大写的最小字符为1,密码的最小字符数为1,密码的特殊字符的最小字符数为1;
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
1、描述MySQL数据库是否安装了登录失败处理模块
数据库安装了connection_control插件
Connection_control插件包含第二条的两个组件,第二条有那么第一条就有
数据库设置了符合安全性要求的connection_control_failed_connections_threshold及connection_control_min_connection_delay参数
show variables like '%connection_control%';
同样该centos 7没有该模块举个例子🤷♂️
Example:
connection_control_failed_connections_threshold:3,
connection_control_min_connection_delay:1000;
描述为:启用了登录失败处理功能,设置connection_control_failed_connections_threshold:3,connection_control_min_connection_delay:1000;设置失败尝试次数为3,响应延迟的最小时间为1000毫秒;(1000毫秒=1s 即为1/60分钟)
数据库设置了符合安全性要求的connect timeout.interactive_timeout、wait timeout参数
show global variables LIKE '%timeout';
描述为:数据库设置了符合安全性要求connect_timeout :10,interactive_timeout :600,
wait_timeout :600;设置连接超时时间为10s,服务器关闭交互式连接前等待活动的时间为600s,服务器关闭非交互式连接前等待活动的时间为600s。
访问控制
- 应对登录的用户分配账户和权限;
数据库管理员是否建立帐户权限表,是否限制了应用连接账户的访问权限
在数据库中依次输入SELECT*FROM mysql.user;查看各帐户的权限是否与权限表一致。
SELECT*FROM mysql.db;
SELECT*FROM mysql.tables_priv;
SELECT*FROM mysql.columns_priv;
描述为:1.数据库创建了mysql.session、mysql.sys、nipissc_read等账户,为不同账户分配了相应的权限;
2.数据库已禁用或限制默认账户root的权限。
b)应重命名或删除默认账户,修改默认账户的默认口令;
由于上图才查询了账户,所以不用再次查询
描述为:1.已重命名或删除默认帐户root;2.MySQL数据库默认符合。
d)应授予管理用户所需的最小权限,实现管理用户的权限分离;
因为上图为空
描述为:1.数据库创建了root、nipissc_read、nipissc_kf、nipisback等账户,root具备file_priv和grant_priv权限,其他用户不具备file_priv和grant_priv权限,实现了权限分离。
安全审计
a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要全事件进行审计;
在数据库中输入SHOW variables LIKE'general log%',核查数据库日志模块的状态。b)询问数据库管理员,是否安装了MariaDB Audit Plugin插件、MySQL Enterprise Audit插件、libaudit_plugin插件等第三方审计插件
🙄受不了这centos 7啥也没设置,什么数据测不了,还是举例子吧
描述为1.'general_log'='ON'数据库开启了日志审计功能,能够对错误日志进行审计;2. 审计对象为所有用户,使用了第三方审计插件并合理配置了审计策路。
- 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
描述为:1. 审计记录包括日期时间、详细内容等,比如:2021-05-25T06:28:12.143564Z 0 [Warning] InnoDB: New log files created, LSN=45790。
数据完整性
a)应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;
本地连接只用看连接方式来判断是否符合
例如描述为:1.该数据库仅使用本地服务器登录,服务器采用SSH协议进行远程登录,可以保证鉴别数据、重要业务数据、重要审计数据、重要配置数据在传输过程的完整性。
如果是neivcat连接数据库的话,则需要
在数据库中输入show variables like‘%ssl%;,核查是否设置了有效的ssl参数。
并输入SHOW variables LIKE'require_secure_transport',核查是否开启了强制SSL/TLS通信。
描述为:数据库设置了有效的ssl参数, have_openssl.ssl_ca、ssl_cert、ssl_key等参数,并设置require_secure_transport='OFF",未开启强制SSL/TLS通信。