導航:首頁 > 凈水問答 > tshark過濾http

tshark過濾http

發布時間:2025-07-02 15:25:24

Ⅰ Wireshark+Elasticsearch+Kibana打造流量回溯系統

流量回溯系統捕獲和分析數據流程,一般由以下幾個步驟組成:
1.數據包捕獲 -記錄網路上的數據包流量。
2.協議解析 -解析不同的網路協議和欄位。
3.搜索和可視化 -詳細或匯總瀏覽數據。

從 Wireshark 3.0.0rc1 開始,TShark可以使用 -G elastic-mapping 選項,生成Elasticsearch映射文件,存儲在Elasticsearch中並進行瀏覽,使得TShark解析結果可以在在Kibana中進行搜索和可視化。
下面,我將展示如何使用Wireshark和Elastic Stack來建立流量回溯系統:

Packetbeat 可以配置為捕獲實時網路數據包,並使用 -I 選項從捕獲文件中讀取數據包。它可以識別和解析許多應用程序級協議,例如HTTP,MySQL和DNS,以及常規流信息。但packetbeat對報文採用會話方式分析,不能對一個個報文單獨分析,傾向於應用層,對網路層面分析不足,並且支持的協議有限,tshark的2000多種存在明顯差距。

Wireshark是最受歡迎的數據包捕獲和分析軟體,它可以識別 2,000多個協議,其中包含200,000多個欄位 。除GUI界面操作外,它還提供命令行實用程序 tshark 來捕獲實時流量以及讀取和解析捕獲文件。作為其輸出, tshark 可以生成報告和統計信息,還可以分析不同文本格式的數據包數據。

自2.2版( 2016年9月發布 )以來, tshark 支持的 Elasticsearch Bulk API 的JSON格式輸出。

將在 eth0 網路介面上實時捕獲數據包,並以Elasticsearch Bulk API格式輸出到文件 packets.json 。

將從捕獲文件 capture.pcap 中讀取數據包,並作為JSON格式輸出為Elasticsearch Bulk API格式到文件 packets.json 。

將從捕獲文件 capture.pcap 中讀取數據包,過濾HTTP協議指定欄位,並作為JSON格式輸出為Elasticsearch Bulk API格式到文件 packets.json 。

將從捕獲文件 capture.pcap 中讀取數據包,過濾HTTP協議指定欄位,並增加"|"分隔符以txt格式輸出到文件 packets.txt 。

從5.0版開始,Elasticsearch提出了Ingest Pipeline的概念。一個pipeline 由一系列線程組成,這些可以對數據進行許多不同的更改。

Pipeline示例如下:

該Pipeline只是簡單更改數據包將被寫入的Elasticsearch索引(默認值為 packets-YYYY-MM-DD )。要在導入數據時使用此管道,請在URL中指定它:

有關更多信息,請參見 Ingest模塊文檔 和新的攝取方式- 第1 部分 , 第2部分 。

Filebeat和Logstash都有等效的配置選項,用於在將數據發送到Elasticsearch時指定接收Pipeline。

Logstash是Elastic Stack的一部分,並用作數據處理線程。它可以用來讀取Elasticsearch Bulk API格式的數據,並在將數據發送到Elasticsearch之前對數據執行更復雜的轉換和充實。

配置示例為:
logstash.conf

grok過濾器從,格式為「 protocol:protocol:protocol 」的 frame_frame_protocols 欄位(例如「 eth:ethertype:ip:tcp:http 」 )中提取最內層的網路協議名稱,到頂級「 protocol 」欄位中。

Wireshark解析的原始數據包含大量欄位,這些欄位種絕大多數不會搜索或匯總,因此在所有這些欄位上創建索引通常不是正確的選擇。
欄位太多會降低索引和查詢速度, Elasticsearch 5.5開始,默認會將索引中的欄位數限制為1000 。另外, tshark -T ek 無論原始數據欄位值是文本還是數字,包括時間戳和IP地址,均輸出為字元串。
如果要指定正確的數據類型,將數字索引為數字,將時間戳作為時間戳等,防止索引欄位激增,應顯式指定Elasticsearch映射。

Elasticsearch映射例子如下:

要將 tshark -T ek 的輸出數據導入到Elasticsearch中,有以下幾種方式。

Filebeat非常輕巧,可以監視一組文件或目錄中是否有任何新文件,並自動對其進行處理。讀取Tshark輸出文件並將數據包數據發送到Elasticsearch。

示例配置如下所示:
filebeat.yml

與Filebeat一樣,Logstash可以監視目錄中的新文件並自動對其進行處理。與Filebeat相比,它比Elasticsearch Ingest Pipeline可以更廣泛地轉換數據。

有關Logstash配置的示例,請參見3.1轉換數據的部分。

在Kibana中,您現在可以瀏覽數據包並在它們之上構建儀錶板。

*網路數據詳細視圖,包括一個表格,該表格在可擴展的行中顯示原始數據包數據

*顯示網路協議分布的餅圖

由於來自Wireshark的網路數據具有與syslog等不同的數據格式,因此更改Kibana中的某些設置(「管理」選項卡->「 Kibana高級設置」)很有意義。

Kibana配置如下:

參考

Ⅱ tshark命令參數詳解

