[पूर्ण गाइड] उबंटू पर खुले पोर्ट कैसे जांचें और समस्याओं का समाधान करें

目次

1. परिचय

नेटवर्क प्रबंधन और सर्वर प्रशासन में, पोर्ट की स्थिति को सही‑सही समझना अत्यंत महत्वपूर्ण है। विशेष रूप से Ubuntu का करते समय, खुले पोर्ट और सक्रिय प्रक्रियाओं की जाँच सुरक्षा उपायों को मजबूत करती है और तेज़ समस्या निवारण को संभव बनाती है।

यह लेख Ubuntu पर पोर्ट जाँचने के लिए उपयोग किए जाने वाले मूलभूत कमांड और टूल्स की विस्तृत व्याख्या प्रदान करता है। शुरुआती से मध्यवर्ती उपयोगकर्ताओं के लिए डिज़ाइन किया, यह व्यावहारिक और आसान‑से‑अनुसरण करने योग्य चरण प्रस्तुत करता है, इसलिए अंत तक पढ़ना न भूलें।

侍エンジニア塾

2. पोर्ट क्या है?

2.1 पोर्ट की बुनियादी अवधारणा

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

उदाहरण के लिए, एक वेब सर्वर HTTP संचार के लिए पोर्ट 80 का उपयोग करता है। यदि वही सर्वर SSH कनेक्शन भी स्वीकार करता है, तो वह पोर्ट 22 का उपयोग करता है। चूँकि विभिन्न सेवाओं को उनके पोर्ट नंबरों द्वारा अलग किया जाता है, इसलिए पोर्ट की स्थिति की जाँच नेटवर्क प्रबंधन के लिए आवश्यक है।

2.2 पोर्ट के प्रकार और भूमिकाएँ

पोर्ट को तीन प्रमुख प्रकारों में वर्गीकृत किया जाता है:

  1. वेल‑नॉन पोर्ट (0–1023)
  • विश्व स्तर पर मानकीकृत और व्यापक रूप से उपयोग की जाने वाली सेवाओं को आवंटित।

  • उदाहरण:

    • HTTP: 80
    • HTTPS: 443
    • SSH: 22
  1. रजिस्टर्ड पोर्ट (1024–49151)
  • विशिष्ट अनुप्रयोगों या संगठनों द्वारा उपयोग किए जाते हैं।

  • उदाहरण:

    • MySQL: 3306
    • PostgreSQL: 5432
  1. डायनामिक पोर्ट (49152–65535)
  • अस्थायी पोर्ट, अक्सर क्लाइंट‑साइड संचार के लिए उपयोग किए जाते हैं।

इन वर्गीकरणों को समझने से यह निर्धारित करना आसान हो जाता है कि कोई पोर्ट किस उद्देश्य से उपयोग हो रहा है।

3. Ubuntu पर पोर्ट कैसे जाँचें

Ubuntu पोर्ट की स्थिति जाँचने के लिए विभिन्न टूल्स प्रदान करता है। यहाँ हम चार व्यावहारिक कमांड की व्याख्या करेंगे।

3.1 ss कमांड का उपयोग

ss कमांड Linux में एक शक्तिशाली नेटवर्क प्रबंधन टूल है। यह तेज़ है और विस्तृत कनेक्शन जानकारी प्रदान करता है।

बेसिक कमांड:

sudo ss -ltn

विकल्पों की व्याख्या:

  • -l : केवल सुन रहे (listening) पोर्ट दिखाता है।
  • -t : केवल TCP प्रोटोकॉल कनेक्शन दिखाता है।
  • -n : पते और पोर्ट नंबर को संख्यात्मक रूप में प्रदर्शित करता है।

उदाहरण आउटपुट:

State       Recv-Q Send-Q      Local Address:Port        Peer Address:Port  
LISTEN      0      128              0.0.0.0:22               0.0.0.0:*

3.2 netstat कमांड का उपयोग

netstat एक पारंपरिक नेटवर्क प्रबंधन टूल है। यद्यपि इसे धीरे‑धीरे ss द्वारा प्रतिस्थापित किया जा रहा है, फिर भी यह कई सिस्टमों पर उपलब्ध है।

बेसिक कमांड:

sudo netstat -ltn

उदाहरण आउटपुट:

Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN

3.3 lsof कमांड का उपयोग

lsof कमांड किसी विशिष्ट पोर्ट का उपयोग करने वाली प्रक्रियाओं की पहचान करने में सहायक है।

विशिष्ट पोर्ट की जाँच:

sudo lsof -i :80

उदाहरण आउटपुट:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2   1234  www    4u   IPv4  12345 0t0      TCP *:http (LISTEN)

