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

วิธีตรวจสอบประสิทธิภาพเครือข่าย ความปลอดภัย และการแก้ไขปัญหาใน Linux - ตอนที่ 12


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

นี่เป็นส่วนสุดท้ายของซีรีส์ LFCE (Linux Foundation Certified Engineer) ที่นี่เราจะตรวจสอบเครื่องมือที่รู้จักกันดีเพื่อตรวจสอบประสิทธิภาพและเพิ่มความปลอดภัยของเครือข่าย และจะทำอย่างไรเมื่อสิ่งต่างๆ ไม่เป็นไปตามที่คาดไว้

ขอแนะนำโปรแกรมการรับรอง Linux Foundation

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

บริการใดบ้างที่กำลังทำงานอยู่และเพราะเหตุใด

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

ตัวอย่างเช่น คุณต้องปิดการใช้งานเซิร์ฟเวอร์ FTP หากเครือข่ายของคุณไม่ต้องการเซิร์ฟเวอร์ (ยังมีวิธีการที่ปลอดภัยกว่าในการแชร์ไฟล์ผ่านเครือข่าย) นอกจากนี้คุณควรหลีกเลี่ยงการมีเว็บเซิร์ฟเวอร์และเซิร์ฟเวอร์ฐานข้อมูลในระบบเดียวกัน หากส่วนประกอบหนึ่งถูกบุกรุก ส่วนที่เหลือก็จะเสี่ยงต่อการถูกบุกรุกเช่นกัน

ตรวจสอบการเชื่อมต่อซ็อกเก็ตด้วย ss

ss ใช้เพื่อถ่ายโอนสถิติซ็อกเก็ตและแสดงข้อมูลที่คล้ายกับ netstat แม้ว่าจะสามารถแสดงข้อมูล TCP และสถานะได้มากกว่าเครื่องมืออื่นๆ นอกจากนี้ ยังมีการระบุไว้ใน man netstat เพื่อแทนที่ netstat ซึ่งล้าสมัย

อย่างไรก็ตาม ในบทความนี้เราจะเน้นไปที่ข้อมูลที่เกี่ยวข้องกับความปลอดภัยของเครือข่ายเท่านั้น

ตัวอย่างที่ 1: การแสดงพอร์ต TCP ทั้งหมด (ซ็อกเก็ต) ที่เปิดบนเซิร์ฟเวอร์ของเรา

บริการทั้งหมดที่ทำงานบนพอร์ตเริ่มต้น (เช่น http บน 80, mysql บน 3306) จะถูกระบุด้วยชื่อที่เกี่ยวข้อง ส่วนอื่นๆ (ถูกบดบังไว้ที่นี่ด้วยเหตุผลด้านความเป็นส่วนตัว) จะแสดงในรูปแบบตัวเลข

ss -t -a

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

ตัวอย่างที่ 2: การแสดงการเชื่อมต่อ TCP ที่ใช้งานอยู่ทั้งหมดด้วยตัวจับเวลา
ss -t -o

ในผลลัพธ์ด้านบน คุณจะเห็นว่ามีการเชื่อมต่อ SSH ที่สร้างไว้ 2 รายการ หากคุณสังเกตเห็นค่าของฟิลด์ที่สองของ ตัวจับเวลา: คุณจะสังเกตเห็นค่า 36 นาทีในการเชื่อมต่อครั้งแรก นั่นคือระยะเวลาก่อนที่จะส่งการสอบสวน Keepalive ครั้งถัดไป

เนื่องจากเป็นการเชื่อมต่อที่ยังคงอยู่ คุณสามารถสรุปได้อย่างปลอดภัยว่าเป็นการเชื่อมต่อที่ไม่ได้ใช้งาน และสามารถปิดกระบวนการได้หลังจากค้นหา PID แล้ว

ส่วนการเชื่อมต่อครั้งที่สองจะเห็นว่ากำลังใช้งานอยู่ (ตามที่ระบุโดย เปิด)

ตัวอย่างที่ 3: การกรองการเชื่อมต่อตามซ็อกเก็ต

สมมติว่าคุณต้องการกรองการเชื่อมต่อ TCP ตามซ็อกเก็ต จากมุมมองของเซิร์ฟเวอร์ คุณต้องตรวจสอบการเชื่อมต่อที่พอร์ตต้นทางคือ 80

ss -tn sport = :80

ที่เกิดขึ้นใน..

การป้องกันการสแกนพอร์ตด้วย NMAP

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

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

ตัวอย่างที่ 4: การแสดงข้อมูลเกี่ยวกับพอร์ตที่เปิดอยู่

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อสแกนว่าพอร์ตใดเปิดอยู่บนระบบของคุณหรือในโฮสต์ระยะไกล:

nmap -A -sS [IP address or hostname]

คำสั่งข้างต้นจะสแกนโฮสต์เพื่อหาการตรวจจับ OS และ เวอร์ชัน ข้อมูลพอร์ต และการติดตาม (-A) สุดท้าย -sS จะส่งการสแกน TCP SYN เพื่อป้องกันไม่ให้ nmap ทำการแฮนด์เชค TCP แบบ 3 ทาง และโดยทั่วไปแล้วจะไม่ทิ้งบันทึกใดๆ ไว้ในเครื่องเป้าหมาย

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

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

อย่างที่คุณเห็น เราค้นพบความผิดปกติหลายประการที่เราควรทำเพื่อรายงานต่อผู้ดูแลระบบของมหาวิทยาลัยในท้องถิ่นแห่งนี้

การดำเนินการสแกนพอร์ตเฉพาะนี้ให้ข้อมูลทั้งหมดที่สามารถรับได้จากคำสั่งอื่น เช่น:

ตัวอย่างที่ 5: การแสดงข้อมูลเกี่ยวกับพอร์ตเฉพาะในระบบโลคัลหรือรีโมต
nmap -p [port] [hostname or address]
ตัวอย่างที่ 6: การแสดง Traceroute และค้นหาเวอร์ชันของบริการและประเภทระบบปฏิบัติการ ชื่อโฮสต์
nmap -A [hostname or address]
ตัวอย่างที่ 7: การสแกนพอร์ตหรือโฮสต์หลายรายการพร้อมกัน

คุณยังสามารถสแกนพอร์ต (ช่วง) หรือเครือข่ายย่อยได้หลายพอร์ต ดังนี้:

nmap -p 21,22,80 192.168.0.0/24 

หมายเหตุ: คำสั่งดังกล่าวจะสแกนพอร์ต 21, 22 และ 80 บนโฮสต์ทั้งหมดในส่วนเครือข่ายนั้น

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