วิธีตรวจสอบประสิทธิภาพเครือข่าย ความปลอดภัย และการแก้ไขปัญหาใน 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 เป็นยูทิลิตี้ตัวทำแผนที่เครือข่ายที่ทรงพลังและอเนกประสงค์อย่างแท้จริง และคุณควรจะคุ้นเคยเป็นอย่างดีกับมัน เพื่อปกป้องระบบที่คุณรับผิดชอบจากการโจมตีที่เกิดขึ้นหลังจากการสแกนพอร์ตที่เป็นอันตรายโดยบุคคลภายนอก