数据库抓包工具 go-sniffer

一、简介:
go-sniffer 可以抓包截取项目(MySQL、Redis、MongoDB)中的请求并解析成相应的语句,并格式化输出。类似于在之前的文章 MySQL抓包工具:MySQL Sniffer。

 

二、下载:

github 地址:https://github.com/40t/go-sniffer

三、安装:

1.安装依赖包
Centos:
yum -y install libpcap-devel

Ubuntu:
apt-get install libpcap-dev

另外还需要安装golang,并且版本需要在1.10.3以上:
wget https://golang.org/dl/go1.10.3.linux-amd64.tar.gz
yum install golang
设置好相关的环境变量。如果不想要go环境 ,则可以直接在其他地方安装好go-sniffer之后,复制到目标服务器上直接使用。 

2.下载安装
go get -v -u github.com/40t/go-sniffer
cp -rf $(go env GOPATH)/bin/go-sniffer /usr/local/bin   --安装到设置好的go环境变量的目录里
go-sniffer

四、参数说明: go-sniffer --help

go-sniffer [设备名] [插件名] [插件参数(可选)]

    [例子]
          go-sniffer en0 redis          抓取redis数据包
          go-sniffer en0 mysql -p 3306  抓取mysql数据包,端口3306

    go-sniffer --[命令]
               --help 帮助信息
               --env  环境变量
               --list 插件列表
               --ver  版本信息
               --dev  设备列表
    [例子]
          go-sniffer --list 查看可抓取的协议

=======================================================================
[设备名] : lo0 :   127.0.0.1
[设备名] : en0 : x:x:x:x:x5:x  192.168.1.3
[设备名] : utun2 :   1.1.11.1
=======================================================================

五、语法:

$ go-sniffer eth0 mysql 

$ go-sniffer eth0 redis 

$ go-sniffer eth0 http -p 8080

$ go-sniffer eth1 mongodb

六、使用场景

1.Redis :审计、发现热点key
go-sniffer eth0 redis -p 6379 >> out.log

2.对端口为6379的Redis服务进行抓包,并把信息写到文件中。该文件的日志格式:
tcp and port 6379 get abc
 get abc
 get abc
 get abc
 get opq
 get opq
 get opq
 get opq
 get xyz
 get xyz
 get xyz

可以看到,该文件的信息就是操作日志,最后可以通过使用awk来分析,也可以把该日志文件写入到数据库的表里进行统计分析:

# grep -avEi "^#|^$|^tcp|^ INFO|^ AUTH|^ REPLCONF ACK|^ CONFIG GET" out.txt |awk '{print $1,$2}'|sort| uniq -c | sort -nr |head -n 10
      5 get abc
      4 get opq
      3 get xyz

注意:go-sniffer也需要消耗一定的资源,大致的消耗可以看以下表格:

OPS       Redis CPU    sniffer CPU
1.2W   20%            30%
5.5W   80%            140%
7.5W   98%            180%

从上面看到,go-sniffer所需要的CPU资源是Redis的2倍左右。所以,在使用该工具之前,先判断本身服务器的资源是否够用。

3.mysql:审计
go-sniffer eth0 mysql -p 3306 >> out.log

4.mognodb:审计
go-sniffer eth0 mongodb -p 27017 >> out.log

 

posted @ 2022-03-14 20:24  __Yoon  阅读(1015)  评论(0编辑  收藏  举报