เข้าใจความเสี่ยงของ policy สอบถามเรื่อง policy ได้ด้วยภาษาทั่วไป ขอชมการสาธิต →

Published:

พื้นฐาน Firewall Policy – วิธีตรวจสอบ Stealth Rule

by FireMon

อัปเดต – มกราคม 2017

Stealth rule ของ firewall คือกฎที่กำหนดไว้อย่างชัดเจนในลำดับต้น ๆ ของ policy เพื่อปฏิเสธการเข้าถึงตัว firewall ทุกรูปแบบที่เกินความจำเป็นต่อการบริหารจัดการอุปกรณ์ โดยควรกำหนดไว้ดังนี้

Source = ANY

Destination = [self]

Service / Application = ANY

Action = DROP

Logging = Enabled

ข้อกำหนดนี้อาจไม่ครอบคลุม firewall บางรุ่น เช่น Juniper Netscreen ที่ควบคุมการเข้าถึงเชิงบริหารจัดการผ่านการตั้งค่าระดับ interface แทนการกำหนดใน firewall policy อย่างไรก็ตาม แม้ในกรณีเหล่านี้ ผู้ตรวจสอบก็ยังอาจกำหนดให้ต้องมี stealth rule ตามแนวปฏิบัติทั่วไป

เหตุใดจึงต้องกำหนด Stealth Rule

Stealth Rule ช่วยให้มั่นใจว่ากฎที่กำหนดในลำดับถัดไปของ policy จะไม่เปิดให้เข้าถึงตัว firewall โดยไม่ได้ตั้งใจ ตัวอย่างเช่น firewall อาจมี interface อยู่ใน zone ชื่อ Web-DMZ และทีมพัฒนาเว็บยื่นคำขอให้เปิด SSH เข้าถึงทุกระบบใน Web-DMZ เมื่อมองอย่างผิวเผิน คำขอนี้ดูสมเหตุสมผล เพราะทีมดังกล่าวเป็นเจ้าของระบบทั้งหมดที่อยู่ใน Web-DMZ แต่หากไม่มีการกำหนด Stealth Rule ไว้อย่างถูกต้อง การเข้าถึงด้วย SSH จะไม่ได้ครอบคลุมเฉพาะเซิร์ฟเวอร์ใน Web-DMZ เท่านั้น แต่รวมถึงตัว firewall เองด้วย ซึ่งชัดเจนว่าไม่เหมาะสม และผู้ดูแล firewall อาจไม่พบปัญหานี้เลยเป็นเวลาหลายปี

เพื่อหลีกเลี่ยงข้อผิดพลาดที่ดูเล็กน้อยแต่ส่งผลรุนแรงนี้ ควรกำหนด Stealth Rule ไว้ใน firewall policy เสมอ

วิธีตรวจสอบว่ามี Stealth Rule อยู่หรือไม่

ขั้นตอนนี้ไม่ซับซ้อน ให้ตรวจสอบทุก policy และยืนยันว่ามีกฎอยู่ในลำดับต้น ๆ ของ policy ถัดจากกฎสำหรับการบริหารจัดการที่จำเป็น ซึ่งปฏิเสธทราฟฟิกทั้งหมดที่มุ่งไปยัง firewall (Any, Self, Any, Drop, Log)

FireMon ช่วยได้อย่างไร

FireMon มี control ที่กำหนดไว้ล่วงหน้าสำหรับตรวจสอบว่ามี Stealth Rule อยู่ในแต่ละ policy หรือไม่ control นี้เป็นส่วนหนึ่งของชุดการประเมินที่กำหนดไว้ล่วงหน้า และยังเพิ่มเข้าไปในการประเมินที่ผู้ใช้กำหนดเองได้เช่นกัน

อีกทางเลือกที่ทรงประสิทธิภาพคือการค้นหากฎด้วยตนเองโดยใช้ SiCL ซึ่งในกรณีนี้การค้นหาทำได้ไม่ยาก สิ่งที่ต้องยืนยันคือมีกฎที่กำหนดไว้อย่างชัดเจนในลำดับต้น ๆ ของ policy ซึ่ง drop ทราฟฟิกทั้งหมดที่มุ่งไปยัง firewall เมื่อใช้ตัวแปรที่กำหนดไว้ล่วงหน้าอย่าง self ท่านสามารถสร้าง SiCL query ที่ใช้ได้กับทุกอุปกรณ์ โดยไวยากรณ์ SiCL สำหรับการค้นหานี้คือ

rule{ POSITION < 5 and source.any=true and destination is superset of self and SERVICE.any=true and action=’DROP’}

ในตัวอย่างข้างต้น ผมกำหนดให้กฎดังกล่าวต้องอยู่ใน 4 กฎแรกของ policy และปลายทางต้องครอบคลุม address space ของ firewall ทั้งหมด (destination is superset of self) โดย superset หมายรวมถึงกรณีที่เท่ากันและกว้างกว่า ส่วน self คือ object ของตัว firewall เอง

พื้นฐาน Firewall Policy: การตรวจสอบ Stealth Rule | FireMon