SSD Nodes Learn
मार्गदर्शक Matt Connorद्वारे Matt Connor · अपडेटेड 2026-07-24

Port म्हणजे काय आणि Linux मध्ये कसे तपासावे

Port म्हणजे काय आणि Linux मध्ये ss command वापरून listening services कशा शोधायच्या ते शिका. TCP आणि UDP ports मधील फरक आणि त्यांचे महत्त्व समजून घ्या.

Port म्हणजे नक्की काय असते

Port म्हणजे एक असा क्रमांक आहे जो एकाच वेळी अनेक सेवा (services) कोणत्याही गोंधळाशिवाय चालवण्यास मदत करतो. तुमच्या VPS ला एक IP address असतो, परंतु त्यावर एकाच वेळी web server, SSH server आणि database चालू असू शकतात. जेव्हा एखादा packet येतो, तेव्हा operating system ला तो कोणत्या सेवेसाठी आहे हे माहित असणे आवश्यक असते. Port number याचे उत्तर देते. Web traffic port 443 वर जातो, तर SSH port 22 वर जातो. IP address packet ला तुमच्या server पर्यंत पोहोचवतो; port त्याला त्या server वरील योग्य program कडे पाठवतो.

Port हा 16-bit number आहे: 16 bits मुळे 0 ते 65535 पर्यंत अंक मिळतात. 0 हा क्रमांक आरक्षित आहे, त्यामुळे प्रत्यक्षात ports 1 ते 65535 पर्यंत असतात. 1024 पेक्षा कमी असलेले ports "well-known" ports आहेत आणि ते उघडण्यासाठी root permissions आवश्यक असतात, म्हणूनच standard services तिथे असतात: SSH साठी 22, HTTP साठी 80, HTTPS साठी 443 आणि DNS साठी 53. 1024 पेक्षा जास्त असलेले सर्व क्रमांक सामान्य programs साठी वापरले जाऊ शकतात.

दोन प्रकारचे ports असतात: TCP आणि UDP. एका प्रकारचा port number दुसऱ्या प्रकारच्या त्याच क्रमांकापेक्षा वेगळा असतो. TCP हा connection-based protocol आहे जो SSH, HTTP आणि databases सारख्या बहुतेक services वापरतात. UDP हा connectionless आहे आणि तो DNS आणि काही VPNs सारख्या गोष्टींसाठी वापरला जातो. जेव्हा तुम्ही firewall उघडता, तेव्हा तुम्ही सहसा कोणता प्रकार वापरायचा ते नमूद करता, उदाहरणार्थ 22/tcp.

Listening म्हणजे program port वर वाट पाहत आहे

ज्या program ला connections स्वीकारायचे आहेत, तो kernel ला एखाद्या port वर "listen" करण्यास सांगतो. त्या क्षणापासून, त्या machine वर तो port उघडला जातो आणि firewall च्या नियमांनुसार, तिथे येणाऱ्या कोणत्याही विनंतीला तो program प्रतिसाद देतो. ज्या port वर काहीही listen करत नाही, तो connections नाकारतो. त्यामुळे कोणत्याही security check मधील पहिला प्रश्न हा असतो: काय listen करत आहे आणि कुठे.

याचे उत्तर मिळवण्यासाठी ss ही command आहे:

sudo ss -tlnp

यातील flags चा अर्थ असा आहे: TCP (t), फक्त listening sockets (l), numeric ports (n, ज्यामुळे तुम्हाला 22 दिसेल, ssh नाही), आणि मालकीचा process (p). एक सामान्य निकाल:

State   Recv-Q  Local Address:Port   Process
LISTEN  0       0.0.0.0:22           sshd
LISTEN  0       127.0.0.1:5432       postgres
LISTEN  0       [::]:80              nginx

Process column तुम्हाला सांगतो की कोणत्या program कडे प्रत्येक port चा अधिकार आहे, ज्यामुळे तुम्ही चुकून चालू राहिलेल्या गोष्टी शोधू शकता.

Local Address column हा महत्त्वाचा भाग आहे

प्रत्येक port च्या समोरचा address काळजीपूर्वक वाचा, कारण तो कोण त्या service पर्यंत पोहोचू शकते हे ठरवतो. तुम्हाला सतत तीन प्रकार पाहण्यास मिळतील.

0.0.0.0:22 म्हणजे "या machine वर असलेल्या प्रत्येक IPv4 address वर listen करा," ज्यामध्ये public address चा देखील समावेश आहे. firewall परवानगी देत असल्यास, इंटरनेटवरून या service पर्यंत पोहोचता येते.

[::]:80 म्हणजे IPv6 साठी तेच: प्रत्येक IPv6 address वर listen करा, public address सह. अनेक programs बाय डिफॉल्ट येथे bind होतात, आणि Linux वर :: socket अनेकदा IPv4 देखील स्वीकारते.

