1. <span id='jpho'></span>

          <ins id='jpho'></ins>

          <code id='jpho'><strong id='jpho'></strong></code>

        1. <tr id='jpho'><strong id='jpho'></strong><small id='jpho'></small><button id='jpho'></button><li id='jpho'><noscript id='jpho'><big id='jpho'></big><dt id='jpho'></dt></noscript></li></tr><ol id='jpho'><table id='jpho'><blockquote id='jpho'><tbody id='jpho'></tbody></blockquote></table></ol><u id='jpho'></u><kbd id='jpho'><kbd id='jpho'></kbd></kbd>
          1. <dl id='jpho'></dl>
            <acronym id='jpho'><em id='jpho'></em><td id='jpho'><div id='jpho'></div></td></acronym><address id='jpho'><big id='jpho'><big id='jpho'></big><legend id='jpho'></legend></big></address>
          2. <i id='jpho'><div id='jpho'><ins id='jpho'></ins></div></i>

            <fieldset id='jpho'></fieldset>
            <i id='jpho'></i>

            讲解Linux中tcpdump工具的应用

            • 时间:
            • 浏览:10
            • 来源:124软件资讯网

                先来看一个比力基本的用法:

                复制代码

                代码如下:

                tcpdump -i eth0

                其中  ,eth0为参数值  ,表现需要抓包的网口  ,这是个必须参数哦  。

                tcpdump的详细参数及意义:

                -i:指定tcpdump监听的网络接口

                -s:指定要监听数据包的长度

                -c:指定要监听的数据包数目  ,到达指定数目后自动制止抓包

                -w:指定将监听到的数据包写入文件中生存

                -A:指定将每个监听到的数据包以ACSII可见字符打印

                -n:指定将每个监听到数据包中的域名转换成IP地址后显示

                -nn:指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示

                -e:指定将监听到的数据包链路层的信息打印出来 ,包罗源mac和目的mac  ,以及网络层的协议

                -p:将网卡设置为非混杂模式  ,不能与host或broadcast一起使用

                -r:指定从某个文件中读取数据包

                -S:指定打印每个监听到的数据包的TCP绝对序列号而非相对序列号

                tcpdump支持许多的要害字  ,下面先看几个例子:

                (例1)tcpdump -i eth0 host 192.168.0.250 ----- 在网口eth0上抓取主机地址为192.168.0.250的所有数据包  。

                (例2)tcpdump -i eth0 net 192.168.0.0/24 ------ 在网口eth0上抓取网络地址为192.168.0.0/24的所有数据包

                (例3)tcpdump -i eth0 port 80 ------ 在网口eth0上抓取端口为80的所有数据包(注重  ,这里不区分是源端口照旧目的端口)

                固然 ,我们也可以指定源端口或目的端口

                (例4)tcpdump -i eth0 src port 80 and dst port 6100 --- 在网口eth0上抓取源端口为80且目的端口为6100的数据包 ,这里用到了and逻辑运算符

                (例5)tcpdump -i eth0 icmp --- 在网口eth0上抓取所有icmp协议的数据包

                以上几个例子 ,可以大致体现出tcpdump的基本用法  。

                现实上 ,tcpdump主要包罗三种类型的要害字 ,第一种是关于类型的要害字  ,主要包罗host  ,net  ,port ,如上面的例(1)(2)(3)  ,第二种

                是确定传输偏向的要害字  ,主要包罗src  ,dst ,src or dst  ,src and dst  ,这些要害字指明晰传输的偏向 ,如上面的例(4)  。第三种是协议要害字 ,包罗fddi ,ip  ,arp  ,

                rarp  ,tcp ,udp  ,imcp等 ,如上面的例(5) 。

                除了这三种类型的要害字外  ,另有其他主要的要害字  ,如:gateway ,broadcast ,less ,greater  ,另有三种逻辑运算  ,取非运算是'not'、'!'  ,与运算符是'and'、'&&'、

                或运算符是'or'、'||'  ,这些要害字可以组合起来组成强盛的组合条件来知足我们的需求  。

                借助tcpdump统计http请求

                这里所说的统计http请求  ,是指统计QPS(每秒请求数)  ,统计前十条被会见最多的url  。一样平常做这样的统计时  ,我们经常会使用网站会见日志来统计  。当我们来到一个生疏的服务器情况  ,需要立刻统计当前前十条被会见最多的url,来开端确定是否存在攻击行为  ,使用tcpdump则简朴得多  ,由于我们不需要体贴网站日志在哪  ,不需要思量网站日志有没有开启之类的问题 ,直接用tcpdump捕捉当前的http包 ,再进一步过滤 ,就会得出我们想要的统计 。此功效已集成到EZHTTP,下面是效果图:

                下面先容其统计要领  。

                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