-
2019-06-27 10:00:07
Mysql日志审计工具
参考网址:http://www.omgdba.com/mysql-audit-plugin-now-available-in-percona-server-5-5-and-5-6.html
个人感觉审计没啥用处,偶然间看到这个功能总结了解下。
####percona的审计插件的动态链接库下载地址:二进制安装目录下有库文件(audit_log.so) 自己找一下。下方提到的其它动态链接库获取方式一样,直接下载数据库安装包查找即可。
https://www.percona.com/downloads/Percona-Server-5.6/LATEST/binary/ ##二进制包下载 。
https://www.percona.com/downloads/Percona-Server-5.6/LATEST/source/ ##源码包下载。可能需要编译后获取到动态链接库。
二进制包下载解释:
- ssl100 - for all Debian/Ubuntu versions except Debian Squeeze (libssl.so.1.0.0 =>/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f2e389a5000));
- ssl098 - only for Debian Squeeze (libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8(0x00007f9b30db6000));
- ssl101 - for CentOS 6 and CentOS 7 (libssl.so.10 => /usr/lib64/libssl.so.10(0x00007facbe8c4000));
- ssl098e - to be used only for CentOS 5 (libssl.so.6 => /lib64/libssl.so.6(0x00002aed5b64d000)).
温馨提示:percona的这个动态链接库,可以直接复制到MySQL社区版中。不幸的是社区版的版本只支持(5.5.37和5.6.17版本)。可以换用percona分之版本的数据库、或者用下方的其他审核工具。
昨天(2014-05-06)发布的两个新版本 Percona Server 5.5.37-35.0 和 Percona Server 5.6.17-65.0-56都包含了MySQL Audit Plugin(MySQL审计插件)的开源版本。以上产品发布之前,该插件只可用于MySQL企业版中。
注1:要说明一点,该实现是MySQL企业版审计日志插件的替代产品。Percona以GPL授权方式重新实现了审计插件,这在Oracle是闭源的。
注2:提一下:另外两个产品McAfee MySQL Audit Plugin 和 MariaDB Audit Plugin for MySQL也实现了开源审计插件。但是他们都用各自的不同于Oracle实现的审计日志方式。Percona的实现是第一个MySQL Enterprise Audit Plugin的替代插件。
在许多应用中,记录所有的MySQL使用记录是非常重要的。比如:
- 必须的:操作敏感数据的应用(信用卡,医疗记录,等等);遵从某些安全标准(如:HIPAA)
- 非常有用的:多用户应用或MySQL做服务;MySQL管理员可从安全性和可用性来审计MySQL使用。
- 非常有用的:研究和排错;拥有一个完整的查询日志是很有用的,它对MySQL排错和即时优化有很大帮助。
起初,最简单的选择是启用通用日志(enable general log)(其他选择包括使用二进制日志记录除select以外的查询,或者在MySQL连接器或应用中启用追踪)。然而,通用日志记录所有的查询会极大地降低MySQL应用的性能:Aleksandr Kuzminsky在2009年发布了一个测试基准向我们展示通用日志和慢查询日志的总开销(the overhead of MySQL general and slow log)。MySQL审计插件的主要好处在于可以异步记录所有查询(可在配置中更改)。无决定在Percona Server中使用新的审计插件并在应用中对比测试使用新插件和使用通用日志对性能的影响。
如何使用MySQL审计插件
首先,我们要启用MySQL审计插件,详见https://dev.mysql.com/doc/refman/5.5/en/audit-log-plugin-installation.html
123456789mysql > select version();+-------------+| version() |+-------------+| 5.5.37 -35.0 |+-------------+1 row in set (0.00 sec)mysql > INSTALL PLUGIN audit_log SONAME 'audit_log.so';Query OK, 0 rows affected (0.00 sec)现在我们可以查看所有MySQL审计插件的选项:
1234567891011121314mysql > show global variables like '%audit%';+--------------------------+--------------+| Variable_name | Value |+--------------------------+--------------+| audit_log_buffer_size | 1048576 || audit_log_file | audit. log || audit_log_flush | OFF || audit_log_format | OLD || audit_log_policy | ALL || audit_log_rotate_on_size | 0 || audit_log_rotations | 0 || audit_log_strategy | ASYNCHRONOUS |+--------------------------+--------------+8 rows in set (0.00 sec)有很多参数,具体可参见https://dev.mysql.com/doc/refman/5.5/en/audit-log-plugin-options-variables.html 对MySQL性能最重要的参数是:
- audit_log_buffer_size:缓存查询的缓冲区(用于异步操作)。
- audit_log_strategy:审计日志策略,详见下表:
值 含义 ASYNCHRONOUS 异步日志,等待输出缓冲区空间 PERFORMANCE 异步日志,如果在输出缓冲区空间不足则降低请求 SEMISYBCHRONOUS 同步日志,使用操作系统缓存 SYNCHRONOUS 同步日志,每个请求过后都会调用sync()方法 在我看来,最有用的选项是ASYNCHRONOUS,在输出缓冲区不够大的情况下给我们提供性能和不丢失事务之间的平衡。
- audit_log_policy:我们可以记录所有查询或者只记录登陆日志(在我们只审计MySQL连接时非常有用)。
在MySQL社区版(MySQL Community server)中使用开源审计插件
你也可以在MySQL社区版中使用Percona开源版审计插件(5.5.37和5.6.17版本)。仅需要下载Percona Server的Linux tarball并将audit_log.so拷贝到你的MySQL插件目录中。
查找插件:
1234567mysql > show global variables like '%plugin%';+---------------+------------------------------+| Variable_name | Value |+---------------+------------------------------+| plugin_dir | /usr / local /mysql /lib /plugin/ |+---------------+------------------------------+1 row in set (0.00 sec)拷贝文件:
1# cp audit_log.so /usr/local/mysql/lib/plugin/安装插件:
123456Server version: 5.5.37 MySQL Community Server (GPL)mysql > INSTALL PLUGIN audit_log SONAME 'audit_log.so';Query OK, 0 rows affected (0.00 sec)Server version: 5.6.17 MySQL Community Server (GPL)mysql > INSTALL PLUGIN audit_log SONAME 'audit_log.so';Query OK, 0 rows affected (0.00 sec)使用MySQL审计插件
插件启用后,它会使用XML格式将日志录入audit.log文件中,例如:
12345678910111213141516171819202122232425262728293031323334<AUDIT_RECORD"NAME" = "Audit""RECORD" = "1_2014-04-30T00:04:42""TIMESTAMP" = "2014-04-30T00:04:42 UTC""MYSQL_VERSION" = "5.5.37-35.0""STARTUP_OPTIONS" = "--basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/lib/mysql/localhost.localdomain.pid --socket=/var/lib/mysql/mysql.sock""OS_VERSION" = "x86_64-Linux" ,/><AUDIT_RECORD"NAME" = "Query""RECORD" = "2_2014-04-30T00:04:42""TIMESTAMP" = "2014-04-30T00:04:42 UTC""COMMAND_CLASS" = "install_plugin""CONNECTION_ID" = "1""STATUS" = "0""SQLTEXT" = "INSTALL PLUGIN audit_log SONAME 'audit_log.so'""USER" = "root[root] @ localhost []""HOST" = "localhost""OS_USER" = """IP" = ""/><AUDIT_RECORD"NAME" = "Query""RECORD" = "3_2014-04-30T00:04:42""TIMESTAMP" = "2014-04-30T00:05:07 UTC""COMMAND_CLASS" = "show_variables""CONNECTION_ID" = "1""STATUS" = "0""SQLTEXT" = "show global variables like '%audit%'""USER" = "root[root] @ localhost []""HOST" = "localhost""OS_USER" = """IP" = ""/>……
12345678910111213141516171819202122232425262728293031323334353637383940<AUDIT_RECORD"NAME" = "Query""RECORD" = "10_2014-04-30T00:04:42""TIMESTAMP" = "2014-04-30T12:33:20 UTC""COMMAND_CLASS" = "grant""CONNECTION_ID" = "2""STATUS" = "0""SQLTEXT" = "grant all on sbtest.* to sb@localhost identified by 'sb'""USER" = "root[root] @ localhost []""HOST" = "localhost""OS_USER" = """IP" = ""/><AUDIT_RECORD"NAME" = "Connect""RECORD" = "11_2014-04-30T00:04:42""TIMESTAMP" = "2014-04-30T12:34:53 UTC""CONNECTION_ID" = "3""STATUS" = "0""USER" = "sb""PRIV_USER" = "sb""OS_LOGIN" = """PROXY_USER" = """HOST" = "localhost""IP" = """DB" = "sbtest"/><AUDIT_RECORD"NAME" = "Query""RECORD" = "1292_2014-04-30T00:04:42""TIMESTAMP" = "2014-04-30T12:45:07 UTC""COMMAND_CLASS" = "select""CONNECTION_ID" = "32""STATUS" = "1146""SQLTEXT" = "SELECT pad FROM sbtest8 WHERE id=5036031""USER" = "sb[sb] @ localhost []""HOST" = "localhost""OS_USER" = """IP" = ""/>重要提示:
- 所有的查询都会记录到这里,”GRANT“操作中的密码也会使用明文记录(如上所见)。保护该文件所在的盘就显得尤为重要。
注:明文密码问题只适用于MySQL 5.5版本。在MySQL 5.6中,语句中的密码在写入通用日志的时候都会被服务器重写,不会直接保存原始密码。
在MySQL 5.6中我们可以看到:
12345678910111213<AUDIT_RECORD"NAME" = "Query""RECORD" = "14_2014-05-05T21:56:20""TIMESTAMP" = "2014-05-07T13:51:04 UTC""COMMAND_CLASS" = "grant""CONNECTION_ID" = "2""STATUS" = "0""SQLTEXT" = "GRANT ALL PRIVILEGES ON `test`.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '*1E752E353CAA631945738535152AE894E47F5A48'""USER" = "root[root] @ localhost []""HOST" = "localhost""OS_USER" = """IP" = ""/>- 日志文件会变得非常大:
12ls - lah / var / lib / mysql / audit .log- rw - rw -- -- 1 mysql mysql 7.1G May 4 07 : 30 / var / lib / mysql / audit .log搜索审计日志记录
MySQL 提供工具mysqlauditgrep进行搜索/查询日志文件。不幸的是,我不能让它在Percona Server生成的日志中正常工作(尝试的版本是1.3 和1.4)。根据这条Bug,它不能转换”新”的审计格式。在我看来,使用默认格式mysqlauditgrep会返回转换错误,而设置“audit_log_format=NEW”不会返回结果。mysqlauditgrep是一个强大的很好用的工具,但是现在我们的搜索被限定在传统Linux Grep(不是一个简单的XML文档)或者定制的转换/搜索XML。
审计日志插件和通用日志的性能开销
最后,我想测量审计日志插件和通用日志的开销。我用sysbench做一个 OLTP测试基准通过4中方式来测试性能开销:
- 审计插件关闭(测量基线)
- 审计日志打开记录所有查询
- 审计日志打开只记录登陆日志
- 通用日志打开,审计日志关闭
以下是测试结果:
测试方式 性能开销 Plugin + audit_log_policy = ALL ~15% Plugin + audit_log_policy = LOGINS ~0% sysbench只连接一次,所哟可能比这个要高事实上。 General_log ~62% 在这里我们可以看到,审计日志需要占用性能开销,然而,记录所有查询时这样的开销远比开启通用日志要小很多。这些都是快速的基准测试结果。如果需要更精确的测量,当然你可以做一个更好的测试。
令人心动的特性
审计插件可以只记录一些指定的行为。比如,只记录指定用户或只记录对指定表的访问日志,等等。可以给出更多的控制和消耗更少的开销(=更好的性能)。
总结
MySQL 审计插件是一个很好的特性,它是对MySQL性能和安全审计的非常有用的工具。它的性能开销可能影响到一些高负载系统,但是,这样做应该是合理的并且它比使用通用日志记录所有查询要好得多。
更多相关内容 -
Seay源代码审计工具
2021-11-18 16:18:49Seay源代码审计工具是一款绿色免费的Seay源代码审计软件。软件功能强大,提供了一键自动审计,函数查询,代码高亮编辑器,自定义审计规则,代码调试等强大功能。Seay源代码审计系统操作简单,让人人都是代码审计师。 -
Audit-审计工具箱.exe
2020-04-22 22:45:33create a shake-up in mobile phone operating systems with the launch of its Android platform. Designed to be completely open and free for developers, the API could change the way mo -
Seay——代码审计工具
2020-12-26 10:50:01一款优秀的代码审计工具,省去了大量的人工,值得拥有 -
Python-Pylava是一个用于Python和JavaScript的代码审计工具
2019-08-11 08:42:07Pylava是一个用于Python和JavaScript的代码审计工具 -
seay代码审计工具
2020-10-06 03:31:26seay代码审计工具 亲测可用 seay代码审计工具 亲测可用 寻找漏洞 亲测可用 -
Seay PHP代码审计工具 v2.1.zip
2019-07-13 17:45:41Seay PHP代码审计工具支持单个关键字扫描、批量函数扫描、批量正则匹配,其中正则表达式扫描精确度最高,效率最高。 Seay PHP代码审计工具功能: 源码浏览:载入程序源码后,可以在最左边的程序文件列表里面点击... -
Nmap网络安全审计工具 v7.4.0
2020-12-02 23:28:24nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪服务运行在那些连接端,并且推断哪个操作系统计算机运行(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络... -
MySQL审计工具AuditPlugin安装使用
2018-07-12 14:56:42MySQL审计工具AuditPlugin安装使用手册,方便使用MYSQL的DBA部署审计 -
Nmap网络安全审计工具 v7.8.0
2020-11-06 04:01:16nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪服务运行在那些连接端,并且推断哪个操作系统计算机运行(这是亦称 fingerprinting)。它是网络管理员必用 -
Seay代码审计工具
2019-04-11 09:59:39Seay代码审计工具,代码审计可以使用。 -
代码审计工具汇总
2018-10-06 10:38:05配套 【随 亦】的博客《代码审计--8--环境搭建+工具使用》一文的资料。注意文档哦 -
天智PHP代码审计工具.zip
2019-07-13 06:03:03载入源码:三个地方可以载入源码,分别在主...漏洞仓库:在这可以对审计文档进行管理。包括新建、打开、修改、删除操作。 扫描配置:可以对综合扫描要用到的函数、正则表达式进行管理。包括查看、新增、修改、删除。 -
Seay PHP代码审计工具 V2.0.3 C#
2021-03-17 15:20:04摘要:C#源码,字符处理,代码审计 C#编写的PHP代码审计工具的源代码,本人目前就读重庆某软件学院软件测试专业,将于2013年1月底毕业,为了扎实基础,于是有时间就会找一些源码研究,有时候想走走捷径,提高下效率,... -
Seay PHP代码审计工具
2012-10-14 11:50:16软件名: Seay PHP代码审计工具 软件版本: Version 2.0 作者: Seay 博客: http://www.cnseay.com/ 文档编写时间: 2012年10月13日 那为什么写PHP的呢?从目前主流的四大动态网页编程(ASP/ASPX/... -
Python-Otseca开源安全审计工具用于搜索和转储系统配置
2019-08-10 07:24:29开源安全审计工具,用于搜索和转储系统配置,它允许您以HTML或RAW-HTML格式生成报告。 -
Cobra-White 白盒源代码审计工具-白帽子版
2019-10-20 16:09:18Cobra-W -> Cobra-White 白盒源代码审计工具-白帽子版 -
项目管理工具箱K-项目审计工具箱.xlsx
2021-09-02 13:59:32项目管理必备工具 -
PHP代码审计工具V2.0.3源码20121015
2013-02-22 14:36:33PHP代码审计工具V2.0.3源码 源码描述: 该版本目前支持单个关键字扫描、批量函数扫描、批量正则匹配,其中正则表达式扫描精确度最高,效率最高。 其他功能: 源码浏览:载入程序源码后,可以在最左边的程序文件... -
execl审计工具.zip
2021-03-26 14:49:29execl审计工具.zip(可以安装在office execl使用) -
Java安全代码审计介绍及扫描工具Fortify详解
2021-06-12 16:20:49本节课程是为后续Java代码审计课程的铺垫课程,本节课程中详细介绍了什么是Java安全代码审计、Java代码审计需要的前置知识等介绍性的内容,同时也给大家介绍了一款专门用于Java代码审计的扫描工具Fortify,该工具在... -
aequitas:偏差和公平审计工具包
2021-05-04 18:33:07偏差和公平审计工具包 Aequitas是一个开源偏见审核工具包,供数据科学家,机器学习研究人员和政策制定者审核机器学习模型中的歧视和偏见,并围绕开发和部署预测工具做出明智而公平的决策。 文献资料 您可以在找到... -
AudTool审计工具.exe
2019-05-21 14:51:23审计专版(AudTool),是一款基于Excel的工具箱软件,主要提供审计行业常用的功能。常用功能包括:粘贴未锁定、提取文件、提取工作表、提取单元格、生成附注、单元格透视、添加Round等近百个功能 -
大鱼小池塘:主管审计师如何使用基于技术的审计工具来影响非全球网络公司的审计-研究论文
2021-05-20 19:31:23我调查主管审计师如何在非全球网络公司(NGNF)(即“全球七大”以外的公司)的较小池塘中像大鱼一样涌现,以使用基于技术的审计工具(TBAT)从事机构工作影响审计质量。 通过制度理论的视角,使用半结构化访谈,我... -
审计工具往来分析.xls
2021-12-15 17:41:32审计工具往来分析 -
审计小工具
2018-12-17 11:30:26审计小工具,可以出现对方科目,便于审计人员看账。便于看财务账和对方呢科目分析 -
PHP代码审计工具2012终结版
2015-04-28 05:25:58PHP代码审计工具2012终结版 -
Seay PHP代码审计工具 V2.0.3源码
2012-10-14 17:26:03为了扎实基础,于是有时间就会找一些源码研究,有时候想走走捷径,提高下效率,于是开始找一些代码审计的工具,但是目前国内貌似没有发现专业的这类工具,于是就萌发了编写这个PHP代码审计工具的想法,并付足于行动... -
代码审计工具V2.0.3源码20121015
2013-01-16 15:08:07代码审计工具V2.0.3源码 源码描述: 该版本目前支持单个关键字扫描、批量函数扫描、批量正则匹配,其中正则表达式扫描精确度最高,效率最高。 其他功能: 源码浏览:载入程序源码后,可以在最左边的程序文件列表...