วิธีใช้ netstat ใน GNU / Linux

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

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

Netstat ยังมีประโยชน์สำหรับการรักษาความปลอดภัยและความเป็นส่วนตัวเช่นเพื่อค้นหาว่าโปรแกรมใด 'พูดคุย' กับอินเทอร์เน็ต

การใช้ netstat อาจเป็นกระบวนการที่ง่ายมากหรืออาจมีความซับซ้อนและหนักมากขึ้นอยู่กับการใช้งาน ดังนั้นวันนี้เราจะมาดูการใช้งานทั่วไปสำหรับ Netstat

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

การติดตั้ง?

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

ข้อมูลพื้นฐานเกี่ยวกับ Netstat

คำสั่ง netstat พื้นฐานมีลักษณะดังนี้:

netstat ARGUMENT OPTIONS

โดย ARGUMENT คือประเภทของตระกูลที่อยู่ที่คุณต้องการข้อมูลและ OPTIONS คือตัวเลือกเสริมที่จะระบุประเภทของข้อมูลที่คุณได้รับคืน

เนื่องจาก netstat มีตัวเลือกมากมายจึงอาจดีที่สุดหากฉันแสดงรายการตัวเลือกที่มีประโยชน์มากกว่านี้ก่อน

  • ถึง : แสดงสถานะของซ็อกเก็ตและรายการตารางเส้นทางทั้งหมด
  • : แสดงข้อมูลอย่างต่อเนื่อง
  • d : แสดงสถานะของอินเทอร์เฟซทั้งหมดที่ใช้ DHCP
  • คือ : แสดงข้อมูลเพิ่มเติม
  • ก. : แสดงข้อมูลการเป็นสมาชิกกลุ่มแบบหลายผู้รับสำหรับทั้ง IPv4 และ IPv6
  • ผม : แสดงตารางของ inferfaces ของเครือข่ายทั้งหมด
  • ล. : จำกัด สถิติไว้ที่อินเทอร์เฟซที่กำหนด
  • M : แสดงตารางเส้นทางแบบหลายผู้รับ
  • n : แสดงที่อยู่เครือข่ายเป็นตัวเลขแทนสัญลักษณ์เริ่มต้น
  • พี : แสดงตารางการแก้ไขที่อยู่
  • P : จำกัด สถิติไว้ที่โปรโตคอลที่กำหนด
  • R : แสดงตารางเส้นทางทั้งหมด
  • เสื้อ : แสดงการเชื่อมต่อ TCP
  • ยู : แสดงการเชื่อมต่อ UDP
  • โวลต์ : ใช้โหมด verbose สำหรับเอาต์พุต

ลองมาดูวิธีการใช้งานร่วมกัน

netstat

ด้วยตัวมันเอง (ไม่มีตัวเลือก) คำสั่งนี้จะพิมพ์สถิติทั่วไปของโฮสต์ที่คุณกำลังเชื่อมต่ออยู่

netstat -an

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

netstat -rn

คำสั่งนี้จะแสดงตารางเส้นทางสำหรับโฮสต์ในรูปแบบตัวเลข

netstat -r

คำสั่งนี้จะแสดงตารางเส้นทางสำหรับโฮสต์ของคุณ

netstat -natp

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

netstat -t - น่าฟัง

นี่จะแสดงพอร์ต tcp ทั้งหมดที่คุณโฮสต์กำลังฟังอยู่

netstat - สถิติ

คำสั่งนี้จะแสดงสถิติต่างๆสำหรับอินเทอร์เฟซของโฮสต์ของคุณ โปรดทราบว่าคำสั่งนี้จะแสดงสถิติจำนวนมาก

อย่างที่คุณเห็นคำสั่งนี้จะแสดงข้อมูลค่อนข้างน้อย ยิ่งไปกว่านั้นคุณอาจต้องไพพ์คำสั่งนี้ผ่านคำสั่ง less เพื่อให้ดูได้ง่ายขึ้น คำสั่งแบบเต็มนั้นจะมีลักษณะเหมือน netstat --statistics | น้อยกว่า การใช้วิธีนี้จะช่วยให้คุณใช้ปุ่มลูกศรเพื่อเลื่อนขึ้นและลงผ่าน ouput

คำแนะนำการใช้งานสำหรับ Netstat

หนึ่งในวิธีพื้นฐานที่สุดและทั่วไปในการใช้ netstat คือการตรวจสอบว่าพอร์ตใดกำลังฟังอยู่

  • netstat -l

ซึ่งให้สิ่งนี้กับระบบ Antergos ที่เพิ่งติดตั้งใหม่

netstat -l

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

  • netstat -lt # สำหรับ TCP
  • netstat -lu # สำหรับ UDP
  • netstat -lx # สำหรับ Unix

หรือคุณสามารถไปที่ปลายอีกด้านหนึ่งของสเปกตรัมและแสดงรายการการเชื่อมต่อทั้งหมด

  • netstat -a

หากคุณต้องการตัวเลือกอื่นที่ควรคำนึงถึงคือการใช้ตัวเลือก 'n' เมื่อใช้ netstat -n หรือ netstat -ltn เช่นชื่อโฮสต์ทั้งหมดจะไม่พยายามแก้ไขอีกต่อไปและจะแสดงเฉพาะที่อยู่ IP ดังตัวอย่างด้านล่าง

