MySQL、Redis、MongoDB 网络抓包工具
逆锋起笔
共 2576字,需浏览 6分钟
·
2021-12-24 20:24
以下内容来自公众号逆锋起笔,关注每日干货及时送达
来源:https://www.cnblogs.com/zhoujinyi/p/15343188.html
简介
go-sniffer
可以抓包截取项目(MySQL、Redis、MongoDB)中的请求并解析成相应的语句,并格式化输出。类似于在之前的文章 MySQL抓包工具:MySQL Sniffer中介绍的mysql-sniffer。而 go-sniffer 可以对更多数据库进行抓包分析,现在来介绍在什么情况下会使用该工具的。
使用
下载:
github 地址:https://github.com/40t/go-sniffer
安装:
安装依赖包:
yum -y install libpcap-devel
apt-get install libpcap-dev
wget https://golang.org/dl/go1.10.3.linux-amd64.tar.gz
下载安装
go get -v -u github.com/40t/go-sniffer cp -rf $(go env GOPATH)/bin/go-sniffer /usr/local/bin
[使用说明]
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 lo0 mysql
$ go-sniffer en0 redis
$ go-sniffer eth0 http -p 8080
$ go-sniffer eth1 mongodb
使用场景
一 Redis :审计、发现热点key
关于Redis的知识点就不说了,主要来说明如何使用go-sniffer来抓包分析。如果想发现哪个key的操作比较多或则是否存在热点key,在Redis4.0之前没有什么好办法(4.0之后的LFU可以查看hotkey),只有通过统计各个客户端发来的命令进行统计。虽然monitor可以看到某一刻的key操作,但是该命令消耗巨大,可能会造成客户端缓冲区溢出。并且也没有合适的插件来进行实现。即使有的话,对Redis的性能肯定有一定的损耗,所以只有监控其网络来分析操作是对Redis服务的影响最小的。如对一个实例进行监控:
go-sniffer eth0 redis -p 6379 >> out.log 对通过eth0网卡的客户端访问端口为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
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
二 MySQL:审计
go-sniffer eth0 mysql -p 3306 >> out.log
三 MongoDB:审计
go-sniffer eth0 mongodb -p 27017 >> out.log
逆锋起笔
专注于程序员圈子,你不但可以学习到java
、python
等主流技术干货,还可以第一时间获悉最新技术动态
、内测资格
、BAT大佬的经验
、精品视频教程
、副业赚钱
经验,微信搜索readdot
关注!
评论