捕獲介面:
-i: -i interface 指定捕獲介面,默認是第一個非本地循環介面;
-f: -f capture filter 設置抓包過濾表達式,遵循libpcap過濾語法,這個實在抓包的過程中過濾,如果是分析本地文件則用不到。
-s: -s snaplen 設置快照長度,用來讀取完整的數據包,因為網路中傳輸有65535的限制,值0代錶快照長度65535,默認也是這個值;
-p: 以非混合模式工作,即只關心和本機有關的流量。
-B: -B buffer size 設置緩沖區的大小,只對windows生效,默認是2M;
-y: -ylink type 設置抓包的數據鏈路層協議,不設置則默認為-L找到的第一個協議,區域網一般是EN10MB等;
-D: 列印介面的列表並退出;
-L 列出本機支持的數據鏈路層協議,供-y參數使用。
捕獲停止選項:
-c: -c packet count 捕獲n個包之後結束,默認捕獲無限個;
-a: -a autostop cond. ... ration:NUM,在num秒之後停止捕獲;
filesize:NUM,在numKB之後停止捕獲;
files:NUM,在捕獲num個文件之後停止捕獲;
捕獲輸出選項:
-b ringbuffer opt. ... ring buffer的文件名由-w參數決定,-b參數採用test:value的形式書寫;
ration:NUM - 在NUM秒之後切換到下一個文件;
filesize:NUM - 在NUM KB之後切換到下一個文件;
files:NUM - 形成環形緩沖,在NUM文件達到之後;
RPCAP選項:
remote packet capture protocol,遠程抓包協議進行抓包;
-A: -A user:password,使用RPCAP密碼進行認證;
輸入文件:
-r: -r infile 設置讀取本地文件
處理選項:
-2: 執行兩次分析
-R: -R read filter,包的讀取過濾器,可以在wireshark的filter語法上查看;在wireshark的視圖-過濾器視圖,在這一欄點擊表達式,就會列出來對所有協議的支持。
-Y: -Y display filter,使用讀取過濾器的語法,在單次分析中可以代替-R選項;
-n: 禁止所有地址名字解析(默認為允許所有)
-N: 啟用某一層的地址名字解析。「m」代表MAC層,「n」代表網路層,「t」代表傳輸層,「C」代表當前非同步DNS查找。如果-n和-N參數同時存在,-n將被忽略。如果-n和-N參數都不寫,則默認打開所有地址名字解析。
-d: 將指定的數據按有關協議解包輸出,如要將tcp 8888埠的流量按http解包,應該寫為「-d tcp.port==8888,http」;tshark -d. 可以列出所有支持的有效選擇器。
輸出選項:
-w: -w outfile|- 設置raw數據的輸出文件。這個參數不設置,tshark將會把解碼結果輸出到stdout,「-w -」表示把raw輸出到stdout。如果要把解碼結果輸出到文件,使用重定向「」而不要-w參數。
-F: -F output file type,設置輸出的文件格式,默認是.pcapng,使用tshark -F可列出所有支持的輸出文件類型。
-V: 增加細節輸出;
-O: -O protocols,只顯示此選項指定的協議的詳細信息。
-P: 即使將解碼結果寫入文件中,也列印包的概要信息;
-S: -S separator 行分割符
-x: 設置在解碼輸出結果中,每個packet後面以HEX mp的方式顯示具體數據。
-T: -T pdml|ps|text|fields|psml,設置解碼結果輸出的格式,包括text,ps,psml和pdml,默認為text
-e: 如果-T fields選項指定,-e用來指定輸出哪些欄位;
-E: -E fieldsoption=value如果-T fields選項指定,使用-E來設置一些屬性,比如
header=y|n
separator=/t|/s|char
occurrence=f|l|a
aggregator=,|/s|char
-t: -t a|ad|d|dd|e|r|u|ud 設置解碼結果的時間格式。「ad」表示帶日期的絕對時間

Ⅲ 在linux上tshark怎麼過濾

抓Mysql包命令如下:
tshark -s 512 -i eth0 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query
tshark -s 512 -i em1 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query
過濾HTTP請求:
# tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -R 'http.request.method == "GET" || http.request.method == "HEAD"'
輸出:
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
0.000000 123.126.68.27 -> 173.255.196.50 HTTP GET /grep.html HTTP/1.1
12.066470 123.126.68.27 -> 173.255.196.50 HTTP GET /pro_lang.html HTTP/1.1
-s 512 :只抓取前512個位元組數據
-i eth0 :捕獲eth0網卡
-n :禁止網路對象名稱解析
-f 'tcp dst port 3306' :只捕捉協議為tcp,目的埠為3306的數據包
-R 'mysql.query' :過濾出mysql.query
-T fields -e mysql.query :列印mysql查詢語句

tshark使用-f來指定捕捉包過濾規則,規則與tcpmp一樣,可以通過命令man pcap-filter來查得。
tshark使用-R來過濾已捕捉到的包,與界面板wireshark的左上角Filter一致。

閱讀全文

與tshark過濾http相關的資料

熱點內容
三淼污水提升泵 瀏覽:262
北京潔明過濾器 瀏覽:1000
埋深4米的污水管道多少錢 瀏覽:230
科林貝思凈水器換好濾芯如何復位 瀏覽:412
清遠污水一體化處理多少錢 瀏覽:500
香港游泳池凈水設備多少錢 瀏覽:642
玉溪哪有污水處理設備 瀏覽:744
污水處理廠現場設備有那些 瀏覽:795
下水道往上反污水 瀏覽:20
污水處理的生物處理方法有哪些 瀏覽:162
納米樹脂補牙後根管治療就可以了嗎 瀏覽:20
河北污水環保公司 瀏覽:566
90級凈水多少錢 瀏覽:299
反滲透凈水器壓力桶長期不用 瀏覽:592
柴油濾芯怎麼擰才不會壞 瀏覽:181
安吉爾凈水器us和ac亮黃燈換哪個濾芯 瀏覽:265
污水處理廠處理規模Q啥意思 瀏覽:87
ro膜凈水器好處 瀏覽:333
陶瓷半球濾芯怎麼過濾 瀏覽:36
廣西林業污水處理費用是多少 瀏覽:47