วิธีใช้ 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 -lt # สำหรับ TCP
- netstat -lu # สำหรับ UDP
- netstat -lx # สำหรับ Unix
หรือคุณสามารถไปที่ปลายอีกด้านหนึ่งของสเปกตรัมและแสดงรายการการเชื่อมต่อทั้งหมด
- netstat -a
หากคุณต้องการตัวเลือกอื่นที่ควรคำนึงถึงคือการใช้ตัวเลือก 'n' เมื่อใช้ netstat -n หรือ netstat -ltn เช่นชื่อโฮสต์ทั้งหมดจะไม่พยายามแก้ไขอีกต่อไปและจะแสดงเฉพาะที่อยู่ IP ดังตัวอย่างด้านล่าง
อย่างที่คุณเห็น localhost ในชื่อได้รับการแก้ไขเป็นค่าตัวเลขหลังจากใช้ตัวเลือก 'n'
อีกวิธีหนึ่งในการใช้ netstat คือ netstat -ie ซึ่งเป็น 'i' สำหรับอินเทอร์เฟซและ 'e' สำหรับ 'ขยาย' ซึ่งจะช่วยให้เราสามารถอ่านผลลัพธ์ได้มากขึ้น
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 .
ตอนนี้คุณ: คุณต้องการยูทิลิตี้ใดในการตรวจสอบข้อมูลเครือข่ายและเพราะเหตุใด แจ้งให้เราทราบในความคิดเห็น!
บทความที่เกี่ยวข้อง
- ฉันจะค้นหาข้อมูลเครือข่ายของฉัน - ใน Linux ได้อย่างไร
- พื้นฐานการแก้ไขปัญหาเครือข่าย: คำสั่ง Ipconfig
- การตั้งค่าส่วนหน้าของ CSF Firewall สำหรับ IPTables
- เครื่องมือผู้ดูแลระบบ Linux ที่มีประโยชน์ แต่คลุมเครือ
- แก้ไขปัญหาระบบเครือข่ายด้วย Nettools ของ Gnome