我最推崇的數據庫安全產品就是基於流量的數據庫審計,由於它不須要更改網絡結構,而且也是最關鍵的是,不影響數據庫服務器性能,不用苦口婆心的勸數據庫管理員安裝監控軟件。它能夠比較好的發現經過Web漏洞的拖庫行爲,以及基於數據庫通信協議的數據庫管理過程當中的違規行爲。本質上基於流量的數據庫審計就是一種特殊的流量審計,或者說針對數據庫的IDS,如圖10-11所示,經過從網絡全流量中解析數據庫協議,進一步還原成數據庫常見的增刪查改操做,而後在根據預約義的規則進行審計。mysql
圖10-11基於流量的數據庫審計原理圖git
這裏介紹一款國內安全公司開源的可用於基於流量的數據庫審計軟件,MySQL Sniffer。MySQLSniffer是一個基於MySQL協議的抓包工具,實時抓取請求,並格式化輸出。輸出內容包括訪問時間、訪問用戶、來源IP、訪問 Database、命令耗時、返回數據行數、執行語句等。github
MySQL Sniffer對應的GitHub地址爲:sql
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 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系統