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


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


170
2017-09-07 17:24


मूल


यह बिल्कुल स्पष्ट नहीं है कि आप क्या पूछ रहे हैं। "खुले" से आपका क्या मतलब है? क्या आपका मतलब है कि कुछ सर्वर उस बंदरगाह पर सुन रहा है? या क्या आपका मतलब है कि सिस्टम फ़ायरवॉल द्वारा इसकी अनुमति है? और क्या? - David Schwartz
मुझे लगता है कि मेरे सर्वर पर एक बंदरगाह अवरुद्ध किया जा रहा है और इसे फिर से खोलना / खोलना चाहता हूं। - James Anderson
netstat -an | grep PORTNUMBER | grep -i listen अगर आउटपुट खाली है, तो बंदरगाह उपयोग में नहीं है। - automatix


जवाब:


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

यह जांचने के लिए कि क्या कुछ बंदरगाह बाहर से उपलब्ध हैं (यह शायद आप जो चाहते हैं) आप पोर्ट पोर्ट स्कैनर का उपयोग कर सकते हैं Nmap से एक और प्रणाली। उसी मेजबान पर एनएमएपी चलाना जिसे आप देखना चाहते हैं वह आपके उद्देश्य के लिए काफी बेकार है।


158
2017-09-07 17:31



जीएनयू नेटस्टैट पैरामीटर जानता है -t, -u, -p, -l, -e, तथा -n। विकल्प पार्सर के लिए धन्यवाद, इसे व्यक्त किया जा सकता है -tuplen। linux.die.net/man/8/netstat - joschi
यह भी telnet कमांड आमतौर पर केवल टीसीपी का समर्थन करता है, इसलिए यदि आप किसी अन्य प्रोटोकॉल पर चलाना चाहते हैं तो आप भाग्य से बाहर हैं। - joschi
हाँ, मैं खिड़कियों का उपयोग भ्रम का उपयोग कर रहा था। - Dexter
एनसी (बेहतर) टेलनेट के लिए विकल्प है। यह यूडीपी का भी समर्थन करता है। - Tsvetomir Dimitrov
सुडो के साथ इसका इस्तेमाल करें: sudo netstat -tuplen। इससे आपको न केवल आपके द्वारा स्वामित्व वाली प्रक्रियाएं मिलेंगी, बल्कि दूसरों द्वारा भी, और यह अतिरिक्त विवरण (जैसे पीआईडी ​​/ प्रोग्राम नाम) प्रिंट करेगी यदि वे पहले से ही गैर-रूट उपयोगकर्ता के रूप में प्रदर्शित नहीं हैं। - John Red


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

telnet myserver.com 80

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


83
2017-09-07 17:33



कहता है कि यह "टेलनेट" को कमांड के रूप में नहीं पहचानता है ... - James Anderson
टेलनेट क्लाइंट पैकेज को स्थापित करने के लिए "yum install telnet"। - cjc
कहते हैं: टेलनेट: 82.165.148.224 पते से कनेक्ट करें: कनेक्शन से मना कर दिया गया - James Anderson
ऊपर लिखा गया है: if you get a time out or deny, the port is not open - Industrial
क्या होगा यदि आपके पास टेलनेट स्थापित करने की अनुमति नहीं है? क्या कोई और मानक उपकरण है? - KC Baltz


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

netstat -nlp

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

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

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

 telnet xxxxxxxxxxxx.co.uk 443

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

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

 iptables -L -n

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

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

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

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


23
2017-09-07 20:01



क्या आप iptables -I कमांड को पूर्ववत करने के तरीके को जोड़ सकते हैं? धन्यवाद!! - Evgeny
"iptables -D" मूल आदेश में "-I" के बाद आपके पास जो कुछ भी था उसके बाद। असल में, दस्तावेज देखें। - cjc


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

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

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


8
2018-03-28 19:32



कुछ भी सूडो के साथ या बिना संकेत करता है - Dheeraj Thedijje
@ धीरज तडेजजे - तब वह बंदरगाह खुला नहीं है - warren
हाँ यह नहीं था, मिल गया। - Dheeraj Thedijje


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

iptables -L -vn

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


7
2017-09-07 17:57



और यदि आपके पास फ़ायरवॉल है, तो यह आसान है firewall-cmd --query-port=port/protocol, उदा। firewall-cmd --query-port=80/tcp। - Agostino


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


5
2018-01-25 21:45



उपसर्ग sudo अगर यह कोई आउटपुट वापस नहीं करता है। - Elijah Lynn