3.4 nmap कमांड का उपयोग

nmap टूल नेटवर्क स्कैनिंग और सुरक्षा निदान में विशेषज्ञता रखता है।

लोकलहोस्ट स्कैन:

sudo nmap localhost

उदाहरण आउटपुट:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-12-21 18:00 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http

मुख्य बिंदु:

  • खुले पोर्ट और उनके संबंधित सेवाओं को प्रदर्शित करता है।
  • बाहरी सर्वरों को स्कैन करने के लिए पूर्व अनुमति आवश्यक है।

4. फ़ायरवॉल सेटिंग्स की जाँच

Ubuntu में, फ़ायरवॉल का उपयोग सुरक्षा को बढ़ाने के लिए आम है। ufw (Uncomplicated Firewall) एक व्यापक रूप से उपयोग किया जाने वाला, सरल yet शक्तिशाली टूल है। इस भाग में हम ufw का उपयोग करके पोर्ट अनुमतियों की जाँच और संशोधन कैसे करें, समझेंगे।

4.1 फ़ायरवॉल की स्थिति जाँचना

फ़ायरवॉल स्थिति जाँचें:

sudo ufw status verbose

उदाहरण आउटपुट:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere

व्याख्या:

  • स्थिति: सक्रिय : फ़ायरवॉल सक्षम है।
  • लॉगिंग: चालू : फ़ायरवॉल गतिविधि को लॉग करता है।
  • डिफ़ॉल्ट: इनकमिंग को अस्वीकार (deny), आउटगोइंग को अनुमति (allow) : डिफ़ॉल्ट रूप से इनकमिंग कनेक्शन को अस्वीकार करता है और आउटगोइंग को अनुमति देता है।
  • ALLOW : निर्दिष्ट करता है कि कौन से पोर्ट/सेवाएँ अनुमति प्राप्त हैं (जैसे, SSH और HTTP)।

नोट: यदि फ़ायरवॉल अक्षम है (स्थिति: निष्क्रिय), इसे सक्रिय करें:

sudo ufw enable

4.2 पोर्ट्स को अनुमति देना या ब्लॉक करना

एक विशिष्ट पोर्ट की अनुमति दें:

sudo ufw allow 22/tcp

व्याख्या:

  • पोर्ट 22 (SSH) पर TCP कनेक्शन की अनुमति देता है।

एक विशिष्ट पोर्ट को ब्लॉक करें:

sudo ufw deny 80/tcp

व्याख्या:

  • पोर्ट 80 (HTTP) तक पहुंच को ब्लॉक करता है।

केवल एक विशिष्ट IP पते की अनुमति दें:

sudo ufw allow from 192.168.1.100 to any port 22 proto tcp

व्याख्या:

  • केवल IP पता 192.168.1.100 से SSH कनेक्शन की अनुमति देता है।

4.3 फ़ायरवॉल सेटिंग्स को रीसेट करना और समीक्षा करना

फ़ायरवॉल सेटिंग्स को रीसेट करने और फिर से शुरू करने के लिए, निम्न कमांड का उपयोग करें:

sudo ufw reset

यह कमांड सभी नियमों को साफ़ करता है और फ़ायरवॉल को उसकी डिफ़ॉल्ट स्थिति में पुनर्स्थापित करता है। परिवर्तन करने के बाद हमेशा नियमों की समीक्षा करें।

5. व्यावहारिक उदाहरण: एक विशिष्ट पोर्ट की जाँच

यहाँ, हम उदाहरण के रूप में SSH (पोर्ट 22) की स्थिति कैसे जांचें, यह प्रदर्शित करेंगे।

5.1 पोर्ट स्थिति की जाँच

उदाहरण कमांड:

sudo ss -ltn | grep ':22'

उदाहरण आउटपुट:

LISTEN      0      128        0.0.0.0:22            0.0.0.0:*

मुख्य बिंदु:

  • यदि आउटपुट में LISTEN दिखता है, तो पोर्ट खुला है और कनेक्शन की प्रतीक्षा कर रहा है।
  • 0.0.0.0 का अर्थ है कि सर्वर किसी भी IP पते से कनेक्शन स्वीकार करता है।

5.2 पोर्ट का उपयोग करने वाली प्रक्रिया की पहचान

उदाहरण कमांड:

sudo lsof -i :22

उदाहरण आउटपुट:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd      1234  root   3u   IPv4  56789 0t0      TCP *:ssh (LISTEN)

मुख्य बिंदु:

  • sshd वह डेमन प्रक्रिया है जो SSH कनेक्शन को प्रबंधित करती है।
  • प्रक्रिया आईडी (PID) का उपयोग सेवा को रोकने या पुनः आरंभ करने के लिए किया जा सकता है।

