जांचें कि क्या पोर्ट एक लिनक्स सर्वर पर खुला या बंद है?


209

यदि कोई पोर्ट लिनक्स सर्वर पर सुन रहा है तो मैं कैसे जांच सकता हूं?


2
यह बिल्कुल स्पष्ट नहीं है कि आप क्या पूछ रहे हैं। "खुला" से आपका क्या तात्पर्य है? क्या आपका मतलब है कि कुछ सर्वर उस पोर्ट पर सुन रहा है? या आप सिस्टम फ़ायरवॉल द्वारा अनुमति दी है मतलब है? और क्या?
डेविड श्वार्ट्ज

मुझे लगता है कि मेरे सर्वर पर एक पोर्ट ब्लॉक हो रहा है और इसे फिर से अनब्लॉक / ओपन करना चाहते हैं।
जेम्स एंडरसन

14
netstat -an | grep PORTNUMBER | grep -i listenयदि आउटपुट खाली है, तो पोर्ट उपयोग में नहीं है।
ऑटोमेटिक्स

जवाबों:


187

आप देख सकते हैं कि क्या कोई प्रक्रिया टीसीपी या यूडीपी पोर्ट पर सुनती है netstat -tuplen

यह जांचने के लिए कि क्या कुछ पोर्ट बाहर से सुलभ हैं (यह संभवतः आप क्या चाहते हैं) आप किसी अन्य सिस्टम से नैंप जैसे पोर्ट स्कैनर का उपयोग कर सकते हैं । उसी होस्ट पर नैंप चलाना जो आप जांचना चाहते हैं, वह आपके उद्देश्य के लिए काफी बेकार है।


54
जीएनयू netstat मापदंडों जानता है -t, -u, -p, -l, -eऔर, -n। विकल्प पार्सर के लिए धन्यवाद इसे व्यक्त किया जा सकता है -tuplenlinux.die.net/man/8/netstat
joschi

3
इसके अलावा, telnetकमांड आमतौर पर केवल टीसीपी का समर्थन करता है, इसलिए यदि आप जिस सेवा को किसी अन्य प्रोटोकॉल पर चलाना चाहते हैं, तो आप भाग्य से बाहर हैं।
जोशी

1
हाँ, मैं खिड़कियों का उपयोग कर रहा था इसलिए भ्रम।
Dexter

2
nc टेलनेट के लिए (बेहतर) विकल्प है। यह यूडीपी को भी सपोर्ट करता है।
Tsvetomir दिमित्रोव

1
इसे सुडो के साथ प्रयोग करें sudo netstat -tuplen:। यह आपको न केवल आपके द्वारा, बल्कि दूसरों के स्वामित्व वाली प्रक्रियाओं को भी देगा, और, यदि वे पहले से ही गैर-रूट उपयोगकर्ता के रूप में प्रदर्शित नहीं होते हैं, तो यह अतिरिक्त विवरण (जैसे पीआईडी ​​/ प्रोग्राम नाम) मुद्रित करेगा।
जॉन रेड

102

अगर टीसीपी पोर्ट खुला है (आपके पास कोई भी हार्डवेयर फायरवॉल हो सकता है) टेस्ट करने का सबसे आसान तरीका, एक दूरस्थ कंप्यूटर (जैसे आपका डेस्कटॉप) से टाइप करना है:

telnet myserver.com 80

जो उस सर्वर पर पोर्ट 80 के लिए कनेक्शन खोलने की कोशिश करेगा। यदि आपको कोई समय मिलता है या अस्वीकार किया जाता है, तो पोर्ट खुला नहीं है :)


1
यह कहता है कि यह "टेलनेट" को एक आदेश के रूप में नहीं पहचानता है ...
जेम्स एंडरसन

6
"yum इंस्टॉल टेलनेट" टेलनेट क्लाइंट पैकेज को स्थापित करने के लिए।
cjc

8
ऊपर लिखा गया:if you get a time out or deny, the port is not open
औद्योगिक

2
यदि आपके पास टेलनेट स्थापित करने की अनुमति नहीं है तो क्या होगा? क्या कोई और मानक उपकरण है?
केसी बाल्ट्ज

3
मैंने "टेलनेट मायहोस्ट 22" की कोशिश की और एक टाइमआउट प्राप्त किया। लेकिन मैं उस मशीन में ssh कर सकता हूं। ?!
टॉर्स्टन ब्रोंगर

30

ठीक है, सारांश में, आपके पास एक सर्वर है जिसे आप लॉग इन कर सकते हैं। आप देखना चाहते हैं कि कुछ पोर्ट पर कुछ सुन रहा है या नहीं। रूट के रूप में, चलाएं:

netstat -nlp

यह टीसीपी और यूडीपी बंदरगाहों पर सुनने वाली प्रक्रियाओं की एक सूची दिखाएगा। जिस प्रक्रिया में आप रुचि रखते हैं, और / या आपके द्वारा देखे जाने वाले पोर्ट नंबर के लिए आप इसे (या grep) स्कैन कर सकते हैं।

