linux中tcpdump统计http请求应用例子
2019/10/10/17:46:56 阅读:1810 来源:谷歌SEO算法 标签:
5G标准出炉
这里所说的统计http请求,是指统计QPS(每秒请求数),统计前十条被访问最多的url。一般做这样的统计时,我们经常会使用网站访问日志来统计。当我们来到一个陌生的服务器环境,需要立即统计当前前十条被访问最多的url,来初步确定是否存在攻击行为,使用tcpdump则简单得多,因为我们不需要关心网站日志在哪,不需要考虑网站日志有没有开启之类的问题,直接用tcpdump捕捉当前的http包,再进一步过滤,就会得出我们想要的统计。此功能已集成到EZHTTP.
下面介绍其统计方法
1、捕捉10秒的数据包,代码如下:
- tcpdump-ieth0tcp[20:2]=0x4745ortcp[20:2]=0x504f-w/tmp/tcp.cap-s5122>&1&
- sleep10
- kill`psaux|greptcpdump|grep-vgrep|awk'{print$2}'`
此命令表示监控网卡eth0,捕捉tcp,且21-22字节字符为GE或者PO,表示匹配GET或者POST请求的数据包,并写到/tmp/tcp.cap文件。
2、这时候我们得到最新10秒的二进制数据包文件,我们下一步就是通过strings命令来找出GET/POST的url以及Host,代码如下:
- strings/tmp/tcp.cap|grep-E"GET/|POST/|Host:"|grep--no-group-separator-B1"Host:"|grep--no-group-separator-A1-E"GET/|POST/"|awk'{url=$2;getline;host=$2;printf("%s\n",host""url)}'>url.txt
此命令是本文的关键,通过strings显示二进制文件tcp.cap所有可打印字符,然后通过grep和awk过滤出http请求,并把拼接得到的url(包括域名+uri)写进一个文件url.txt。
3、这时我们拿到了近10秒钟所有的访问url,接下来的统计就容易得出,比如:
统计QPS,代码如下:
- ((qps=$(wc-l/tmp/url.txt|cut-d''-f1)/10))
- 排除静态文件统计前10访问url:
- grep-v-i-E"\.(gif|png|jpg|jpeg|ico|js|swf|css)"/tmp/url.txt|sort|uniq-c|sort-nr|head-n10--phpfensi.com
热门评论