ค้นหาเว็บไซต์

15 'ตัวอย่างคำสั่ง Sockstat' ที่มีประโยชน์เพื่อค้นหาพอร์ตที่เปิดใน FreeBSD


Sockstat เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งอเนกประสงค์ที่ใช้สำหรับแสดงเครือข่ายและระบบที่เปิดซ็อกเก็ตใน FreeBSD โดยพื้นฐานแล้ว คำสั่ง Socksstat จะถูกติดตั้งตามค่าเริ่มต้นใน FreeBSD และมักใช้เพื่อแสดงชื่อของกระบวนการที่เปิดพอร์ตเครือข่ายบางอย่างบนระบบ FreeBSD

อย่างไรก็ตาม sockstat ยังสามารถแสดงรายการซ็อกเก็ตที่เปิดอยู่ตามเวอร์ชันโปรโตคอล (ทั้งสองเวอร์ชัน IP) สถานะของการเชื่อมต่อ และพอร์ตที่ daemon หรือโปรแกรมผูกและรับฟัง

อ่านเพิ่มเติม: ตัวอย่างคำสั่ง 'netstat' ที่มีประโยชน์ 20 ตัวอย่างเพื่อตรวจสอบการเชื่อมต่อเครือข่าย

นอกจากนี้ยังสามารถแสดงซ็อกเก็ตการสื่อสารระหว่างกระบวนการ ซึ่งโดยทั่วไปเรียกว่าซ็อกเก็ตโดเมน Unix หรือ IPC คำสั่ง Socksstat รวมกับตัวกรอง grep หรือไพพ์ผ่านยูทิลิตี้ awk พิสูจน์ได้ว่าเป็นเครื่องมือที่ทรงพลังสำหรับสแต็กเครือข่ายท้องถิ่น

สามารถย่อขนาดผลลัพธ์สำหรับการเชื่อมต่อที่เปิดอยู่โดยขึ้นอยู่กับผู้ใช้ที่เป็นเจ้าของซ็อกเก็ต ตัวอธิบายไฟล์ของซ็อกเก็ตเครือข่าย หรือ PID ของกระบวนการที่เปิดซ็อกเก็ต

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

ความต้องการ

  1. คู่มือการติดตั้ง FreeBSD 11.1

1. แสดงรายการพอร์ตที่เปิดทั้งหมดใน FreeBSD

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

sockstat

ค่าที่แสดงในเอาต์พุตของถุงเท้ามีคำอธิบายดังนี้:

  • USER : เจ้าของ (บัญชีผู้ใช้) ของซ็อกเก็ต
  • COMMAND : คำสั่งที่เปิดซ็อกเก็ต
  • PID : ID กระบวนการของคำสั่งที่เป็นเจ้าของซ็อกเก็ต
  • FD : หมายเลขตัวอธิบายไฟล์ของซ็อกเก็ต
  • PROTO : โปรโตคอลการขนส่ง (โดยปกติคือ TCP/UDP) ที่เกี่ยวข้องกับซ็อกเก็ตหรือประเภทซ็อกเก็ตที่เปิด ในกรณีของซ็อกเก็ตโดเมน Unix (ดาตาแกรม สตรีม หรือ seqpac) สำหรับซ็อกเก็ต UNIX
  • ที่อยู่ท้องถิ่น : มันแสดงถึงที่อยู่ IP ในเครื่องสำหรับซ็อกเก็ตที่ใช้ IP ในกรณีของซ็อกเก็ต Unix จะแสดงชื่อไฟล์ปลายทางที่แนบกับซ็อกเก็ต <รหัส>“?? ” สัญกรณ์บอกเป็นนัยว่าไม่สามารถรับรู้หรือสร้างจุดสิ้นสุดของซ็อกเก็ตได้
  • ที่อยู่ต่างประเทศ : ที่อยู่ IP ระยะไกลที่ซ็อกเก็ตเชื่อมต่ออยู่

2. แสดงรายการพอร์ตการฟังหรือที่เปิดใน FreeBSD

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

sockstat -l

3. แสดงรายการพอร์ตที่เปิด IPv4 ใน FreeBSD

หากต้องการแสดงซ็อกเก็ตที่เปิดอยู่ทั้งหมดสำหรับโปรโตคอล IPv4 เท่านั้น ให้ออกคำสั่งด้วยแฟล็ก -4 ตามที่แนะนำในตัวอย่างด้านล่าง

sockstat -4

4. แสดงรายการพอร์ตที่เปิด IPv6 ใน FreeBSD

เช่นเดียวกับเวอร์ชัน IPv4 คุณยังสามารถแสดงซ็อกเก็ตเครือข่ายที่เปิดอยู่สำหรับ IPv6 เท่านั้น โดยออกคำสั่งดังที่แสดงด้านล่าง

sockstat -6

5. แสดงรายการพอร์ต TCP หรือ UDP ที่เปิดใน FreeBSD

ในการแสดงซ็อกเก็ตเครือข่ายตามโปรโตคอลเครือข่ายที่ระบุเท่านั้น เช่น TCP หรือ UDP ให้ใช้แฟล็ก -P ตามด้วย ชื่ออาร์กิวเมนต์ของโปรโตคอล

คุณสามารถค้นหาชื่อโปรโตคอลได้โดยการตรวจสอบเนื้อหาของไฟล์ /etc/protocols ปัจจุบัน โปรโตคอล ICMP ไม่ได้รับการสนับสนุนโดยเครื่องมือ socketstat

