安全计算环境-(五)系统管理软件-7
MySQL
控制点
3.
安全审计
对服务器进行安全审计的目的是保持对操作系统和数据库系统的运行情况及用户行为的跟踪,以便事后进行追踪和分析。
a)
安全要求:应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计。
要求解读:如果数据库服务器不执行任何查询请求,则建议启用安全审计(在/etc/my.cnf文件的[Mysql]部分添加“log=/var/log/mylogfile”。
对于生产环境中任务繁重的MySQL数据库,启用审计功能会造成服务器运行成本升高,因此,建议使用第三方数据库审计产品来收集审计记录。应检查数据库系统,查看审计策略是否覆盖系统内重要的安全相关信息,例如用户登录系统的操作、自主访问控制的所有操作记录、重要的用户行为(如增加/删除用户,删除库表)等。
检查方法
1.执行下列语句,查看输出的日志内容是否覆盖所有用户,并核查审计记录类型是否满足要求。
mysql>show variables like '1og_%’
2.核查是否已使用第三方工具增强MySQL的日志审计功能。如果使用了第三方审计工具,则查看其审计内容是否包含事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。
期望结果
1.数据库本地启用了日志审计功能,审计内容覆盖每个用户,能够记录重要的用户行为和重要安全事件。
2.启用审计功能的策略为:配置了审计日志的存储位置或部署了第三方数据库审计产品;审计内容覆盖所有用户。
b)
安全要求:审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。
要求解读:数据库系统的审计策略应覆盖系统内重要的安全相关信息,例如用户登录系统、自主访问控制的所有操作记录、重要的用户行为(如增加/删除用户,删除库表)等。
检查方法
1.执行下列语句,查看输出的日志内容是否覆盖所有用户,并核查记录审计记录覆盖的内容。
mysql>show variables like '1og_%’
2.核查是否已使用第三方审计工具增强MySQL的日志审计功能。如果使用了第三方审计工具,则查看其审计内容是否包含事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。
期望结果
1.数据库本地启用了日志审计功能,审计内容覆盖每个用户,能够记录重要的用户行为和重要安全事件。
2.使用了第三方数据库审计产品,审计内容覆盖每个用户,能够记录重要的用户行为和重要安全事件。
c)
安全要求:应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等。
要求解读:应保证只有root和mysql用户可以访问hostname.err日志文件。该文件存放在MySQL历史目录中,包含口令、地址、表名、存储过程名、代码等敏感信息,易被用于信息收集,且有可能向攻击者提供可利用的数据库漏洞(攻击者可能从中获取数据库服务器的内部数据)。
对于MySQL日志,应确保只有root和mysql用户可以访问logfileXY日志文件(此文件存放在mysql的历史目录中)。因此,应检查MySQL数据库系统是否对日志进行了权限设置,确保非授权人员不能对日志进行操作。另外,应防止审计日志空间不够导致的无法记录日志的情况发生,并对审计日志进行定期备份。根据《中华人民共和国网络安全法》(以下简称《网络安全法》)的要求,日志应至少保存6个月。
检查方法
1.访谈管理员,了解审计记录的保护方式。核查审计记录是否定期备份,了解备份策略。
2.核查是否已严格限制用户访审计记录的权限。
期望结果
1.采用备份、转存等手段对审计记录进行保护,避免未预期的删除、修改或覆盖,数据库本地日志保存时间超过6个月。
2.采用第三方数据库审计产品,审计记录保存时间超过6个月。
d)
安全要求:应对审计进程进行保护,防止未经授权的中断。
要求解读:使用非审计员账户中断审计进程,验证审计进程是否受到了保护。MySQL数据库系统默认符合此项。如果使用第三方工具,则应检查未授权用户是否能中断审计进程。
检查方法
1.核查是否已严格限制管理员、审计员的权限。
2.尝试以用户身份重启实例、关闭审计功能,查看是否能成功(应为否)。
期望结果
1.非审计员账户无法中断审计进程,审计进程已受到保护。
2.非审计员账户无法对审计进程进行开启、关闭操作,对这类操作有日志记录。