一、前言
只要是信息系统,就需要运行所必需的系统环境,而Windows和Linux系统是现在使用最为广泛的主机操作系统,前边我们已经讲了等保测评2.0主机系统方面的测评项要求,大家有兴趣的可以翻阅我之前的文章。
而信息系统只要运行,就会产生数据,产生数据就需要存储,数据库就是另一个所有信息系统所必需的,数据是信息系统最重要的东西,所以数据库的安全就是保障数据安全的重要的屏障,现在市面上有许多数据库产品,其中另一个使用比较广泛的就是MySQL数据库,今天我们就来讲一讲等保测评2.0中对MySQL数据库有哪些安全要求。
二、测评项
a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
d)应对审计进程进行保护,防止未经授权的中断。
三、测评项a
a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
对于比较成熟和常用的软件,很少不自带审计功能,MySQL数据库也不例外,它的审计功能——general_log是安装MySQL数据库时就自带的,然而默认状态下则是关闭的,因为它会记录下所有MySQL数据库所执行的SQL语句,所以会占用非常大的服务器和数据库资源。
我们可以通过语句:
show global variables like '%general%'
来查看MySQL数据库是否开启了general_log审计功能,如下图所示:
general_log审计功能
果然MySQL数据库是默认关闭general_log审计功能的,下面一行则表示审计日志general_log_file所存放的位置。
要想开启general_log审计功能,我们可以使用语句:
set global general_log = on;
执行后我们再使用前边的查看语句查看general_log审计功能的状态,已经变成了“ON”,如下图所示:
开启general_log审计功能
但是这只是临时性的开启,当数据库重新启动时general_log审计功能又会变回关闭状态,要想永久开启就必须修改配置文件“my.cnf”中的“general_log”参数为“ON”,就可以永久开启了。
除此之外,我们也可以通过插件来实现审计功能。
MariaDB的Audit Plugin插件
我们可以使用语句:
SHOW GLOBAL VARIABLES LIKE 'server_audit%';
来查看该插件是否启用,当然只有在一些MySQL数据库版本之上才可以使用此插件,这里判断Audit Plugin插件是否开启,只需查看server_audit_logging参数是否为“ON”。
Audit Plugin插件配置信息
四、测评项b
b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
不管是自带的general_log审计功能还是插件审计功能,审计记录所包含的内容都符合该测评项所要求的内容,我们以general_log审计功能所记录的日志为例,如下所示:
| 2020-11-16 10:00:12 | root[root] @ localhost [] | 2 | 1132333306 | Query | select * from user
其中包括日期和时间、用户、事件类型为“query”查询,具体语句为“select * from user”等。
五、测评项c
c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
我们可以使用语句:
show variables like 'log_output';
来查看审计记录的保存方式,“file”表示文件存储,“table”表示数据表存储,采用什么存储方式就需要查看对应文件的权限,只允许数据库管理员之类的人员才可以访问、修改等。
审计记录存储方式
备份的话,就直接查看备份文件就可以了,再看看备份策略,符合定期备份的要求就可以了。
六、测评项d
d)应对审计进程进行保护,防止未经授权的中断。
这个就比较简单了,有两个地方可以对审计进程进行配置。一个是my.cnf,这里就需要操作系统上对配置文件的权限进行限制,只允许数据库管理有权限进行修改。(同时也要限制MySQL中的file_priv权限。)另外一个就是那些变量了,似乎是需要super权限才可以设置全局变量,那么这里的话就需要查看super权限给了哪些账户。
以上就是一项一项教你测等保2.0——MySQL安全审计的所有内容,希望对大家有所帮助,欢迎关注@科技兴了解更多科技尤其是网络安全方面的资讯与知识。