คู่มือนี้จะอธิบายวิธีใช้คำสั่ง netstat เพื่อตรวจสอบการเชื่อมต่ออินเทอร์เน็ตและเครือข่ายของคุณใน Linux
Netstat เป็นเครื่องมือบรรทัดคำสั่ง Linux ที่มีประโยชน์อย่างยิ่งที่ช่วยให้คุณตรวจสอบว่าบริการใดเชื่อมต่อกับพอร์ตบนเครื่องของคุณ มีประโยชน์มากในการวิเคราะห์สิ่งที่เกิดขึ้นบนเครื่องของคุณเมื่อคุณเผชิญหน้าหรือพยายามป้องกันการโจมตี คุณสามารถค้นหาข้อมูลต่างๆ เช่น จำนวนการเชื่อมต่อที่ทำในพอร์ตหนึ่ง ที่อยู่ IP ของการเชื่อมต่อเหล่านี้มีต้นทางมาจากอะไร และอื่นๆ อีกมากมาย Netstat มาพร้อมกับลีนุกซ์ส่วนใหญ่ ดังนั้นมันควรจะติดตั้งบนของคุณแล้ว
เปิดเชลล์เทอร์มินัลบนเครื่องของคุณและเรียกใช้คำสั่งต่อไปนี้:
# netstat -ant
การเชื่อมต่ออินเทอร์เน็ตที่ใช้งาน (เซิร์ฟเวอร์และที่ตั้งไว้)
Proto Recv-Q Send-Q ที่อยู่ต่างประเทศสถานะที่อยู่ต่างประเทศ
tcp 0 0 ::ffff:192.168.1.19:80 ::ffff:192.168 1.240:63049 TIME_WAIT
tcp 0 0 ::ffff:192.168.0.19:80 ::ffff:192.168.1.240:62793 TIME_WAIT
tcp 0 0 ::ffff:192.168.1.19:80 ::ffff:192.168.1.240:62795 TIME_WAIT
ผลลัพธ์มักจะยาวมาก ฉันเพิ่งให้ภาพรวมของผลลัพธ์ด้านบน ดังที่คุณเห็นในข้อมูลด้านบน มีการเชื่อมต่อจาก 192.168.1.240 ไปยังพอร์ต 80 ของเซิร์ฟเวอร์ของฉันโดยใช้โปรโตคอล TCP และการเชื่อมต่อในสถานะ TIME_WAIT ผลลัพธ์ที่คุณได้รับสำหรับเซิร์ฟเวอร์ของคุณจะมีข้อมูลเกี่ยวกับพอร์ตทั้งหมดในเครื่องของคุณ ไม่ใช่แค่พอร์ต 80
สิ่งแรกที่คุณตระหนักคือผลงานชิ้นใหญ่นี้ไม่ได้ใช้ประโยชน์มากเกินไป เลยจัดซะหน่อย ต่อไปนี้คือกลอุบายบางอย่างที่ฉันใช้ในการวิเคราะห์ลักษณะของการเชื่อมต่อจากเซิร์ฟเวอร์ของฉัน สิ่งแรกที่ฉันทำคือหาบริการที่ฉันต้องการวิเคราะห์ โดยปกติแล้วจะเป็นพอร์ต 80 เนื่องจากเป็นพอร์ตเริ่มต้นสำหรับเว็บเซิร์ฟเวอร์ที่จะทำงาน และพอร์ต 3306 ซึ่งเป็นพอร์ตเริ่มต้นสำหรับ MySQL ที่จะทำงาน ดังนั้นฉันจึงใช้แบบสอบถามต่อไปนี้เพื่อดูว่าเกิดอะไรขึ้นกับพอร์ต 80:
# netstat -ant | grep 80
อีกครั้ง ฉันได้รับรายชื่อการเชื่อมต่อจำนวนมาก ซึ่งเล็กกว่าครั้งแรก แต่ก็ยังใหญ่เกินกว่าจะเข้าใจ ดังนั้นฉันจึงใช้คำสั่ง “wc -l” เพื่อนับจำนวนบรรทัดในเอาต์พุต เพื่อดูว่าฉันมีการเชื่อมต่อจำนวนเท่าใดบนพอร์ต 80 ของฉัน:
# netstat -ant | grep 80 | wc -l
625
แล้วฉันก็ทำเช่นเดียวกันกับ MySQL:
# netstat -ant | grep 3306 | wc -l
61
ตอนนี้ ถ้าฉันต้องการได้ภาพที่สมบูรณ์ของสิ่งที่เกิดขึ้นบนเซิร์ฟเวอร์ของฉันในแง่ของธรรมชาติของการเชื่อมต่อ นี่คือสิ่งที่ฉันทำ:
# netstat -ant | awk '{พิมพ์ $6}' | เรียงลำดับ | uniq -c | เรียงลำดับ -n
ก่อตั้ง 1 แห่ง)
1 ต่างประเทศ
4 FIN_WAIT2
8 LISTEN
16 CLOSE_WAIT
134 ESTABLISHED
409 TIME_WAIT
สิ่งนี้บอกฉันว่ามีการเชื่อมต่อสถานะประเภทต่าง ๆ ที่ฉันมีในเครื่องของฉันกี่แห่ง ฉันสามารถเรียกใช้คำสั่งที่คล้ายกันเพื่อดูภาพรวมสถานะของการเชื่อมต่อทั้งหมดที่ทำกับเว็บเซิร์ฟเวอร์ของฉัน:
netstat -ant | grep 80 | awk '{พิมพ์ $6}' | เรียงลำดับ | uniq -c | เรียงลำดับ -n
1 FIN_WAIT1
4 LISTEN
6 FIN_WAIT2
17 CLOSE_WAIT
94 ESTABLISHED
534 TIME_WAIT
คุณสามารถดำเนินการต่างๆ ที่ซับซ้อนมากขึ้นได้โดยใช้ Netstat ร่วมกับเครื่องมือบรรทัดคำสั่ง Linux อื่นๆ การทำความคุ้นเคยกับเทคนิคบางอย่างในการรับข้อมูลประเภทนี้โดยใช้ Netstat อาจเป็นประโยชน์ โดยเฉพาะอย่างยิ่งเมื่อคุณต้องเผชิญกับการโจมตีบนเซิร์ฟเวอร์ของคุณ เนื่องจากคุณสามารถใช้ข้อมูลในไฟร์วอลล์ของคุณ