मैं कैसे पता लगा सकता हूं कि कौन सी प्रक्रिया किसी विशिष्ट पोर्ट पर डेटा भेजती है?


21

मेरी एक सेवा है, एक निश्चित बंदरगाह को खुला रखते हुए।

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

जवाबों:


23

टीसीपी के लिए (हालांकि एक ही दृष्टिकोण एससीटीपी 1 या किसी कनेक्शन-उन्मुख परिवहन प्रोटोकॉल के लिए काम करेगा ), उसी तरह जो सुनने वालों की तलाश में है:

lsof -nPi tcp:the-port

उन पोर्ट पर खुलने वाली टीसीपी सॉकेट वाली प्रक्रियाओं की रिपोर्ट करेगा। यदि आप स्रोत पोर्ट जानते हैं (आपका सर्वर एप्लिकेशन इसके बारे में जान सकता है और लॉग इन कर सकता है), तो आप इसका उपयोग दुष्ट ग्राहक को इंगित करने के लिए कर सकते हैं।

यूडीपी या रॉ सॉकेट्स के लिए, यह मुश्किल होगा, हालांकि मुझे लगता है कि यह सिस्टमटैप या डीट्रेस जैसी चीज काम आ सकती है। संभवतः ऑडिट भी।


1 हालांकि SCTP समर्थन (लिनक्स पर केवल) को जोड़ा गया है lsofसंस्करण 4.86 में, आप उपयोग नहीं कर सकते -iस्पष्ट SCTP सॉकेट लिए पूछने के लिए। यहाँ lsof -nP | grep -w 'SCTP.*:the-port'इसके बजाय एक अनुमान के रूप में उपयोग कर सकते हैं ।


यह मेरे लिए एससीटीपी के लिए काम नहीं कर रहा है।
sudo

1
@ सूडो, देखें संपादित करें
स्टीफन चेज़लस

3

निम्नलिखित का प्रयास करें:

$sudo ss -tp

या:

$sudo netstat -A inet -p

लोकलहोस्ट परिणाम से बचने के लिए:

$sudo netstat -A inet -p | grep -v localhost

केवल सूचीबद्ध कनेक्शनों को सूचीबद्ध करने के लिए:

$sudo netstat -A inet -p | grep -v localhost | grep ESTABLISHED

2

कनेक्शन के प्रकार के आधार पर यह डेटा भेजने के लिए स्थापित होता है इनमें से एक दृष्टिकोण आपको कहीं मिलेगा।

  • tcpdump port 1234इस पोर्ट पर भेजे जा रहे डेटा को प्राप्त करने के लिए उपयोग करें । आप किसी अन्य मशीन पर विश्लेषण करने के लिए विंडसरक जैसे प्रोग्राम का उपयोग कर सकते हैं ( -wविकल्प का उपयोग करके फ़ाइल पर कब्जा कर लिया गया है)। वैकल्पिक रूप से, सीधे Wireshark का उपयोग करें।

  • मामले में यह स्थापित करता है और एक tcp / udp कनेक्शन खोलता है जिसका उपयोग आप कनेक्शन netstatके दूरस्थ आईपी को खोजने के लिए कर सकते हैं ।

  • @StephaneChazelas द्वारा उपलब्ध कराए गए उत्तर के रूप में एक प्रक्रिया की खुली हुई कुर्सियां ​​सूचीबद्ध करें।


1

आप sockstatस्थानीय होस्ट पर आपकी सेवा से कनेक्शन की प्रक्रिया शुरू करने के लिए कमांड का उपयोग कर सकते हैं ।

DESCRIPTION
     The sockstat command lists open Internet or UNIX domain sockets.

बस अपने गंतव्य तक सभी स्रोत कनेक्शनों का मिलान करें। यह TCP / UDP / UNIXsockets के लिए ठीक काम करता है।


0

सोलारिस पर, सभी प्रक्रियाओं पर चलने वाले pfiles को यह दिखाना चाहिए कि किन प्रक्रियाओं में कौन से कनेक्शन खुले हैं। यह कुछ सावधान फिल्म की आवश्यकता होगी, शायद ggrep के -A -B विकल्पों का उपयोग कर ...

लिनक्स पर, netstat -anp --inetकाम करेगा, यहां तक ​​कि बिना lsof स्थापित किए। ( --inetयूनिक्स डोमेन सॉकेट पाने के लिए ड्रॉप करें )

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.