एंड्रॉयड

लिनेक्स में बंदरगाहों की जाँच कैसे करें (उपयोग में पोर्ट)

Ethical Hacking Full Course - Learn Ethical Hacking in 10 Hours | Ethical Hacking Tutorial | Edureka

Ethical Hacking Full Course - Learn Ethical Hacking in 10 Hours | Ethical Hacking Tutorial | Edureka

विषयसूची:

Anonim

नेटवर्क कनेक्टिविटी या एप्लिकेशन-विशिष्ट समस्याओं का निवारण करते समय यह जांचने के लिए पहली चीज़ों में से एक होना चाहिए कि आपके सिस्टम पर वास्तव में कौन से पोर्ट उपयोग में हैं और कौन सा एप्लिकेशन किसी विशिष्ट पोर्ट पर सुन रहा है।

यह लेख बताता है कि कैसे पता लगाया जाए कि कौन सी सेवाएं netstat , ss और lsof कमांड का उपयोग करके किस पोर्ट पर सुन रही हैं। निर्देश सभी Linux और Unix- आधारित ऑपरेटिंग सिस्टम जैसे macOS के लिए लागू होते हैं।

क्या सुन रहा है पोर्ट

नेटवर्क पोर्ट की पहचान उसके नंबर, संबंधित आईपी पते और टीसीपी या यूडीपी जैसे संचार प्रोटोकॉल के प्रकार से होती है।

श्रवण पोर्ट एक नेटवर्क पोर्ट है जिस पर एक एप्लिकेशन या प्रक्रिया संचार समापन बिंदु के रूप में कार्य करती है।

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

आपके पास समान IP पते पर एक ही पोर्ट को सुनने वाली दो सेवाएँ नहीं हो सकती हैं।

उदाहरण के लिए, यदि आप एक अपाचे वेब सर्वर चला रहे हैं जो 80 और 443 बंदरगाहों पर सुनता है और आप Nginx को स्थापित करने का प्रयास करते हैं तो बाद में शुरू करने में विफल हो जाएगा क्योंकि HTTP और HTTPS पोर्ट पहले से ही उपयोग में हैं।

netstat साथ श्रवण पोर्ट की जाँच करें

netstat एक कमांड-लाइन टूल है जो नेटवर्क कनेक्शन के बारे में जानकारी प्रदान कर सकता है।

उन सभी टीसीपी या यूडीपी बंदरगाहों को सूचीबद्ध करने के लिए जिन पर पोर्ट का उपयोग करने वाली सेवाएं और सॉकेट स्थिति सहित निम्नलिखित कमांड का उपयोग किया जाता है:

sudo netstat -tunlp

इस कमांड में उपयोग किए गए विकल्पों के निम्नलिखित अर्थ हैं:

  • -t - टीसीपी पोर्ट दिखाएं। -u - यूडीपी पोर्ट दिखाएं। -n - मेजबानों को हल करने के बजाय संख्यात्मक पते दिखाएं। -l - केवल सुनने वाले पोर्ट दिखाएं। -p - पीआईडी ​​और श्रोता की प्रक्रिया का नाम दिखाएं। यदि आप रूट या sudo उपयोगकर्ता के रूप में कमांड चलाते हैं, तो ही यह जानकारी दिखाई जाती है।

आउटपुट कुछ इस तरह दिखाई देगा:

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 929/master tcp6 0 0:::3306:::* LISTEN 534/mysqld tcp6 0 0:::80:::* LISTEN 515/apache2 tcp6 0 0:::22:::* LISTEN 445/sshd tcp6 0 0:::25:::* LISTEN 929/master tcp6 0 0:::33060:::* LISTEN 534/mysqld udp 0 0 0.0.0.0:68 0.0.0.0:* 966/dhclient

हमारे मामले में महत्वपूर्ण स्तंभ हैं:

  • Proto - सॉकेट द्वारा प्रयुक्त प्रोटोकॉल। Local Address - आईपी पता और पोर्ट संख्या जिस पर प्रक्रिया सुनती है। PID/Program name - पीआईडी ​​और प्रक्रिया का नाम।

sudo netstat -tnlp | grep:22

आउटपुट से पता चलता है कि इस मशीन पर पोर्ट 22 का उपयोग एसएसएच सर्वर द्वारा किया जाता है:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp6 0 0:::22:::* LISTEN 445/sshd

