开源数据库流量审计MySQL Sniffer
我最推崇的数据库安全产品就是基于流量的数据库审计,因为它不需要更改网络结构,并且也是最关键的是,不影响数据库服务器性能,不用苦口婆心的劝数据库管理员安装监控软件。它可以比较好的发现通过Web漏洞的拖库行为,以及基于数据库通讯协议的数据库管理过程中的违规行为。本质上基于流量的数据库审计就是一种特殊的流量审计,或者说针对数据库的IDS,如图10-11所示,通过从网络全流量中解析数据库协议,进一步还原成数据库常见的增删查改操作,然后在根据预定义的规则进行审计。
图10-11基于流量的数据库审计原理图
这里介绍一款国内安全公司开源的可用于基于流量的数据库审计软件,MySQL Sniffer。MySQLSniffer是一个基于MySQL协议的抓包工具,实时抓取请求,并格式化输出。输出内容包括访问时间、访问用户、来源IP、访问 Database、命令耗时、返回数据行数、执行语句等。
下载与安装
MySQL Sniffer对应的GitHub地址为:
https://github.com/Qihoo360/mysql-sniffer
安装方法如下所示。
yum install glib2-devel libpcap-devel libnet-devel
git clone https://github.com/Qihoo360/mysql-sniffer
cd mysql-sniffer
mkdir proj
cd proj
cmake ../
cd ..
make
审计MySQL流量
MySQL Sniffer支持的常见参数如下所示。
Usage ./mysql-sniffer [-d] -i eth0 -p 3306,3307,3308 -l/var/log/mysql-sniffer/ -e stderr
由于我们Web和MySQL部署在一台机器上,所以eth0上是没有MySQL流量的,我们需要监听lo接口。
./mysql-sniffer -i lo -p 3306
使用pig账户登录MySQL。
./mysql -h127.0.0.1 -upig –p
显示审计信息如下所示。
2017-07-26 17:06:36 pig 127.0.0.1 NULL 0ms 1 select @@version_commentlimit 1
查看插件安装情况。
mysql> show plugins;
显示审计信息如下所示,其中2ms表示查询消耗时间,43表示查询返回的数据行数。
2017-07-26 17:10:28 pig 127.0.0.1 NULL 2ms 43 show plugins
查询MySQL用户详细信息。
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from user;
显示审计信息如下所示。
2017-07-26 17:12:32 pig 127.0.0.1 mysql 0ms 0 use mysql
2017-07-26 17:12:32 pig 127.0.0.1 mysql 0ms 5 show databases
2017-07-26 17:12:32 pig 127.0.0.1 mysql 0ms 28 show tables
2017-07-26 17:12:44 pig 127.0.0.1 mysql 1ms 8 select * from user
MySQL Sniffer也支持保存日志,如图10-12所示可以把日志发送给SOC系统进一步分析。
图10-12MySQL Sniffer把审计日志发送给SOC系统