ตรวจสอบว่าโฮสต์ / พอร์ตระยะไกลเปิดอยู่ - ไม่สามารถใช้ GNU Netcat หรือ NMap - RHEL 7


17

ที่ทำงานทีมโครงสร้างพื้นฐานกำลังเปิดตัว VMs ใหม่พร้อม RHEL7 ที่ติดตั้งเป็นระบบปฏิบัติการพื้นฐาน อิมเมจเฉพาะนี้มาพร้อมกับnmap-ncatเวอร์ชันของ Netcat และไม่มีการติดตั้ง NMap เราถูกกีดกันไม่ให้ติดตั้งอะไรบนเครื่อง

ก่อนหน้านี้เราใช้ GNU Netcat ซึ่งมี-zตัวเลือกในการสแกนรีโมตโฮสต์ / พอร์ตเพื่อตรวจสอบว่าเปิดอยู่หรือไม่ บางสิ่งเช่นนี้

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

ฉันจะตรวจสอบเดียวกันกับสิ่งใหม่ncatซึ่งไม่มี-zตัวเลือกในระบบที่ฉันไม่สามารถติดตั้งได้nmapอย่างไร


1
ทำไมคุณตรวจสอบเพื่อดูว่าพอร์ตเปิด / ปิด? เป็นส่วนหนึ่งของโซลูชันการตรวจสอบนี้หรือไม่?
ewwhite

1
เรากำลังดำเนินการเพื่อ-zเข้าสู่ Ncat แต่จะไม่อยู่ใน Red Hat สักพักฉันแน่ใจว่า: github.com/nmap/nmap/pull/444
bonsaiviking

@ ขาวฉันต้องตรวจสอบว่า ACL เครือข่ายเปิดระหว่างจุด A และจุด B หรือไม่ตัวอย่างเช่นเซิร์ฟเวอร์แอปสามารถพูดคุย TCP กับเซิร์ฟเวอร์ DB ที่พอร์ต 1521 ได้หรือไม่
λ Jonas Gorauskas

คำตอบ:


16

Bash ช่วยให้คุณเชื่อมต่อกับพอร์ต TCP และ / หรือ UDP โดยเปลี่ยนเส้นทางไปยังไฟล์พิเศษ:

/dev/tcp/host/port หากโฮสต์เป็นชื่อโฮสต์หรือที่อยู่อินเทอร์เน็ตที่ถูกต้องและพอร์ตเป็นหมายเลขพอร์ตจำนวนเต็มหรือชื่อบริการ Bash จะพยายามเปิดซ็อกเก็ต TCP ที่เกี่ยวข้อง

/dev/udp/host/port หากโฮสต์เป็นชื่อโฮสต์หรือที่อยู่อินเทอร์เน็ตที่ถูกต้องและพอร์ตเป็นหมายเลขพอร์ตจำนวนเต็มหรือชื่อบริการ Bash จะพยายามเปิดซ็อกเก็ต UDP ที่เกี่ยวข้อง

ความล้มเหลวในการเปิดหรือสร้างไฟล์ทำให้การเปลี่ยนเส้นทางล้มเหลว

ดังนั้นเพื่อทดสอบว่าคุณสามารถเชื่อมต่อกับพอร์ต 80 บน www.example.com ต่อไปนี้ควรใช้หรือไม่:

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

หากพอร์ตถูกบล็อกคุณจะได้รับข้อความ "การเชื่อมต่อถูกปฏิเสธ" หรือหมดเวลา


1
คุณสามารถเทลเน็ตไปยังพอร์ตได้เช่นกัน
Ryan Babchishin

ใช่ แต่การติดตั้งขั้นต่ำใน RHEL 7 ไม่รวม telnet RPM ซึ่งมี bash อยู่เสมอ
HBruijn

2
จริงๆ? สิ่งต่าง ๆ เปลี่ยนไปอย่างไร
Ryan Babchishin

1
@RyanBabchishin รวมถึงแนวทางด้านความปลอดภัยจำนวนมากต้องการให้ลบไคลเอ็นต์ telnet ตามที่การใช้เพื่อล็อกอินเข้าสู่สิ่งอื่นนั้นไม่ปลอดภัย ไม่สนใจการแก้ไขปัญหาที่มากมาย
Jason Martin

@JasonMartin Pfft
Ryan Babchishin

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ตัวเลือก

แก้ไข: Ncat 7.25BETA2แนะนำ-zตัวเลือกที่ทำงานเช่นเดียวกับ GNU netcat แต่เฉพาะในพอร์ตเดียว หากคุณต้องการสแกนช่วงพอร์ตคุณควรใช้ Nmap


2

ไม่จำเป็นต้องใช้ netcat, telnet หรือ nmap Bash นั้นง่ายกว่าพกพาง่ายและมีประสิทธิภาพมากกว่า

เปิดการตรวจสอบ

(>/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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.