यदि आपके द्वारा अपेक्षित प्रक्रिया नहीं है, तो आपको उस प्रक्रिया को शुरू करना चाहिए और नेटस्टैट को फिर से जांचना चाहिए। यदि प्रक्रिया है, लेकिन यह एक इंटरफ़ेस और पोर्ट पर सुन रहा है जिसकी आपको उम्मीद नहीं थी, तो एक कॉन्फ़िगरेशन समस्या है (उदाहरण के लिए, यह सुन सकता है, लेकिन केवल लूपबैक इंटरफ़ेस पर, इसलिए आपको 127.0.0.1:3306 और दिखाई देगा पोर्ट 3306 के लिए कोई अन्य लाइनें, MySQL के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन के मामले में)।

यदि प्रक्रिया जारी है, और यह आपके द्वारा अपेक्षित पोर्ट पर सुन रहा है, तो आप अपने कार्यालय / घर, जैसे कि मैकबुक से उस पोर्ट पर "टेलनेट" चलाने की कोशिश कर सकते हैं, जैसे;

 telnet xxxxxxxxxxxx.co.uk 443

यह परीक्षण करेगा कि क्या (मानक बंदरगाहों को मानते हुए) SSL के लिए एक वेब सर्वर कॉन्फ़िगर किया गया है। ध्यान दें कि टेलनेट का उपयोग करने वाला यह परीक्षण केवल तभी काम करेगा जब प्रक्रिया टीसीपी पोर्ट पर सुन रही हो। यदि यह एक यूडीपी पोर्ट है, तो आप इसे कनेक्ट करने के लिए जो भी क्लाइंट इस्तेमाल करने जा रहे हैं, उसके साथ ही कोशिश कर सकते हैं। (मैं देख रहा हूं कि आपने 224 पोर्ट का इस्तेमाल किया था। यह मसकडियलर है, और मुझे नहीं पता कि यह क्या है)।

यदि सेवा है, लेकिन आप इसे बाहरी रूप से प्राप्त नहीं कर सकते हैं, तो एक फ़ायरवॉल आपको अवरुद्ध कर रहा है। उस स्थिति में, भागो:

 iptables -L -n

यह आपके सिस्टम पर परिभाषित सभी फ़ायरवॉल नियम दिखाएगा। आप पोस्ट कर सकते हैं, लेकिन, आम तौर पर, यदि आप INPUT श्रृंखला पर सब कुछ नहीं होने दे रहे हैं, तो आपको संभवतः पोर्ट पर प्रश्न में स्पष्ट रूप से ट्रैफ़िक की अनुमति देने की आवश्यकता होगी:

 iptables -I INPUT -p tcp --dport 224 -j ACCEPT

या उनके जैसे की कुछ और। इंटरनेट पर किसी अजनबी ने आपको जो बताया है, उसके आधार पर अपने फ़ायरवॉल कमांड को अंधाधुंध न चलाएं। गौर कीजिए कि आप क्या कर रहे हैं।

यदि बॉक्स पर आपका फ़ायरवॉल आपके इच्छित ट्रैफ़िक की अनुमति दे रहा है, तो आपकी होस्टिंग कंपनी फ़ायरवॉल चला सकती है (जैसे, वे केवल SSH (22 / tcp), HTTP (80 / tcp) और HTTPS (443 / tcp) की अनुमति दे रहे हैं और आने वाले सभी ट्रैफिक को नकारना)। इस मामले में, आपको इस मुद्दे को हल करने के लिए उनके साथ एक हेल्पडेस्क टिकट खोलने की आवश्यकता होगी, हालांकि मुझे लगता है कि आपके cPanel में कुछ हो सकता है जो इसे अनुमति दे सकता है।


क्या आप iptables -I कमांड को पूर्ववत् करने के लिए pls जोड़ सकते हैं? धन्यवाद!!
एव्जेनी

1
"iptables -D" मूल कमांड में "-I" के बाद आपके पास जो कुछ भी था। मूल रूप से, प्रलेखन देखें।
ccc

11

मैं कॉम्बो का उपयोग करता हूं netstatऔर lsof:

netstat -an | grep <portnumber>
lsof -i:<portnumber>

यह देखने के लिए कि क्या पोर्ट का उपयोग किया जा रहा है, और इसका उपयोग क्या है।



1
@DheerajThedijje - तो उस पोर्ट नहीं खुला है
वॉरेन

हाँ यह नहीं था, मिल गया।
धीरज थेडिजे

7

यदि आप सिस्टम से जुड़े हैं और रूट के रूप में कमांड चला सकते हैं तो आप iptables का आउटपुट चेक कर सकते हैं

iptables -L -vn

यह फ़ायरवॉल नियमों को सूचीबद्ध करेगा और कौन से पोर्ट खुले लक्ष्य ACCEPTऔर किसी भी स्पष्ट रूप से बंद पोर्ट लक्ष्य हैं REJECT


और अगर आपके पास फायरवालड है, तो यह सरल है firewall-cmd --query-port=port/protocol, जैसे firewall-cmd --query-port=80/tcp
एगोस्टिनो

6

lsof -i :ssh ssh पोर्ट ओपन, दोनों सुनने और सक्रिय कनेक्शन के साथ सभी प्रक्रियाओं को सूचीबद्ध करेगा।


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