最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
linux中tcpdump统计http请求应用例子
时间:2014-07-19 编辑:简简单单 来源:一聚教程网
这里所说的统计http请求,是指统计QPS(每秒请求数),统计前十条被访问最多的url。一般做这样的统计时,我们经常会使用网站访问日志来统计。当我们来到一个陌生的服务器环境,需要立即统计当前前十条被访问最多的url,来初步确定是否存在攻击行为,使用tcpdump则简单得多,因为我们不需要关心网站日志在哪,不需要考虑网站日志有没有开启之类的问题,直接用tcpdump捕捉当前的http包,再进一步过滤,就会得出我们想要的统计。此功能已集成到EZHTTP,下面是效果图:
ps://www.centos.bz/wp-content/uploads/2014/07/http-tcpdump.png" />
下面介绍其统计方法。
1、捕捉10秒的数据包。
代码如下 | 复制代码 |
tcpdump -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x504f -w /tmp/tcp.cap -s 512 2>&1 & sleep 10 kill `ps aux | grep tcpdump | grep -v grep | 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 -B 1 "Host:" | grep --no-group-separator -A 1 -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' ' -f 1) / 10 )) 排除静态文件统计前10访问url: grep -v -i -E "\.(gif|png|jpg|jpeg|ico|js|swf|css)" /tmp/url.txt | sort | uniq -c | sort -nr | head -n 10 |
相关文章
- Linux的文件权限解析 10-20
- Git文件删除操作命令解析 10-20
- Linux apache实现https的配置教程 10-18
- 远程登录Linux CentOS系统教程 10-11
- UOS系统连接打印机教程 10-10
- Linux系统安装brother打印机驱动并且设置网络打印机教程 10-10