Android

วิธีการตรวจสอบ (สแกน) สำหรับพอร์ตที่เปิดใน linux

ये कà¥?या है जानकार आपके à¤à¥€ पसीने छà¥?ट ज

ये कà¥?या है जानकार आपके à¤à¥€ पसीने छà¥?ट ज

สารบัญ:

Anonim

ไม่ว่าคุณกำลังแก้ไขปัญหาการเชื่อมต่อเครือข่ายหรือการกำหนดค่าไฟร์วอลล์สิ่งแรกที่ควรตรวจสอบคือพอร์ตใดที่เปิดอยู่บนระบบของคุณ

บทความนี้จะอธิบายวิธีการต่างๆเพื่อค้นหาว่าพอร์ตใดบ้างที่เปิดออกสู่ภายนอกบนระบบ Linux ของคุณ

Open Port คืออะไร

พอร์ตการรับฟังเป็นพอร์ตเครือข่ายที่แอปพลิเคชันรับฟัง คุณสามารถรับรายการพอร์ตการฟังบนระบบของคุณโดยการสอบถามเครือข่ายสแต็กด้วยคำสั่งเช่น ss , netstat หรือ lsof พอร์ตการรับฟังแต่ละพอร์ตสามารถเปิดหรือปิด (กรอง) โดยใช้ไฟร์วอลล์

โดยทั่วไปแล้วพอร์ตเปิดคือพอร์ตเครือข่ายที่รับแพ็คเก็ตขาเข้าจากสถานที่ห่างไกล

ตัวอย่างเช่นหากคุณใช้งานเว็บเซิร์ฟเวอร์ที่ฟังพอร์ต 80 และ 443 และพอร์ตเหล่านั้นเปิดในไฟร์วอลล์ของคุณทุกคน (ยกเว้น IPS ที่ถูกบล็อก) จะสามารถเข้าถึงเว็บไซต์ที่โฮสต์บนเว็บเซิร์ฟเวอร์ของคุณโดยใช้เบราว์เซอร์ของเขา ในกรณีนี้ทั้ง 80 และ 443 เป็นพอร์ตเปิด

พอร์ตแบบเปิดอาจมีความเสี่ยงด้านความปลอดภัยเนื่องจากผู้โจมตีสามารถใช้ช่องโหว่เพื่อเปิดช่องโหว่หรือทำการโจมตีประเภทอื่นได้ คุณควรเปิดเผยเฉพาะพอร์ตที่จำเป็นสำหรับการใช้งานแอปพลิเคชันของคุณและปิดพอร์ตอื่น ๆ ทั้งหมด

ตรวจสอบ Open Ports ด้วย nmap

Nmap เป็นเครื่องมือสแกนเครือข่ายที่ทรงพลังที่สามารถสแกนโฮสต์เดี่ยวและเครือข่ายขนาดใหญ่ได้ ส่วนใหญ่จะใช้สำหรับการตรวจสอบความปลอดภัยและการทดสอบการเจาะ

หากเป็นไปได้ควรใช้ nmap เป็นเครื่องมือแรกในการสแกนพอร์ต นอกจากการสแกนพอร์ต nmap ยังสามารถตรวจจับที่อยู่ Mac, ประเภท OS, รุ่นเคอร์เนลและอีกมากมาย

คำสั่งต่อไปนี้ที่ออกจากคอนโซลจะกำหนดว่าพอร์ตใดที่จะรับฟังการเชื่อมต่อ TCP จากเครือข่าย:

sudo nmap -sT -p- 10.10.8.8

-sT บอก nmap ให้สแกนหาพอร์ต TCP และ -p- เพื่อสแกนหาพอร์ตทั้งหมด 65535 หาก -p- ไม่ได้ใช้ nmap จะสแกนพอร์ต 1, 000 พอร์ตเท่านั้น

