विशिष्ट पोर्ट पर टीसीपी ट्रैफ़िक की निगरानी करें


49

मैंने इसके लिए काफी खोज की है, लेकिन काम के उदाहरण के साथ नहीं आ सकता है।

मेरा उद्देश्य आने वाले कनेक्शनों को देखने और उन्हें एक पाठ फ़ाइल में लिखने के लिए एक विशिष्ट पोर्ट पर टीसीपी ट्रैफिक की निगरानी करना है। पकड़ यह है कि मुझे प्रत्येक पंक्ति पर टाइमस्टैम्प की आवश्यकता है जब ग्राहक दूसरे से जुड़ा हुआ हो।

मैंने पहले से ही नेटस्टैट, नैम्प, और टैप्टैक को समाप्त कर दिया है, लेकिन टाइमस्टैम्प का समर्थन नहीं करता है।

मैं सोच रहा था कि अगर मैं एक विशिष्ट स्थानीय बंदरगाह की निगरानी करता हूं और एक कनेक्शन के लिए पाठ लिखता हूं, तो एक लाइन शेल खोल काम कर सकता है, जब एक कनेक्शन बनाया जाता है, तो प्रत्येक पंक्ति पर तारीख को संक्षिप्त करें।

मैं इसके साथ खेल रहा था:

netstat -ano|grep 443|grep ESTABLISHED

साथ में यह भी:

tcptrack -i eth0 port 443

लेकिन न तो मेरी जरूरतों के अनुरूप है क्योंकि मुझे उस समय की जरूरत है जब कनेक्शन आता है।

यदि आपके पास कोई सुझाव है या मुझे सही दिशा में इंगित कर सकता है तो इसकी बहुत सराहना की जाएगी।

धन्यवाद। :)

linux  bash 

Haha stackoverflow से माइग्रेट किया गया है लेकिन unix / linux में माइग्रेट करने की आवश्यकता है
Kolob Canyon

जवाबों:


70

संपादित करें : मैं अभी भी इस साल के लिए अपवोट हो रहा हूं। कृपया इस उत्तर के लिए मत जाइए, यहाँ उपयोगiptables करने वाला उत्तर मेरी राय में कहीं बेहतर है।


tcpdump port 443 and '(tcp-syn|tcp-ack)!=0'

या केवल tcp-syn, या केवल tcp-ack(मेरा अनुमान है कि एक होगा), जो आप की जरूरत पर निर्भर करता है।


प्रत्येक कनेक्शन के लिए होस्टनाम दिखाने के बजाय, क्या आईपी के साथ इसे ओवरराइड करने का एक तरीका है?

हां, -ntcpdump (मैन tcpdump: -n) के पते (यानी, होस्ट एड्रेस, पोर्ट नंबर, आदि) को नामों में परिवर्तित न करें। )
जुआन

5
मेरा तर्क है कि कर्नेल लॉग को स्पैम करना वास्तव में बेहतर नहीं है। ;)
डैनियल बी

1
आह, लेकिन मैं एक उचित रूप से कॉन्फ़िगर करता हूं, जहां लॉग्स को निश्चित रूप से जाना चाहिए: पी लेकिन हे, यह जवाब अभी भी यहां है अगर यह एक सौदा ब्रेकर है :)
Wrikken

