जांचें कि क्या रिमोट होस्ट / पोर्ट खुला है - GNU Netcat और NMAP - RHEL 7 का उपयोग नहीं कर सकते


17

काम के दौरान, आधारभूत संरचना टीम आरएचईएल 7 को बेस ओएस के रूप में स्थापित करने के साथ नए वीएम को चालू कर रही है। यह विशेष छवि nmap-ncatNetcat के संस्करण के साथ आती है और इसमें NMap स्थापित नहीं है। हम मशीनों पर कुछ भी स्थापित करने से वंचित हैं।

पहले, हम GNU Netcat का उपयोग कर रहे थे, जिसमें -zयह देखने के लिए कि क्या यह खुला था, रिमोट होस्ट / पोर्ट को स्कैन करने का विकल्प है। कुछ इस तरह:

nc -z -v -w 3 remote.host.name 1234

मैं नए के साथ वही जांच कैसे प्राप्त कर सकता हूं ncatजिसमें -zसिस्टम पर विकल्प नहीं है जहां मैं स्थापित नहीं कर सकता हूं nmap?


1
आप यह देखने के लिए जाँच कर रहे हैं कि क्या कोई पोर्ट खुला / बंद है? क्या यह निगरानी समाधान का हिस्सा है?
ewhite

1
हम -zNcat में काम कर रहे हैं , लेकिन यह कुछ समय के लिए Red Hat में नहीं होगा, मुझे यकीन है: github.com/nmap/nmap/pull/444
bonsaiviking

@ मुझे यह देखना होगा कि क्या नेटवर्क ACL बिंदु A और बिंदु B के बीच खुला है। उदाहरण के लिए: क्या ऐप सर्वर पोर्ट 1521 पर DB सर्वर से TCP से बात कर सकता है।
λ जोनास गोरसकस

जवाबों:


16

बैश आपको विशेष फ़ाइलों पर पुनर्निर्देशित करके टीसीपी और / या यूडीपी पोर्ट से कनेक्ट करने की अनुमति देता है:

/dev/tcp/host/port यदि होस्ट एक मान्य होस्टनाम या इंटरनेट पता है, और पोर्ट एक पूर्णांक पोर्ट नंबर या सेवा का नाम है, तो बैश संबंधित टीसीपी सॉकेट खोलने का प्रयास करता है।

/dev/udp/host/port यदि होस्ट एक मान्य होस्टनाम या इंटरनेट पता है, और पोर्ट एक पूर्णांक पोर्ट नंबर या सेवा का नाम है, तो बैश संबंधित यूडीपी सॉकेट खोलने का प्रयास करता है।

फ़ाइल खोलने या बनाने में विफलता के कारण पुनर्निर्देशन विफल हो जाता है।

तो यह जांचने के लिए कि क्या आप www.example.com पर 80 पोर्ट से कनेक्ट कर सकते हैं, निम्नलिखित कार्य करने चाहिए:

echo -n > /dev/tcp/www.example.com/80

यदि पोर्ट अवरुद्ध है, तो आपको "कनेक्शन मना कर दिया" संदेश या टाइमआउट मिलता है।


1
आप पोर्ट को टेलनेट भी कर सकते हैं
रयान बाबशिन

हां, लेकिन आरएचईएल 7 में एक न्यूनतम इंस्टॉल में टेलनेट आरपीएम शामिल नहीं है जहां बैश हमेशा मौजूद होता है।
HBruijn

2
वास्तव में? कैसे चीजें बदल गई हैं।
रयान बबचिशिन

1
@RyanBabchishin प्लस बहुत सारे सुरक्षा दिशानिर्देशों के आधार पर टेलनेट क्लाइंट को हटाने की आवश्यकता होती है, ताकि किसी अन्य चीज़ में लॉग इन करने के लिए इसका उपयोग असुरक्षित हो; इसके विशाल समस्या निवारण उपयोग को अनदेखा करना।
जेसन मार्टिन

@JasonMartin Pfft
रयान बाबशिन

9

हालाँकि Ncat अभी तक समर्थन नहीं करता है -z, आप शेल पुनर्निर्देशन के साथ एक ही व्यवहार प्राप्त कर सकते हैं:

$ ncat google.com 80 </dev/null >/dev/null && echo "yes"
yes
$ ncat google.com 81 </dev/null >/dev/null && echo "yes"
Ncat: Connection timed out.
$ ncat scanme.nmap.org 1234 </dev/null >/dev/null && echo "yes"
Ncat: Connection refused.

कनेक्ट टाइमआउट को -wविकल्प के साथ समायोजित किया जा सकता है ।

EDIT: Ncat 7.25BETA2 ने वह -zविकल्प पेश किया, जो GNU नेटकैट के साथ काम करता है, लेकिन केवल सिंगल पोर्ट पर। यदि आपको पोर्ट श्रेणियों को स्कैन करने की आवश्यकता है, तो आपको Nmap का उपयोग करना चाहिए।


2

न तो नेटकैट, टेलनेट और न ही नैमप की जरूरत है। बैश सरल, पोर्टेबल और अधिक कुशल है।

खुला चेक

(>/dev/tcp/example.com/80) &>/dev/null && echo "Open" 

खुला / बंद चेक

(>/dev/tcp/example.com/80) &>/dev/null && echo "Open" || echo "Closed"

पोर्ट रेंज की जाँच

for i in $(seq 80 88); do (>/dev/tcp/example.com/80/$i) &>/dev/null && echo $i Open|| echo $i Closed; done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.