प्रक्रिया को रोकने के लिए:

sudo kill 1234

5.3 समस्या निवारण उदाहरण

समस्या: पोर्ट खुला नहीं है या पहुंच योग्य नहीं है।

समाधान के चरण:

  1. फ़ायरवॉल सेटिंग्स की जाँच करें:
sudo ufw status verbose
  1. यदि पोर्ट ब्लॉक है, तो उसे अनुमति दें:
sudo ufw allow 22/tcp
  1. आवश्यक होने पर सेवा की जाँच करें और पुनः आरंभ करें:
sudo systemctl restart ssh

6. पोर्ट सुरक्षा सर्वोत्तम प्रथाएँ

पोर्ट्स का प्रबंधन सीधे नेटवर्क सुरक्षा से जुड़ा है। नीचे सुरक्षा बढ़ाने के मुख्य बिंदु दिए गए हैं।

6.1 अनावश्यक पोर्ट्स को बंद करना

संभावित हमलों को रोकने के लिए अप्रयुक्त पोर्ट्स को बंद किया जाना चाहिए।

उदाहरण: पोर्ट 80 को बंद करना

sudo ufw deny 80/tcp

6.2 पोर्ट स्कैनिंग को रोकना

पोर्ट स्कैनिंग वह तकनीक है जिसका उपयोग हमलावर सिस्टम में कमजोरियों को खोजने के लिए करते हैं। निम्न उपाय इसे रोकने में मदद कर सकते हैं:

  1. फ़ायरवॉल नियमों को सुदृढ़ करना:
sudo ufw default deny incoming
  1. लॉग्स की निगरानी:
sudo tail -f /var/log/ufw.log
  1. इंट्रूज़न डिटेक्शन टूल्स का उपयोग:
  • fail2ban जैसे टूल स्वचालित रूप से संदिग्ध एक्सेस प्रयासों को ब्लॉक कर सकते हैं।

7. निष्कर्ष

इस लेख में उबंटू पर पोर्ट्स की जाँच, ufw का उपयोग करके फ़ायरवॉल सेटिंग्स का प्रबंधन, और सुरक्षा उपायों को लागू करने के विस्तृत चरण प्रदान किए गए हैं।

7.1 मुख्य बिंदु

  • पोर्ट्स को समझना: पोर्ट्स संचार गेटवे के रूप में कार्य करते हैं और इन्हें वेल‑नॉन्स, रजिस्टर्ड और डायनामिक पोर्ट्स में वर्गीकृत किया जाता है।
  • पोर्ट्स की जाँच के लिए कमांड्स का उपयोग:
  • ss, netstat, lsof, और nmap जैसी कमांड्स पोर्ट की स्थिति और चल रही प्रक्रियाओं की जाँच में मदद करती हैं।
  • फ़ायरवॉल प्रबंधन:
  • ufw का उपयोग विशिष्ट पोर्ट्स को अनुमति देने या ब्लॉक करने के लिए किया जा सकता है, जिससे सुरक्षा बढ़ती है।
  • सुरक्षा उपाय:
  • अनावश्यक पोर्ट्स को बंद करना, लॉग्स की निगर करना, और सुरक्षा टूल्स का उपयोग करना सुरक्षित नेटवर्क वातावरण बनाए रखने में मदद करता है।

7.2 भविष्य के अनुप्रयोग

पोर्ट प्रबंधन नेटवर्क सुरक्षा का एक मूलभूत पहलू है। इस गाइड से प्राप्त ज्ञान को लागू करके एक सुरक्षित सर्वर वातावरण बनाए रखें।

अक्सर पूछे जाने वाले प्रश्न: उबंटू पर पोर्ट्स की जाँच के बारे में अक्सर पूछे जाने वाले प्रश्न

Q1. यदि उबंटू पर कोई पोर्ट खुला नहीं है तो मुझे क्या करना चाहिए?

उ:
यदि कोई पोर्ट खुला नहीं है, तो निम्नलिखित चरणों का पालन करें:

  1. फ़ायरवॉल सेटिंग्स जाँचें:
sudo ufw status verbose

यदि फ़ायरवॉल पोर्ट को ब्लॉक कर रहा है, तो निम्न कमांड से इसे अनुमति दें:

sudo ufw allow [port number]/tcp
  1. सुनिश्चित करें कि संबंधित सेवा चल रही है:
sudo systemctl status [service name]

उदाहरण: SSH के लिए, उपयोग करें:

sudo systemctl status ssh

यदि सेवा चल नहीं रही है, तो इसे पुनः प्रारंभ करें:

