15 'ตัวอย่างคำสั่ง Sockstat' ที่มีประโยชน์เพื่อค้นหาพอร์ตที่เปิดใน FreeBSD
Sockstat เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งอเนกประสงค์ที่ใช้สำหรับแสดงเครือข่ายและระบบที่เปิดซ็อกเก็ตใน FreeBSD โดยพื้นฐานแล้ว คำสั่ง Socksstat จะถูกติดตั้งตามค่าเริ่มต้นใน FreeBSD และมักใช้เพื่อแสดงชื่อของกระบวนการที่เปิดพอร์ตเครือข่ายบางอย่างบนระบบ FreeBSD
อย่างไรก็ตาม sockstat ยังสามารถแสดงรายการซ็อกเก็ตที่เปิดอยู่ตามเวอร์ชันโปรโตคอล (ทั้งสองเวอร์ชัน IP) สถานะของการเชื่อมต่อ และพอร์ตที่ daemon หรือโปรแกรมผูกและรับฟัง
อ่านเพิ่มเติม: ตัวอย่างคำสั่ง 'netstat' ที่มีประโยชน์ 20 ตัวอย่างเพื่อตรวจสอบการเชื่อมต่อเครือข่าย
นอกจากนี้ยังสามารถแสดงซ็อกเก็ตการสื่อสารระหว่างกระบวนการ ซึ่งโดยทั่วไปเรียกว่าซ็อกเก็ตโดเมน Unix หรือ IPC คำสั่ง Socksstat รวมกับตัวกรอง grep หรือไพพ์ผ่านยูทิลิตี้ awk พิสูจน์ได้ว่าเป็นเครื่องมือที่ทรงพลังสำหรับสแต็กเครือข่ายท้องถิ่น
สามารถย่อขนาดผลลัพธ์สำหรับการเชื่อมต่อที่เปิดอยู่โดยขึ้นอยู่กับผู้ใช้ที่เป็นเจ้าของซ็อกเก็ต ตัวอธิบายไฟล์ของซ็อกเก็ตเครือข่าย หรือ PID ของกระบวนการที่เปิดซ็อกเก็ต
ในคู่มือนี้ เราจะแสดงรายการตัวอย่างการใช้งานทั่วไปบางส่วน แต่ยังทรงพลังมากของยูทิลิตีเครือข่ายบรรทัดคำสั่งถุงเท้าใน FreeBSD
ความต้องการ
- คู่มือการติดตั้ง 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