सवाल Tcpdump का उपयोग कर HTTP ट्रैफिक की निगरानी


सर्वर और वेब सर्वर के बीच HTTP यातायात की निगरानी करने के लिए, मैं वर्तमान में उपयोग कर रहा हूं tcpdump। यह ठीक काम करता है, लेकिन मैं आउटपुट में कुछ अनावश्यक डेटा से छुटकारा पाना चाहता हूं (मुझे पता है tcpflow तथा wireshark, लेकिन वे मेरे पर्यावरण में आसानी से उपलब्ध नहीं हैं)।

वहाँ से tcpdump मैन पेज:

पोर्ट 80 से और उसके लिए सभी आईपीवी 4 HTTP पैकेट प्रिंट करने के लिए, यानी केवल पैकेट प्रिंट करें जिसमें डेटा है, उदाहरण के लिए, सिएन और फिन पैक और एसीके-केवल पैकेट्स।

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

यह आदेश

sudo tcpdump -A 'src example.com और टीसीपी पोर्ट 80 और (((आईपी [2: 2] - ((आईपी [0] और 0xf) << 2)) - ((टीसीपी [12] और 0xf0) >> 2) )! = 0) '

निम्नलिखित आउटपुट प्रदान करता है:

1 9: 44: 03.529413 आईपी 1 9 2.0.32.10.http> 10.0.1.6.5236 9: ध्वज [पी।], सीईसी 918827135: 918827862, एएसी 351213824, 4316 जीत, विकल्प [एनओपी, एनओपी, टीएस वैल 40 9 3273405 ईआरआर 869 9 5 9 372], लंबाई 727

ई ..... @ ....... .... P..6.0 ......... डी ......   __ .. ई = 3 ...__ HTTP / 1.1 200 ठीक है   सर्वर: अपाचे / 2.2.3 (रेड हैट)   सामग्री-प्रकार: टेक्स्ट / एचटीएमएल; charset = UTF-8   तिथि: शनि, 14 नवंबर 200 9 18:35:22 जीएमटी   आयु: 714 9
  सामग्री-लंबाई: 438

<Html>   <HEAD>     <TITLE> उदाहरण वेब पेज </ TITLE>   </ Head>   <Body>
  <p> आप इस वेब पेज पर पहुंचे हैं ... </ p>   </ Body>   </ HTML>

हाइलाइट किए गए भाग को छोड़कर यह लगभग सही है। यह क्या है, अंत - अधिक महत्वपूर्ण बात - मैं इससे कैसे छुटकारा पा सकता हूं? हो सकता है कि यह आदेश के अंत में अभिव्यक्ति के लिए थोड़ा सा झटका है?


41
2017-11-14 18:58


मूल




जवाब:


tcpdump पूर्ण पैकेट प्रिंट करता है। "कचरा" आप वास्तव में टीसीपी पैकेज हेडर देख रहे हैं।

आप निश्चित रूप से आउटपुट को मालिश कर सकते हैं i.e. a perl स्क्रिप्ट के साथ, लेकिन क्यों नहीं tshark, wireshark के पाठ संस्करण का उपयोग क्यों करें?

tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

यह tcpdump (समान लाइब्रेरी) के समान तर्क लेता है लेकिन इसके बाद से यह एक विश्लेषक है, यह गहरी पैकेट निरीक्षण कर सकता है ताकि आप अपने फ़िल्टर को और भी परिशोधित कर सकें, यानी।

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"'


38
2017-11-14 21:29



धन्यवाद - सभी सुझावों को आजमाने के बाद, tshark नौकरी के लिए सबसे अच्छा उपकरण की तरह लगता है। मैं वर्तमान में "tshark -d tcp.port == 8070, http -R 'http.request या http.response' का उपयोग कर रहा हूं। अब अगर मैं केवल टीएसपी स्ट्रीम का पालन कर सकता हूं तो "टीसीपी स्ट्रीम का पालन करें" जैसे कि वायरशर्क कर सकते हैं (यह बहुत कुछ पूछता है, लेकिन मुझे अभी भी जवाब नहीं मिला है)। "-V" टीसीपी और आईपी पैकेट्स के बारे में जानकारी प्रदर्शित करता है और इसी तरह, जिसमें मुझे रूचि नहीं है। लेकिन मुझे लगता है कि मैं इसे एक स्क्रिप्ट का उपयोग कर हटा सकता हूं। - otto.poellath
आप प्रत्येक चरित्र के लिए ASCII मानों से मेल करके कैप्चर फ़िल्टर में "GET" खोज सकते हैं: tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420। मैंने कुछ समय पहले Wireshark वेबसाइट पर एक पृष्ठ जोड़ा जो स्ट्रिंग मिलान कैप्चर फ़िल्टर बनाने में आपकी सहायता करता है: wireshark.org/tools/string-cf.html - Gerald Combs


