iT邦幫忙

2018 iT 邦幫忙鐵人賽
1

使用wireshark能解決許多網路問題,將側錄下來的封包傳至Elasticsearch上方便分析製作及時報表。tshark為wireshark的命令模式,方便編寫腳本運作。

情境:
有一些國外雲Cloud(A,B)提供當地服務local(a,b),想要偵測當地客戶連至服務不穩時,將客戶引導流量至另一個雲端服務(ISP之間不穩定等問題)。全世界的ISP業者數量眾多,利用第三方平台icmp監控仍會有遺漏,或有防火牆阻斷無法直接對客戶做偵測。

方法:
利用封包在重傳時會有RTO(Retransmission TimeOut 計算重傳超過多少時間斷開)這個資訊,可以知道雙方傳送有問題。
Client(rpcapd)=> Server(tshark)=> filebeat=> logstash=> elasticsearch=> elastalert

1.mirror Cloud封包至執行tshark的server
2.利用"tcp.analysis.retransmission"將封包作分析,過濾出有重傳的
3.利用filebeet將過濾後的json檔傳至Elasticsearch做收集及二次分析
4.依需求搜尋,例如各Cloud RTO次數大於平常次數發送告警

rpcapd.exe 推送封包

rpcapd.exe -4 -n -p 8888

tshark接收,過濾port, 協定

tshark -s 64 -i rpcap://X.X.X.X:8888/\Device\NPF_{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} -n -f "tcp dst port 1935" -Y tcp.analysis.retransmission -T ek -a duration:3600 > C:\wiresharklog\packets.json

vi /tmp/packets.json

利用Wireshark IO Graphs 分析RTO狀態
COUNT FRAMES(*) tcp.analysis.retransmission

filebeat收集json資料,可以選擇先傳到logstash,這邊是直接轉發至elasticsearch

filebeat.prospectors:
- input_type: log
  paths:
    - C:\wiresharklog\*
  document_type: "pcap_file"
  json.keys_under_root: true

processors:
 - drop_event:
     when:
       equals:
         index._type: "pcap_file"

output.elasticsearch:
  hosts: ["X.X.X.X:9200"]
  index: "packets-webserver01-%{+yyyy-MM-dd}"
  template.enabled: false

在Kibana搜尋將RTO值大於0.01秒的顯示出來,依時間點RTO次數計算

進階運用可以對目的IP做分組,可以知道各時間點到該服務的狀況

結論:
將收集的封包存檔,傳送到到其他Server做分析,利用這種架構可以避免單台server開wireshark處理負擔過重的問題,並可有多種分析方式,方便做成儀表版做實時監控。

Reference:
https://www.elastic.co/blog/analyzing-network-packets-with-wireshark-elasticsearch-and-kibana

https://sites.google.com/site/h21lab/tools/tshark_elasticsearch

https://sharkfest.wireshark.org/sf17

http://roan.logdown.com/posts/230705-rpcapd-remote-capture-remote-system-network-traffic


上一篇
1-16.監控工具之一:Zabbix -> Elasticsearch
系列文
成長型維運平台 - 單人新手到多人團隊都適用的工具27

尚未有邦友留言

立即登入留言