ฉันต้องการดูว่าพอร์ตใดบ้างที่เปิดอยู่บนเครื่องของฉันเช่นพอร์ตใดที่เครื่องกำลังฟังอยู่ เช่นพอร์ต 80 ถ้าฉันติดตั้งเว็บเซิร์ฟเวอร์และอื่น ๆ
มีคำสั่งสำหรับสิ่งนี้หรือไม่?
ฉันต้องการดูว่าพอร์ตใดบ้างที่เปิดอยู่บนเครื่องของฉันเช่นพอร์ตใดที่เครื่องกำลังฟังอยู่ เช่นพอร์ต 80 ถ้าฉันติดตั้งเว็บเซิร์ฟเวอร์และอื่น ๆ
มีคำสั่งสำหรับสิ่งนี้หรือไม่?
คำตอบ:
Nmap ("Network Mapper") เป็นยูทิลิตี้ฟรีและโอเพ่นซอร์สสำหรับการสำรวจเครือข่ายหรือการตรวจสอบความปลอดภัย
nmap 192.168.1.33
พีซีภายในหรือ nmap external ip address
ข้อมูลมากกว่านี้ man nmap
nmap localhost
และnmap 192.168.0.3
(หรือสิ่งที่คุณเคยเป็นเครื่อง IP)
netstat -ln
หากคุณมีการเข้าถึงเครื่องคอมพิวเตอร์เพียงใช้ คุณจะเห็นพอร์ตที่เปิดอยู่ทั้งหมดทันที
nmap localhost
ไม่พบบริการที่ผูกไว้กับ localhost เท่านั้น ยกตัวอย่างเช่นผมทำงานกับinfluxd
bind-address:localhost:8086
ที่ไม่ได้แสดงขึ้นในแต่ไม่แสดงขึ้นในsudo nmap localhost
sudo netstat -tulpn
ฉันเคยใช้สิ่งนี้:
sudo netstat -ntlp | grep LISTEN
sudo netstat -ntlp | grep LISTEN
... ใช้sudo
มิฉะนั้น ... pid จะไม่ถูกพิมพ์
-l
ตัวกรองสำหรับฟังแล้ว grep LISTEN
จะไม่ช่วยเกินกว่าการซ่อนข้อมูลส่วนหัว 2 บรรทัด
-t
: TCP, -l
: ฟังซ็อกเก็ต-p
: แสดง pid และชื่อโครงการ-n
: การพิมพ์แทน127.0.0.1:80
localhost:http
การอ้างอิง: linux.die.net/man/8/netstat
netstat
ด้วยsudo apt-get install net-tools
sudo netstat --tcp --listening --programs --numeric
คำสั่งขยายเป็น ไม่จำเป็นต้องใช้grep
นอกเสียจากว่าคุณต้องการกำจัดส่วนหัวของคอลัมน์
วิธีอื่นที่ดีในการค้นหาว่าพอร์ตใดที่รับฟังและกฎไฟร์วอลล์ของคุณคือ:
sudo netstat -tulpn
sudo ufw status
nmap
อีกครั้งการใช้งานของnetstat
เป็นเรื่องไร้สาระ
ในการแสดงรายการพอร์ตที่เปิดอยู่ให้ใช้netstat
คำสั่ง
ตัวอย่างเช่น:
$ sudo netstat -tulpn | grep LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 5452/dnsmasq
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1037/cupsd
tcp6 0 0 ::1:631 :::* LISTEN 1037/cupsd
ในตัวอย่างข้างต้นสามบริการถูกผูกไว้กับที่อยู่ย้อนกลับ
บริการ IPv4 ที่เชื่อมโยงกับที่อยู่ลูปแบ็ค "127.0.0.1" มีให้เฉพาะในเครื่องโลคอล ที่อยู่ลูปแบ็คที่เทียบเท่าสำหรับ IPv6 คือ ":: 1" ที่อยู่ IPv4 "0.0.0.0" หมายถึง "ที่อยู่ IP ใด ๆ " ซึ่งหมายความว่าเครื่องอื่น ๆ อาจเชื่อมต่อกับส่วนต่อประสานเครือข่ายที่กำหนดค่าในเครื่องบนพอร์ตเฉพาะ
วิธีอื่นคือการใช้lsof
คำสั่ง:
$ sudo lsof -nP -i | grep LISTEN
cupsd 1037 root 9u IPv6 11276 0t0 TCP [::1]:631 (LISTEN)
cupsd 1037 root 10u IPv4 11277 0t0 TCP 127.0.0.1:631 (LISTEN)
dnsmasq 5452 nobody 5u IPv4 212707 0t0 TCP 127.0.0.1:53 (LISTEN)
ดูรายละเอียดเพิ่มเติมหรือman netstat
man lsof
-l
ตัวเลือกคือการแสดงรายการLISTEN
พอร์ต ดังนั้น grep จะฟุ่มเฟือยที่นี่!
นี่เพียงพอที่จะแสดงว่ามีกระบวนการรับฟังที่อยู่ IP 0.0.0.0
(จำเป็นดังนั้นมันจะตอบกลับการร้องขอใด ๆ ) ที่พอร์ต 80 (หมายเลขพอร์ตเว็บเซิร์ฟเวอร์มาตรฐาน) ในกรณีของฉันนี่แสดงว่าเป็นเว็บเซิร์ฟเวอร์lighttpd
$ sudo netstat -ntlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2495/lighttpd
หากภายหลังคุณต้องการให้แน่ใจว่าสิ่งเดียวที่คุณอนุญาตผ่านไฟร์วอลล์ของคุณคือพอร์ต 80 ฉันมักจะใช้ ShieldsUp จาก www.grc.com เพื่อทำการทดสอบไฟร์วอลล์
sudo iptables -L
จะแสดงรายการกฎพอร์ตสำหรับพีซีของคุณ โปรดทราบว่าหากคุณใช้ไฟร์วอลล์ ufw หรือ shorewall เอาต์พุตอาจอ่านยาก ในกรณีนั้นให้ใช้sudo ufw status
ตัวอย่างเช่น
สิ่งนี้ไม่ได้มีประโยชน์มากในตัวมันเองแม้ว่าพอร์ตนั้นจะเปิดใช้งานการเข้าถึงจะยังคงถูกปฏิเสธหากไม่มีกระบวนการรับฟังพอร์ตนั้น
หากคุณกำลังมองหาการติดตามอย่างต่อเนื่องของพอร์ตสำหรับเครื่องเซิร์ฟเวอร์หรือในพื้นที่ฉันคิดว่าคุณสามารถใช้ nmap เวอร์ชันกราฟิกเช่น Zenmap สำหรับรุ่นที่มีรายละเอียดมากขึ้น
Zenmap เป็นส่วนต่อประสานผู้ใช้แบบกราฟิก (GUI) สำหรับ Nmap Security Scanner
รองรับ (Linux, Windows, Mac OS X, BSD, ฯลฯ )
ไปดูมุมมองเครื่องมือนี้:
nmap localhost
ทำงานได้ดีมาก