यदि आउटपुट खाली है तो इसका मतलब है कि पोर्ट पर कुछ भी नहीं सुना जा रहा है।

आप मापदंड के आधार पर सूची को फ़िल्टर कर सकते हैं, उदाहरण के लिए, पीआईडी, प्रोटोकॉल, राज्य, और इसी तरह।

netstat अप्रचलित है और इसे ss और ip साथ बदल दिया गया है, लेकिन फिर भी यह नेटवर्क कनेक्शन की जांच करने के लिए सबसे अधिक इस्तेमाल किया जाने वाला कमांड है।

ss साथ श्रवण बंदरगाहों की जाँच करें

ss नया netstat । इसमें नेटस्टैट की कुछ विशेषताओं का अभाव है, लेकिन अधिक टीसीपी राज्यों को उजागर करता है और यह थोड़ा तेज है। कमांड विकल्प ज्यादातर समान होते हैं इसलिए netstat से ss में संक्रमण मुश्किल नहीं है।

Ss के साथ सभी सुनने वाले बंदरगाहों की सूची प्राप्त करने के लिए आप टाइप करेंगे:

sudo ss -tunlp

आउटपुट लगभग वही है जो netstat द्वारा रिपोर्ट किया गया है:

State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd", pid=445, fd=3)) LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master", pid=929, fd=13)) LISTEN 0 128 *:3306 *:* users:(("mysqld", pid=534, fd=30)) LISTEN 0 128 *:80 *:* users:(("apache2", pid=765, fd=4), ("apache2", pid=764, fd=4), ("apache2", pid=515, fd=4)) LISTEN 0 128:22:* users:(("sshd", pid=445, fd=4)) LISTEN 0 100:25:* users:(("master", pid=929, fd=14)) LISTEN 0 70 *:33060 *:* users:(("mysqld", pid=534, fd=33))

श्रवण पोर्ट को lsof जांचें

lsof एक शक्तिशाली कमांड-लाइन उपयोगिता है जो प्रक्रियाओं द्वारा खोली गई फ़ाइलों के बारे में जानकारी प्रदान करती है।

लिनक्स में, सब कुछ एक फाइल है। आप सॉकेट को एक फाइल के रूप में सोच सकते हैं जो नेटवर्क पर लिखती है।

lsof प्रकार के साथ सभी सुनने वाले TCP पोर्ट की सूची प्राप्त करने के लिए:

sudo lsof -nP -iTCP -sTCP:LISTEN

उपयोग किए गए विकल्प इस प्रकार हैं:

  • -n - पोर्ट नंबर को पोर्ट नामों में परिवर्तित न करें। -p - होस्टनाम का समाधान न करें, संख्यात्मक पते दिखाएं। -iTCP -sTCP:LISTEN - टीसीपी राज्य LISTEN के साथ केवल नेटवर्क फाइल दिखाएं।

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 445 root 3u IPv4 16434 0t0 TCP *:22 (LISTEN) sshd 445 root 4u IPv6 16445 0t0 TCP *:22 (LISTEN) apache2 515 root 4u IPv6 16590 0t0 TCP *:80 (LISTEN) mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN) mysqld 534 mysql 33u IPv6 19973 0t0 TCP *:33060 (LISTEN) apache2 764 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) apache2 765 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) master 929 root 13u IPv4 19637 0t0 TCP *:25 (LISTEN) master 929 root 14u IPv6 19638 0t0 TCP *:25 (LISTEN)

अधिकांश आउटपुट कॉलम नाम स्व-व्याख्यात्मक हैं:

  • COMMAND , PID , USER - नाम, pid और उपयोगकर्ता जो पोर्ट से जुड़े प्रोग्राम को चलाता है। NAME - पोर्ट संख्या।

यह जानने के लिए कि किसी विशेष पोर्ट पर कौन सी प्रक्रिया सुन रही है, उदाहरण के लिए, पोर्ट 3306 जिसका आप उपयोग करेंगे:

sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

आउटपुट दिखाता है कि पोर्ट 3306 का उपयोग MySQL सर्वर द्वारा किया जाता है:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN)

अधिक जानकारी के लिए lsof man पेज पर जाएं और इस टूल के अन्य सभी शक्तिशाली विकल्पों के बारे में पढ़ें।

निष्कर्ष

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

टर्मिनल