sudo systemctl restart [service name]
  1. जाँचें कि सेवा सही पोर्ट का उपयोग कर रही है या नहीं:

कॉन्फ़िगरेशन फ़ाइल (जैसे, SSH के लिए, /etc/ssh/sshd_config देखें) को सत्यापित करें कि सही पोर्ट सेट है।

Q2. ss और netstat में क्या अंतर है?

उ:
ss और netstat दोनों नेटवर्क कनेक्शन की जाँच के उपकरण हैं, लेकिन इनके बीच मुख्य अंतर हैं:

  • ss:
  • आधुनिक Linux सिस्टम के लिए अनुशंसित।
  • तेज़ और अधिक विस्तृत जानकारी प्रदान करता है।
  • उदाहरण कमांड: sudo ss -ltn
  • netstat:
  • एक पुराना उपकरण जो धीरे‑धीरे अप्रचलित हो रहा है।
  • कई सिस्टमों में संगतता के लिए अभी भी उपलब्ध है।
  • उदाहरण कमांड: sudo netstat -ltn

नए सिस्टमों के लिए, ss पसंदीदा विकल्प है।

Q3. मैं कैसे पता लगा सकता हूँ कि कोई मेरे पोर्ट्स को स्कैन कर रहा है?

उ:
पोर्ट स्कैनिंग का पता लगाने के लिए, निम्न विधियों को आज़माएँ:

  1. फ़ायरवॉल लॉग्स जाँचें:
sudo tail -f /var/log/ufw.log

असामान्य IP पतों या बार‑बार कनेक्शन प्रयासों की तलाश करें।

  1. इंट्रूज़न डिटेक्शन सिस्टम (IDS) का उपयोग करें:
  • fail2ban या Snort जैसे टूल्स को स्थापित और कॉन्फ़िगर करें ताकि दुर्भावनापूर्ण एक्सेस को स्वचालित रूप से ब्लॉक किया जा सके।
  1. nmap से अपने सर्वर को स्कैन करें:
sudo nmap localhost

खुले पोर्ट्स की जाँच करें और अनावश्यक पोर्ट्स को बंद करें।

Q4. मैं कैसे जाँच सकता हूँ कि कौन सी प्रक्रिया किसी विशिष्ट पोर्ट का उपयोग कर रही है?

उ:
किसी विशिष्ट पोर्ट का उपयोग करने वाली प्रक्रियाओं की पहचान करने के लिए lsof कमांड का उपयोग करें:

sudo lsof -i :[port number]

उदाहरण: पोर्ट 80 की जाँच करने के लिए:

sudo lsof -i :80

उदाहरण आउटपुट:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2   1234  www    4u   IPv4  12345 0t0      TCP *:http (LISTEN)

Q5. मैं ufw का उपयोग करके केवल एक विशिष्ट IP पते को कैसे अनुमति दे सकता हूँ?

उ:
केवल एक विशिष्ट IP पते से एक्सेस की अनुमति देने के लिए, निम्न कमांड का उपयोग करें:

sudo ufw allow from [IP address] to any port [port number] proto tcp

उदाहरण: केवल IP पता 192.168.1.100 से SSH एक्सेस (पोर्ट 22) की अनुमति दें:

sudo ufw allow from 192.168.1.100 to any port 22 proto tcp

Q6. मैं किसी सेवा के पोर्ट नंबर को कैसे बदल सकता हूँ?

उ:
सेवा के पोर्ट नंबर को बदलने के लिए, उसकी कॉन्फ़िगरेशन फ़ाइल को संपादित करें। यहाँ SSH का एक उदाहरण है:

  1. कॉन्फ़िगरेशन फ़ाइल खोलें:
sudo nano /etc/ssh/sshd_config
  1. Port सेटिंग खोजें और पोर्ट नंबर बदलें:
Port 2222
  1. SSH सेवा को पुनः प्रारंभ करें:
sudo systemctl restart ssh
  1. फ़ायरवॉल में नए पोर्ट की अनुमति दें:
sudo ufw allow 2222/tcp

Q7. क्या मैं एक साथ कई पोर्ट्स की अनुमति दे सकता हूँ?

उ:
हाँ, आप निम्न विधियों का उपयोग करके एक साथ कईर्ट्स की अनुमति दे सकते हैं:

  1. पोर्ट्स की एक रेंज की अनुमति दें:
sudo ufw allow 1000:2000/tcp

व्याख्या: पोर्ट 1000 से 2000 तक TCP कनेक्शन की अनुमति देता है।

  1. कई विशिष्ट पोर्ट्स की अनुमति दें:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
侍エンジニア塾