Tcpdump का उपयोग करके HTTP ट्रैफ़िक की निगरानी करना


42

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

से tcpdumpआदमी पेज:

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

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

यह आज्ञा

sudo tcpdump -A 'src example.com और tcp port 80 और (((IP [2: 2] - ((ip [0] & 0xf) << 2)) - ((tcp [12] और 0xf0) >> 2) )! = 0) '

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

19: 44: 03.529413 आईपी 192.0.32.10.http> 10.0.1.6.52369: झंडे [पी।], Seq 918827135: 918827862, ack 351213424, 4316 जीतें, विकल्प [nop, nop, TS val 4093273405 ecr 86995937372 ”

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

<HTML> <HEAD> <TITLE> उदाहरण वेब पेज </ TITLE> </ HEAD> <body>
<p> आप इस वेब पेज पर पहुंच गए हैं ... </ p> </ BODY> </ HTML>

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

जवाबों:


39

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

आप निश्चित रूप से आउटपुट के साथ मालिश कर सकते हैं यानी एक पर्ल स्क्रिप्ट, लेकिन क्यों नहीं tshark का उपयोग करें, इसके बजाय वायरशार्क का पाठ संस्करण?

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


1
धन्यवाद - सभी सुझावों को आज़माने के बाद, t नौकरी के लिए सबसे अच्छा उपकरण की तरह लगता है। मैं वर्तमान में "tshark -d tcp.port == 8070, http -R 'http.request या http.response'" का उपयोग कर रहा हूं। अब अगर केवल तारशर्क की तरह "tcp स्ट्रीम" का अनुसरण करने के लिए मुझे tshark मिल सकता है (यह बहुत कुछ पूछा जाता है, लेकिन मुझे अभी भी उत्तर नहीं मिला है)। "-वी" टीसीपी और आईपी पैकेट वगैरह के बारे में जानकारी प्रदर्शित करता है, जिसमें मुझे कोई दिलचस्पी नहीं है। लेकिन मुझे लगता है कि मैं स्क्रिप्ट का उपयोग करके इसे हटा सकता हूं।
otto.poellath

4
आप प्रत्येक वर्ण के लिए ASCII मूल्यों से मेल खाते "कैप्चर फ़िल्टर" में भी खोज सकते हैं tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420:। मैंने थोड़ी देर पहले विरेषर्क वेब साइट पर एक पृष्ठ जोड़ा जो आपको स्ट्रिंग मिलान कैप्चर फिल्टर्स बनाने में मदद करता है: wirehark.org/tools/string-cf.html
गेराल्ड कॉम्ब्स

18

ngrep पर एक नज़र डालें - यह आपके लिए कुछ काम का नहीं है।

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


2
एनक्रेप के लिए +1। बहुत उपयोगी उपकरण।
टायलरल

ngrep और httpry निश्चित रूप से उपयोगी दिखते हैं, लेकिन ngrep HTTP और AFAIK से अनजान है, httpry केवल HTTP हेडर के साथ काम करता है और पेलोड डेटा प्रदर्शित नहीं कर सकता है।
otto.poellath

@sapporo - सुनिश्चित करें - एनक्रेप प्रोटोकॉल अज्ञेयवादी है, लेकिन आप pcap फ़िल्टर "पोर्ट 80" को जोड़ सकते हैं और प्राप्त कर सकते हैं .. [अधिकांश मामलों] http ट्रैफ़िक में।
pQd

Imo, ngrep tcpdump से 100000x बेहतर है
डैनियल डब्ल्यू।

5

प्रयास करें httpry या justniffer

जस्टनिफ़र tcp के पैकेटों पर अच्छी तरह से काम करता है, जो रिट्रासिमिशन और आईपी विखंडन को पुनः व्यवस्थित करता है


1
धन्यवाद! justniffer वह है जो मैं ढूंढ रहा था (मुझे लगता है कि यह एकमात्र ऐसा उपकरण है जिसका उल्लेख बहुत ही सरल है और उपाय अनुरोध अवधि है)।
21

1

मैं एक dumbed tcpdump कमांड लाइन का उपयोग करने का सुझाव दूंगा जो पोस्ट प्रोसेस के लिए एक pcap फाइल में सब कुछ स्टोर करता है। इस बात पर निर्भर करता है कि आप वास्तव में tcpflow के निदान के लिए क्या कर रहे हैं, विश्लेषण के लिए सुसंगत तरीके से संचार को एक साथ रखने के लिए महान काम करता है।

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


0

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


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

0

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


4
आपके सुझाव के लिए धन्यवाद। दुर्भाग्य से, दोनों उपकरण केवल विंडोज पर काम करने लगते हैं। मैंने इसका उल्लेख नहीं किया था, लेकिन मैं लिनक्स पर काम करने वाली किसी चीज़ के लिए कमज़ोर हूं।
otto.poellath
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.