पर एक नज़र डालें ngrep - यह आपके लिए कुछ उपयोग का प्रतीत होता है।

दूसरों के लिए संदर्भ के रूप में httpry [सर्वर अब नीचे प्रतीत होता है लेकिन मुझे उम्मीद है कि यह अस्थायी है] और tshark निष्क्रिय प्रोटोकॉल विश्लेषण के लिए भी उपयोगी हैं - सबसे पहले सिर्फ http के लिए, दूसरा - बहुत अधिक के लिए।


18
2017-11-14 21:56



Ngrep के लिए +1। बहुत उपयोगी उपकरण। - tylerl
ngrep और httpry निश्चित रूप से उपयोगी दिखते हैं, लेकिन ngrep HTTP और AFAIK से अनजान है, httpry केवल HTTP शीर्षलेख के साथ काम करता है और पेलोड डेटा प्रदर्शित नहीं कर सकता है। - otto.poellath
@sapporo - sure - ngrep प्रोटोकॉल अज्ञेयवादी है, लेकिन आप केवल "पोर्ट 80" में पैकेप फ़िल्टर "पोर्ट 80" जोड़ सकते हैं और [अधिकांश मामलों में] http ट्रैफ़िक प्राप्त कर सकते हैं। - pQd
इमो, ngrep tcpdump से 100000x बेहतर है - DanFromGermany


प्रयत्न httpry या justniffer

Justniffer retrasmissions और आईपी विखंडन reordering टीसीपी पैकेट पर अच्छी तरह से काम करता है


5
2017-09-13 18:22



धन्यवाद! Justniffer वह है जो मैं खोज रहा था (मुझे लगता है कि यह एकमात्र टूल है जो बहुत सरल है तथा उपायों का अनुरोध अवधि)। - gkop


मैं एक dumbed down tcpdump कमांड लाइन का उपयोग करने का सुझाव दूंगा जो पोस्ट प्रक्रिया के लिए एक पॅक फ़ाइल में सबकुछ संग्रहीत करता है। टीसीपीफ्लो का निदान करने के लिए आप जो भी देख रहे हैं उसके आधार पर संचार के लिए एक सुसंगत तरीके से संचार को एक साथ वापस लाने के लिए बहुत अच्छा काम करता है।

Httpry के लिए कुछ उपयोग सहित कुछ अन्य अच्छी जानकारी यहां मिल सकती है: http://taosecurity.blogspot.com/2008/06/logging-web-traffic-with-httpry.html


1
2017-11-15 03:24





क्या आपके द्वारा उपयोग किए जा रहे वेबसर्वर लॉग का उत्पादन नहीं करते हैं? निश्चित रूप से यह HTTP यातायात की निगरानी करने का एक बेहतर तरीका होगा, डेटा का विश्लेषण करने के लिए उपकरणों का एक बड़ा हिस्सा है और किसी भी सक्षम वेबसर्वर को विश्वसनीय लॉग का उत्पादन करना चाहिए।


0
2017-11-14 21:31



स्पष्ट रूप से। मुझे कल्पना है कि वह पहले से ही इसके बारे में सोचा था। कभी-कभी बिंदु ए और बिंदु बी के बीच भेजे जाने वाले वास्तविक डेटा की निगरानी करना उपयोगी होता है। - tylerl


विशेष रूप से HTTP यातायात की निगरानी के लिए डिज़ाइन किए गए बाजार पर कई टूल उपलब्ध हैं। फिडलर 2 (http://www.fiddler2.org) तथा HTTP डीबगर प्रो ऐसे औजारों के उदाहरण हैं।


0
2017-07-03 07:46



आपके सुझावों के लिए धन्यवाद। दुर्भाग्य से, दोनों टूल्स केवल विंडोज़ पर काम करते हैं। मैंने इसका उल्लेख नहीं किया था, लेकिन मैं लिनक्स पर काम करने वाली किसी चीज़ के लिए देख रहा हूं। - otto.poellath