netstat-ltn

อย่างที่คุณเห็น localhost ในชื่อได้รับการแก้ไขเป็นค่าตัวเลขหลังจากใช้ตัวเลือก 'n'

อีกวิธีหนึ่งในการใช้ netstat คือ netstat -ie ซึ่งเป็น 'i' สำหรับอินเทอร์เฟซและ 'e' สำหรับ 'ขยาย' ซึ่งจะช่วยให้เราสามารถอ่านผลลัพธ์ได้มากขึ้น

netstat -ie # นี่จะแสดงรายการอินเทอร์เฟซเครือข่ายและข้อมูลเกี่ยวกับอุปกรณ์แต่ละเครื่อง

netstat ie

เคล็ดลับ Netstat ขั้นสูง

สิ่งที่เราต้องการทำคือบอก netstat ให้ส่งเอาต์พุตสำหรับแอปพลิเคชันเฉพาะที่กำลังรับฟังการเชื่อมต่อ tcp ในการทำสิ่งนี้เราออกคำสั่ง:

  • netstat --tcp - การฟัง - โปรแกรม

ผลลัพธ์สำหรับคำสั่งนี้จะมีลักษณะดังนี้:

Proto Recv-Q Send-Q Local Address ที่อยู่ต่างประเทศ Stat PID / Program
tcp 0 0 *: ssh *: * LISTEN 25469 / sshd
tcp 0 0 *: httpd *: * LISTEN 26754 / httpd
tcp 0 0 localhost: ipp *: * LISTEN -

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

เส้นทาง

Netstat สามารถพิมพ์ตารางเส้นทางเคอร์เนลของเครื่องของคุณได้อย่างรวดเร็วด้วยคำสั่ง:

netstat -r

ผลลัพธ์ของคำสั่งนี้จะมีลักษณะดังนี้:

ตารางเส้นทาง IP ของเคอร์เนล
เกตเวย์ปลายทาง Genmask แฟล็ก MSS Window irtt Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
ค่าเริ่มต้น 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

สถิติ

นี่เป็นหนึ่งในเครื่องมือที่สะดวกกว่าของ netstat ด้วยวิธีนี้คุณจะพบสถิติที่แน่นอนสำหรับแต่ละโปรโตคอล โครงสร้างคำสั่งพื้นฐานคือ:

netstat - สถิติ

ซึ่งจะให้ข้อมูลมากกว่าที่คุณต้องการ สมมติว่าคุณต้องการดูสถิติในโปรโตคอล TCP เท่านั้น สำหรับสิ่งนี้คุณสามารถออกคำสั่ง:

netstat -t - สถิติ

ผลลัพธ์ของคำสั่งดังกล่าวจะรวมถึงข้อมูลต่างๆเช่น:

TCP:
4343 ช่องเปิดการเชื่อมต่อที่ใช้งานอยู่
ช่องเปิดการเชื่อมต่อแบบพาสซีฟ 8 ช่อง
พยายามเชื่อมต่อไม่สำเร็จ 5 ครั้ง
ได้รับการรีเซ็ตการเชื่อมต่อ 178 ครั้ง
สร้างการเชื่อมต่อ 6 รายการ
59075 ส่วนที่ได้รับ
60033 ส่วนส่งออก
76 ส่วนส่งใหม่
ได้รับ 0 กลุ่มที่ไม่ดี
ส่งการรีเซ็ต 303 รายการ

หรือคุณสามารถรับข้อมูลเกี่ยวกับ UDP ได้ด้วยคำสั่ง:

netstat -u - สถิติ

ซึ่งจะให้ผลลัพธ์ที่คล้ายกันสำหรับโปรโตคอล UDP

สร้างสรรค์

จะเป็นอย่างไรหากคุณต้องการเห็นที่อยู่ IP เฉพาะทั้งหมดที่เชื่อมต่อกับเซิร์ฟเวอร์ คุณสามารถทำได้ด้วย netstat (และความช่วยเหลือของเครื่องมืออื่น ๆ ) ดังนี้:

netstat -nat | awk '{print $ 5}' | ตัด -d: -f1 | sed -e '/ ^ $ / d | UNIQ

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

สิ่งที่เกี่ยวกับการตรวจสอบว่าเซิร์ฟเวอร์ของคุณถูกโจมตีด้วย DOS หรือไม่? คุณสามารถทำได้ด้วย netstat ดังนี้:
netstat -anp | grep 'tcp | udp' | awk '{print $ 5}' | ตัด -d: -f1 | เรียงลำดับ | uniq -c | เรียงลำดับ -n

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

ความคิดสุดท้าย

Netstat เป็นหนึ่งในเครื่องมือที่คุณไม่เคยคิดว่าจะต้องใช้จริงๆจนกระทั่งคุณได้ทำ และเป็นเรื่องดีเสมอที่จะรู้วิธีใช้ในกรณีที่มีความจำเป็นเกิดขึ้นอย่างน้อยก็ในระดับพื้นฐาน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้คำสั่ง netstat และตัวเลือกโปรดดูที่ man page โดยพิมพ์ man netstat .

ตอนนี้คุณ: คุณต้องการยูทิลิตี้ใดในการตรวจสอบข้อมูลเครือข่ายและเพราะเหตุใด แจ้งให้เราทราบในความคิดเห็น!

บทความที่เกี่ยวข้อง