歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> Ubuntu系統中安裝使用tcpdump來統計HTTP請求

Ubuntu系統中安裝使用tcpdump來統計HTTP請求

日期:2017/3/2 16:25:34   编辑:Linux服務器

  Ubuntu系統中安裝使用tcpdump來統計HTTP請求

安裝

  tcpdump的安裝還是比較討厭的...

  1.網上下載獲得libpcap和tcpdump

  http://www.tcpdump.org/

  2.安裝c編譯所需包:

  代碼如下:

  apt-get install build-essential

  3.安裝 libpcap的前置:

  代碼如下:

  apt-get install flex,apt-get install bison

  4.安裝libpcap。

  tcpdump的使用必須有這庫。

  代碼如下:

  tar xvfz libpcap-1.2.1.tar.gz //解壓

  進入解壓之後的文件目錄 運行

  代碼如下:

  ./configure //生成makefile文件

  make //進行編譯

  make install //安裝

  庫文件默認安裝在目錄 /usr/lib,頭文件默認安裝在 /usr/include

  5.安裝tcpdump

  代碼如下:

  tar xvfz tcpdump.4.2.1.tar.gz //解壓

  進入解壓之後的文件目錄 運行

  代碼如下:

  ./configure //生成makefile文件

  make //進行編譯

  make install //安裝 庫文件默認安裝在目錄 /usr/lib,頭文件默認安裝在 /usr/include

  測試是否成功安裝:命令行輸入 tcpdump有網絡信息顯示!!

  6.可能遇到的問題:

  代碼如下:

  #tcpdump

  #tcpdump: no suitable device found

  原因:網絡監聽需要root權限,切換到root用戶下就可以正常使用了。

  借助tcpdump統計http請求

  這裡所說的統計http請求,是指統計QPS(每秒請求數),統計前十條被訪問最多的url。一般做這樣的統計時,我們經常會使用網站訪問日志來統計。當我們來到一個陌生的服務器環境,需要立即統計當前前十條被訪問最多的url,來初步確定是否存在攻擊行為,使用tcpdump則簡單得多,因為我們不需要關心網站日志在哪,不需要考慮網站日志有沒有開啟之類的問題,直接用tcpdump捕捉當前的http包,再進一步過濾,就會得出我們想要的統計。此功能已集成到EZHTTP,下面是效果圖:

2016421115956358.png (571×593)

  下面介紹其統計方法。

  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 ("%sn",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

Copyright © Linux教程網 All Rights Reserved