1
@ इसके लिए कर्नेल लॉग का उपयोग करने के साथ समस्या को हल करें, जब आप tcpdump से बाहर ctrl + c सब कुछ पहले की तरह बने रहे तो अपने समाधान का उपयोग करें। यदि आप नियम को मैन्युअल रूप से नहीं निकालते हैं, तो iptables समाधान का मतलब "आश्चर्य" को पीछे छोड़ना है। यह आश्चर्य कुछ ही समय में एक पूर्ण रूट डिस्क होने में अनुवाद कर सकता है। क्षमा करें, लेकिन मैं इसे बढ़ा रहा हूं: (:
जॉन ब्लैकबेरी

31

आप इसके लिए लिनक्स कर्नेल में iptables समर्थन का उपयोग कर सकते हैं। उल्टा यह है कि यह मामूली उपयोगी होने के लिए किसी अतिरिक्त सॉफ्टवेयर की आवश्यकता नहीं है। नकारात्मक पक्ष यह है कि इसे स्थापित करने के लिए रूट विशेषाधिकारों की आवश्यकता होती है (लेकिन यह देखते हुए कि आप पोर्ट 443 के बारे में बात कर रहे हैं, जो एक विशेषाधिकार प्राप्त बंदरगाह है, आपको संभवतः अधिकांश समाधानों के साथ रूट विशेषाधिकारों की आवश्यकता है)।

कुछ के साथ एक iptables नियम जोड़ें:

sudo iptables -I INPUT -p tcp --dport 443 --syn -j LOG --log-prefix "HTTPS SYN: "

( -I INPUTअपने स्वाद के अनुरूप हिस्सा समायोजित करें ।)

जब नियम चालू हो जाता है, तो कर्नेल द्वारा एक सिसलॉग प्रविष्टि का उत्सर्जन किया जाएगा। उदाहरण के लिए, इनपुट नियम के साथ, लॉग प्रविष्टि कुछ इस तरह दिख सकती है:

Dec 5 09:10:56 होस्टनाम कर्नेल: [1023963.185332] HTTPS SYN: IN = ifX OUT = MAC = 80: 80: 80: 80: 80: 80: 80: 80: 80: 80: 80: 80: 80: 08: 00 SRC = ABCD DST = WXYZ LEN = 52 TOS = 0x00 PREC = 0x20 TTL = 119 ID = 11901 DF PROTO = TCP SPT = 37287 DPT = 443 विन्डोज़ = 8,02 RES = 0x00 SYN URGP = 0

फिर आप इस जानकारी के साथ उपयोगी कुछ करने के लिए किसी भी रन-ऑफ-द-मिल लॉग मॉनिटरिंग टूल का उपयोग कर सकते हैं। यदि आपका syslog कार्यान्वयन इसका समर्थन करता है, तो आप इन्हें एक अलग लॉग फ़ाइल में भी निर्देशित कर सकते हैं, बिना किसी अतिरिक्त सॉफ़्टवेयर के साथ टाइमस्टैम्प किए गए फ़ाइल से कनेक्शन डेटा लिखने के लिए अपनी आवश्यकता को प्रभावी ढंग से पूरा कर सकते हैं।

ध्यान दें कि LOGलक्ष्य एक गैर-समाप्ति लक्ष्य है, जिसका अर्थ है कि इसका पालन करने वाले किसी भी नियम का अभी भी मूल्यांकन किया जाएगा, और पैकेट को या तो लॉग नियम द्वारा अस्वीकार या स्वीकार नहीं किया जाएगा। यह LOGफ़ायरवॉल नियमों को डीबग करने के लिए भी लक्ष्य को उपयोगी बनाता है।

अपने लॉग को बाढ़ से बचने के लिए, इसके limitसाथ संयोजन में मॉड्यूल का उपयोग करने पर विचार करें। विवरण के लिए iptables (8) मैन पेज देखें।


क्या यह एक अजगर स्क्रिप्ट को ट्रिगर करना संभव है?
कार्ल ज़िलर 14

एक बार जब आप कर रहे हैं, तो इन IP तालिकाओं के नियमों को हटाना न भूलें, अन्यथा वे नियम के आधार पर लॉग्स को बहुत अधिक स्पैम कर देंगे। digitalocean.com/community/tutorials/…
मो बेगी

26

माइक्रो-दूसरा संकल्प

डिफ़ॉल्ट रूप से, tcpdump उपयोगिता माइक्रो-सेकंड रिज़ॉल्यूशन के साथ समय की रिपोर्ट करेगी। उदाहरण के लिए:

$ sudo tcpdump -i any port 443

निम्न के समान आउटपुट दिखाएगा:

12: 08: 14.028945 IP localhost.33255> localhost.https: फ्लैग्स [S], 1828376761 seq, 43690 जीतें, विकल्प [mss 65495, sackOK, TS 108010971 ecr 0, nop, wscale 7], लंबाई 0
12:08: लंबाई। 14.028959 IP localhost.https> localhost.33255: झंडे [आर।], Seq 0, ack 1828376762, जीत 0, लंबाई 0

Tcpdump विकल्पों की पूरी सूची के लिए tcpdump (8) और आपके द्वारा उपयोग किए जा सकने वाले फ़िल्टर के पूर्ण सिंटैक्स के लिए pcap-filter (7) देखें।


5

443 एन्क्रिप्टेड ट्रैफ़िक है - इस पोर्ट पर किसी भी तरह से हेड या ट्रैफ़िक बनाना मुश्किल है:

तुम कर सकते हो

yum इंस्टॉल एनक्रेप या एप्ट-गेट इंस्‍टॉल एनक्रेप

तो भागो

ngrep -W byline -d any port 443 -q

2

आपको अन्य मशीनों से आने वाले और बाहर जाने वाले पैकेटों की निगरानी के लिए भी इसकी आवश्यकता हो सकती है।

tcpflow -i eth0 -c port 7891

( -iनेटवर्क का उल्लेख करने के लिए विकल्प , -cकंसोल में पैकेट प्रिंट करने का विकल्प )


यह वास्तव में एक टिप्पणी और है नहीं मूल प्रश्न का उत्तर। किसी लेखक से स्पष्टीकरण मांगने या उसका अनुरोध करने के लिए, उनके पोस्ट के नीचे एक टिप्पणी छोड़ दें - आप हमेशा अपने स्वयं के पोस्ट पर टिप्पणी कर सकते हैं, और एक बार आपके पास पर्याप्त प्रतिष्ठा होने पर आप किसी भी पोस्ट पर टिप्पणी कर पाएंगे । कृपया पढ़ें मुझे टिप्पणी करने के लिए 50 प्रतिष्ठा की आवश्यकता क्यों है? मैं इसके बजाय क्या कर सकता हूं?
DavidPostill


0

यदि आपको एक स्थायी समाधान की आवश्यकता है जो हमेशा ब्याज के बंदरगाहों पर यातायात की निगरानी करेगा, तो मैं क्यूओएस (लिनक्स में टीसी कमांड) का उपयोग करने का सुझाव देता हूं। tc थोड़ा cryptic और undocumented है, इसलिए मैं वास्तविक समय की निगरानी के लिए QoS और netdata को सेटअप करने के लिए FireQoS का उपयोग करता हूं।

अधिक जानकारी के लिए इसे देखें: https://github.com/firehol/netdata/wiki/You-should-install-QoS-on-all-your-servers


मैं कहूंगा कि यह लॉगिंग कनेक्शन के लिए थोड़े से अधिक मार है, जहां iPTables + --log काम करेगा।
djsmiley2k - CoW

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