127.0.0.1:5432 म्हणजे "फक्त loopback वर listen करा." 127.0.0.1 हा असा address आहे जो machine स्वतःशी संवाद साधण्यासाठी वापरते, आणि तो इतर कोठूनही routable नाही. येथे bind केलेली service फक्त त्याच server वरून पोहोचता येते, इंटरनेटवरून कधीही नाही, तुमचे firewall काहीही सांगत असले तरीही. वरील Postgres ची ओळ रचनेनुसार सुरक्षित आहे.

यावरून एक व्यावहारिक नियम निघतो: डेटाबेस, cache, किंवा admin panel जे फक्त तुमच्या स्वतःच्या applications वापरतात, त्यांनी 0.0.0.0 ऐवजी 127.0.0.1 ला bind केले पाहिजे. जर एखादी service public address वर listen करत नसेल, तर अटॅकर (attacker) साठी तिथे पोहोचणे शक्य नाही.

Listening आणि Reachable यामध्ये फरक आहे

एक अधिक स्पष्टीकरण गोंधळ कमी करण्यास मदत करेल. machine वर port उघडा असणे (म्हणजेच program listen करत आहे) आणि तो port बाहेरून पोहोचण्यायोग्य (reachable) असणे (म्हणजेच firewall परवानगी देते) या दोन वेगवेगळ्या गोष्टी आहेत. रिमोट क्लायंटला connect होण्यासाठी या दोन्ही गोष्टी सत्य असणे आवश्यक आहे.

त्यामुळे नियंत्रणाचे दोन स्तर आहेत. प्रत्येक service चा bind address सेट करून तुम्ही काय listen करायचे ते ठरवता. आणि firewall द्वारे बाहेरील जग काय पोहोचू शकते हे तुम्ही ठरवता. एक व्यवस्थित चालणारे server दोन्ही वापरते: services फक्त जिथे आवश्यक आहे तिथेच bind होतात, आणि firewall अशा सर्व गोष्टी नाकारते ज्या तुम्ही स्पष्टपणे परवानगी दिली नाही. ss वापरून काय listen होत आहे ते वाचणे ही पहिली पायरी आहे; firewall कशाला परवानगी देते हे ठरवणे ही दुसरी पायरी आहे, जी firewalls 101 with UFW मध्ये दिली आहे.

येथे एक सूक्ष्मता आहे ज्याचा लोकांना त्रास होतो. IPv4 आणि IPv6 वेगळे आहेत, आणि फक्त IPv4 कव्हर करणारा firewall IPv6 वरील [::] services उघड्या ठेवतो. त्या विशिष्ट जाळ्यात the IPv6 firewall trap हा लेख आहे.

FAQ

माझ्या Linux server वर कोणते ports उघडे आहेत हे मी कसे पाहीन?

TCP साठी sudo ss -tlnp किंवा UDP साठी sudo ss -ulnp चालवा. यामुळे प्रत्येक listening socket, port, तो ज्या local address ला bind आहे तो, आणि त्याचा मालक असलेला process यांची यादी मिळते. Local Address column वाचा: 0.0.0.0 किंवा [::] म्हणजे service नेटवर्कसाठी उपलब्ध आहे, तर 127.0.0.1 म्हणजे ती फक्त machine वरच listen करते.

0.0.0.0 आणि 127.0.0.1 मध्ये काय फरक आहे?

0.0.0.0 म्हणजे "सर्व IPv4 addresses वर listen करा," ज्यामध्ये public address चा समावेश आहे, त्यामुळे service नेटवर्कवरून पोहोचता येते. 127.0.0.1 म्हणजे loopback, machine स्वतःशी संवाद साधण्यासाठी वापरत असलेला address, आणि तो इतर कोठूनही routable नाही, त्यामुळे त्याला bind केलेली service फक्त स्थानिक पातळीवर (locally) पोहोचता येते. अंतर्गत services 127.0.0.1 ला bind करा जेणेकरून त्या कधीही उघड (exposed) होणार नाहीत.

service चालवण्यासाठी मला firewall मध्ये port उघडण्याची गरज आहे का?

फक्त अशा services साठी ज्या इतर machines वरून पोहोचवणे आवश्यक आहे. 127.0.0.1 ला bind केलेल्या service ला कोणत्याही firewall rule ची गरज नसते कारण बाहेरील काहीही तिच्यापर्यंत पोहोचू शकत नाही. 0.0.0.0 किंवा [::] वरील service ला traffic परवानगी देण्यासाठी firewall rule ची आवश्यकता असते, आणि जोपर्यंत तुम्ही एक rule जोडत नाही तोपर्यंत ती बाय डिफॉल्ट नाकारली (denied) गेली पाहिजे.

TCP port आणि UDP port मध्ये काय फरक आहे?

TCP हा connection-based आहे आणि SSH, web servers आणि databases सारख्या बहुतेक services द्वारे वापरला जातो. UDP हा connectionless आहे आणि DNS आणि काही VPNs द्वारे वापरला जातो. TCP आणि UDP मधील तोच क्रमांक असलेले ports वेगळे असतात, म्हणून 53/tcp आणि 53/udp हे भिन्न आहेत. जेव्हा तुम्ही firewall rules लिहिता, तेव्हा तुम्ही protocol नमूद करता, उदाहरणार्थ 22/tcp.