Starting Nmap 7.60 (https://nmap.org) at 2019-07-09 23:10 CEST Nmap scan report for 10.10.8.8 Host is up (0.0012s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http MAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds

เอาต์พุตด้านบนแสดงว่ามีการเปิดเฉพาะพอร์ต 22 , 80 และ 8069 บนระบบเป้าหมาย

ในการสแกนหาพอร์ต UDP ให้ใช้ -sU แทน -sT :

sudo nmap -sU -p- 10.10.8.8

สำหรับข้อมูลเพิ่มเติมไปที่หน้า man nmap และอ่านเกี่ยวกับตัวเลือกอันทรงพลังอื่น ๆ ของเครื่องมือนี้

ตรวจสอบ Open Ports ด้วย netcat

Netcat (หรือ nc ) เป็นเครื่องมือบรรทัดคำสั่งที่สามารถอ่านและเขียนข้อมูลผ่านการเชื่อมต่อเครือข่ายโดยใช้โปรโตคอล TCP หรือ UDP

ด้วย netcat คุณสามารถสแกนพอร์ตเดียวหรือช่วงพอร์ต

ตัวอย่างเช่นการสแกนหาพอร์ต TCP แบบเปิดบนเครื่องระยะไกลที่มีที่อยู่ IP 10.10.8.8 ในช่วง 20-80 คุณจะใช้คำสั่งต่อไปนี้:

nc -z -v 10.10.8.8 20-80

อ็อพชัน -z บอกให้ nc สแกนเฉพาะพอร์ตที่เปิดอยู่โดยไม่ส่งข้อมูลใด ๆ และ -v สำหรับข้อมูล verbose เพิ่มเติม

ผลลัพธ์จะมีลักษณะดังนี้:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded!… Connection to 10.10.8.8 80 port succeeded!

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!

ในการสแกนหาพอร์ต UDP ผ่านตัวเลือก -u ไปที่คำสั่ง nc :

nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded

ตรวจสอบ Open Ports โดยใช้ Bash Pseudo Device

อีกวิธีในการตรวจสอบว่าพอร์ตที่เปิดหรือปิดบางพอร์ตนั้นใช้อุปกรณ์ Bash shell /dev/tcp/.. หรือ /dev/udp/.. pseudo

เมื่อดำเนินการคำสั่งบนอุปกรณ์หลอก /dev/$PROTOCOL/$HOST/$IP Bash จะเปิดการเชื่อมต่อ TCP หรือ UDP ไปยังโฮสต์ที่ระบุบนพอร์ตที่ระบุ

คำสั่ง if.else ต่อไปนี้จะตรวจสอบว่าพอร์ต 443 บน kernel.org เปิดอยู่หรือไม่:

if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi

Port is open

รหัสด้านบนทำงานอย่างไร

การหมดเวลาเริ่มต้นเมื่อเชื่อมต่อพอร์ตโดยใช้อุปกรณ์หลอกมีขนาดใหญ่มากดังนั้นเราจึงใช้คำสั่ง timeout เพื่อฆ่าคำสั่งทดสอบหลังจาก 5 วินาที หากการเชื่อมต่อถูกสร้างขึ้นเพื่อ kernel.org พอร์ต 443 คำสั่งทดสอบจะกลับมาจริง

คุณยังสามารถใช้ for for loop เพื่อตรวจสอบช่วงพอร์ต:

for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done

ผลลัพธ์จะมีลักษณะดังนี้:

port 22 is open port 80 is open

ข้อสรุป

เราได้แสดงเครื่องมือหลายอย่างที่คุณสามารถใช้เพื่อสแกนหาพอร์ตที่เปิดอยู่ นอกจากนี้ยังมียูทิลิตี้และวิธีการอื่น ๆ เพื่อตรวจสอบพอร์ตที่เปิดอยู่ตัวอย่างเช่นคุณสามารถใช้โมดูล socket Python, curl , telnet หรือ wget

สถานีปลายทาง