แสดงเฉพาะซ็อกเก็ต TCP
sockstat -P tcp

แสดงเฉพาะซ็อกเก็ต UDP
sockstat -P udp

เชื่อมต่อโปรโตคอลทั้งสอง

sockstat –P tcp,udp

6. แสดงรายการหมายเลขพอร์ตเฉพาะ TCP และ UDP

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

sockstat -P tcp -p 443             [Show TCP HTTPS Port]
sockstat -P udp -p 53              [Show UDP DNS Port] 
sockstat -P tcp -p 443,53,80,21    [Show Both TCP and UDP]

7. แสดงรายการพอร์ตที่เปิดและเชื่อมต่อใน FreeBSD

ในการแสดงซ็อกเก็ตที่เปิดและเชื่อมต่อทั้งหมด ให้ใช้แฟล็ก -c ดังที่แสดงในตัวอย่างด้านล่าง คุณสามารถแสดงรายการซ็อกเก็ตที่เชื่อมต่อ HTTPS ทั้งหมดหรือซ็อกเก็ตที่เชื่อมต่อ TCP ทั้งหมดโดยการใช้คำสั่ง

sockstat -P tcp -p 443 -c
sockstat -P tcp -c

8. แสดงรายการพอร์ตการฟังเครือข่ายใน FreeBSD

หากต้องการแสดงรายการซ็อกเก็ต TCP ที่เปิดทั้งหมดในสถานะการฟัง ให้ผนวกแฟล็ก -l และ -s ดังที่แสดงในตัวอย่างด้านล่าง เนื่องจากเป็นโปรโตคอลไร้การเชื่อมต่อ UDP จะไม่รักษาข้อมูลเกี่ยวกับสถานะของการเชื่อมต่อ

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

sockstat -46 -l -s

9. แสดงรายการซ็อกเก็ต Unix และเนมไปป์

ซ็อกเก็ตโดเมน Unix ตลอดจนรูปแบบอื่นๆ ของการสื่อสารระหว่างกระบวนการภายในเครื่อง เช่น ไปป์ที่มีชื่อ สามารถแสดงได้โดยคำสั่ง Socksstat โดยใช้แฟล็ก -u ดังที่แสดงในภาพด้านล่าง

sockstat -u

10. แสดงรายการพอร์ตที่เปิดโดยแอปพลิเคชันใน FreeBSD

เอาต์พุตคำสั่ง Socksstat สามารถกรองผ่านยูทิลิตี้ grep เพื่อแสดงรายการพอร์ตที่เปิดโดยแอปพลิเคชันหรือคำสั่งเฉพาะ

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

sockstat -46 | grep nginx

หากต้องการแสดงเฉพาะซ็อกเก็ตที่เชื่อมต่อซึ่งเชื่อมโยงกับเว็บเซิร์ฟเวอร์ Nginx ให้ออกคำสั่งต่อไปนี้

sockstat -46 -c| grep nginx

11. แสดงรายการโปรโตคอลที่เชื่อมต่อ HTTPS

คุณสามารถแสดงรายการซ็อกเก็ตที่เชื่อมต่อทั้งหมดที่เกี่ยวข้องกับโปรโตคอล HTTPS ควบคู่ไปกับสถานะของการเชื่อมต่อแต่ละรายการได้โดยการเรียกใช้คำสั่งด้านล่าง

sockstat -46 -s -P TCP -p 443 -c

12. แสดงรายการซ็อกเก็ตระยะไกล HTTP

หากต้องการแสดงรายการซ็อกเก็ตระยะไกลทั้งหมดที่เชื่อมโยงกับโปรโตคอล HTTP คุณสามารถเรียกใช้ชุดคำสั่งอย่างใดอย่างหนึ่งต่อไปนี้

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | uniq -c | sort -nr
sockstat -46 -c -p 80,443 | grep -v ADDRESS|awk '{print $7}' | uniq -c | sort -nr

13. ค้นหาคำขอ HTTP สูงสุดตามที่อยู่ IP

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

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | cut -d: -f1 | uniq -c | sort –nr

14. แสดงรายการซ็อกเก็ตที่เปิด DNS

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

sockstat -46 -P tcp –p 53 -s

15. ค้นหา TCP DNS บนโดเมนท้องถิ่น

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

dig +tcp  www.domain.com  @127.0.0.1

นั่นคือทั้งหมด! นอกเหนือจากยูทิลิตี้บรรทัดคำสั่ง netstat และ lsof แล้ว บรรทัดคำสั่งsockstat ยังเป็นยูทิลิตี้ที่มีประสิทธิภาพที่ใช้ในการรับข้อมูลเครือข่ายและแก้ไขปัญหาหลายประการของสแต็กเครือข่าย FreeBSD และกระบวนการและบริการที่เกี่ยวข้องกับเครือข่าย

คู่คำสั่ง FreeBSD Socksstat ใน Linux จะแสดงด้วยคำสั่ง netstat หรือคำสั่ง ss ใหม่ เชื่อหรือไม่ว่า คุณสามารถค้นหาแอปพลิเคชั่นที่คล้ายกันที่พัฒนาขึ้นสำหรับระบบปฏิบัติการ Android โดยใช้ยูทิลิตี้ SocksTat โดยมีชื่อว่า SockStat – Simple Netstat GUI