กฎแจ้งเตือน
กฎแจ้งเตือนคือเงื่อนไขที่ตรวจ log ของ tenant คุณอย่างต่อเนื่อง แล้วแจ้งทีมเมื่อพบสิ่งผิดปกติ — ตั้งค่าได้เองจากหน้าจอ โดยไม่ต้องเขียนโค้ด ส่วนหน้านี้อธิบายทั้งวิธีสร้างกฎ (สำหรับผู้ดูแลระบบของ tenant) และสิ่งที่เกิดขึ้นเบื้องหลังเมื่อกฎทำงานจริง (สำหรับทีม SOC ที่ต้องสืบสวนต่อจากการแจ้งเตือน)
การทำงาน
ระบบตรวจกฎที่เปิดใช้งานทุก tenant ทุก 60 วินาที แต่ละกฎรัน query กับ log ของ tenant ตัวเองเท่านั้น กฎหนึ่งที่ตรวจช้าหรือผิดพลาดจะไม่ทำให้กฎอื่นหยุดตาม เมื่อค่าที่วัดได้ถึงเกณฑ์ที่ตั้งไว้ ระบบจะบันทึกเป็นรายการแจ้งเตือน และส่งข้อความ Telegram ทันที (ถ้าเปิด ส่งการแจ้งเตือนผ่าน Telegram ไว้)
- กฎแต่ละข้อจำกัดเฉพาะอุปกรณ์ที่เลือกไว้ใน อุปกรณ์ที่เฝ้าดู — ค่าเริ่มต้นคือทุกอุปกรณ์ที่ใช้งานอยู่ของ tenant
- เปิด นับแยกรายอุปกรณ์ เพื่อให้แต่ละอุปกรณ์เทียบกับเกณฑ์แยกกัน แจ้งเตือนทันทีที่อุปกรณ์ใดอุปกรณ์หนึ่งถึงเกณฑ์ ไม่ต้องรอรวมทุกอุปกรณ์
- กฎที่ผูกกับอุปกรณ์ซึ่งถูกลบหรือปิดใช้งานไปแล้วทั้งหมดจะถูกข้ามในรอบนั้น ไม่เงียบขยายไปตรวจอุปกรณ์อื่นแทน
ประเภทของกฎ
เลือกได้จากช่อง ประเภทกฎ ตอนสร้างกฎแบบกำหนดเอง — ทั้งสามแบบใช้ตัวกรอง LogsQL เดียวกันเป็นฐาน ต่างกันที่วิธีตัดสินว่าถึงเกณฑ์หรือไม่
| ประเภท | วิธีตัดสิน | ใช้เมื่อไหร่ |
|---|---|---|
| Threshold | นับ/รวม/นับค่าไม่ซ้ำ แล้วเทียบกับเกณฑ์คงที่ตัวเดียว | รู้ตัวเลขที่ถือว่าผิดปกติอยู่แล้ว เช่น ทราฟฟิกขาออกเกิน 5 GB ใน 1 ชั่วโมง |
| Correlation | เชื่อมหลายเหตุการณ์ของ entity เดียวกันตามลำดับเวลา (Stages) | รูปแบบการโจมตีที่ต้องดูหลายเหตุการณ์ประกอบกัน เช่น login ผิดหลายครั้งแล้วสำเร็จจาก IP อื่นภายในเวลาสั้นๆ |
| Baseline | เทียบกับค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานของกลุ่มนั้นเองย้อนหลัง แทนเกณฑ์คงที่ | แต่ละอุปกรณ์/ผู้ใช้มีปริมาณ log ปกติไม่เท่ากัน จึงตั้งเลขตายตัวลำบาก เช่น ทราฟฟิกพุ่งผิดปกติเทียบกับพฤติกรรมปกติของอุปกรณ์นั้น |
สร้างกฎ
จากหน้า กฎการแจ้งเตือน เลือก กฎใหม่ แล้วเลือกทางใดทางหนึ่ง: เลือกเทมเพลตกฎ (คลังกฎสำเร็จรูปจาก Sigma และ preset ที่มีให้ใช้ทันที) หรือ สร้างกฎของคุณเอง เพื่อกำหนดทุกอย่างเอง
ฟิลด์หลักของกฎแบบกำหนดเอง:
| ฟิลด์ | ความหมาย |
|---|---|
| ชื่อกฎ * | ชื่อที่จะแสดงในรายการแจ้งเตือนและข้อความ Telegram |
| ระดับความรุนแรง * | critical · high · medium · low |
| ตัวกรอง LogsQL | เงื่อนไขคัดกรอง log ก่อนนำไปคำนวณ เช่น เฉพาะ type ที่สนใจ |
| สิ่งที่จะวัด | นับจำนวน (count) · รวมค่าฟิลด์ตัวเลข (sum) · นับค่าไม่ซ้ำ (count distinct) |
| เกณฑ์ | ตัวเลขที่ถือว่าถึงจุดแจ้งเตือน (เฉพาะ Threshold/Baseline ขั้นสูง) |
| ช่วงเวลา | ช่วงย้อนหลังที่นำมาคำนวณค่า |
| ระยะพักการแจ้งเตือน | หลังแจ้งเตือนครั้งหนึ่ง จะไม่แจ้งซ้ำจนกว่าจะพ้นช่วงนี้ แม้ยังเข้าเงื่อนไขต่อเนื่อง |
| จำกัดเฉพาะประเภทสินทรัพย์ | จำกัดขอบเขตให้ตรงเฉพาะทราฟฟิกที่แตะ IP ซึ่งติดแท็กประเภทสินทรัพย์ที่เลือกไว้ในหน้า Assets |
| Hash ไฟล์ที่รู้ว่าเป็นมัลแวร์ | จำกัดเฉพาะเหตุการณ์ที่ค่าแฮชไฟล์ตรงกับรายการอันตรายที่รู้จักจากฟีดข่าวกรองภัยคุกคาม |
| ส่งการแจ้งเตือนผ่าน Telegram | เปิด/ปิดการส่งข้อความไปยังทุกช่อง Telegram ที่เปิดใช้งานไว้เมื่อกฎนี้ทำงาน |
ถ้าไม่มีสินทรัพย์ในหมวดที่เลือกไว้เลย หรือยังไม่มีข้อมูลแฮชอันตรายในระบบ กฎรอบนั้นจะถูกข้าม ไม่ใช่แจ้งเตือนแบบไม่มีเงื่อนไข
ทดสอบกฎนี้กับล็อกจริงของคุณ
ก่อนบันทึกกฎ กด รันการทดสอบ เพื่อรัน query จริงกับ log ของ tenant คุณโดยไม่มีผลข้างเคียง — ไม่สร้างรายการแจ้งเตือน ไม่นับ fire count และไม่กระทบระยะพักการแจ้งเตือนที่มีอยู่แล้ว ผลลัพธ์จะบอกว่า กฎนี้จะแจ้งเตือนทันทีหากใช้งานจริง หรือ ยังต่ำกว่าเกณฑ์ จึงยังไม่แจ้งเตือน พร้อมค่าที่วัดได้จริงเทียบกับเกณฑ์
- ถ้าเปิด ส่งการแจ้งเตือนผ่าน Telegram ไว้และผลทดสอบตรงเงื่อนไข ระบบจะส่งข้อความทดสอบจริงไปยังช่องที่ตั้งค่าไว้ พร้อมป้ายกำกับชัดเจนว่าเป็นข้อความทดสอบ
- กฎแบบ Correlation ยังไม่รองรับการทดสอบแบบนี้ — ต้องใช้เวลาจริงหลายรอบเพื่อไล่ครบทุกขั้นตอน
- กฎแบบ Baseline ที่ยังไม่เคยบันทึกก็ยังทดสอบไม่ได้เช่นกัน เพราะยังไม่มีประวัติให้เทียบ
เมื่อกฎทำงาน
รายการแจ้งเตือนใหม่ปรากฏใน Firing now ของหน้า Alerts ทันที พร้อมอุปกรณ์ที่เป็นต้นเหตุหลักและสัดส่วนของอุปกรณ์อื่นที่เกี่ยวข้อง (สำหรับกฎที่นับแยกรายอุปกรณ์ ข้อมูลนี้มาจากผลตรวจโดยตรง ส่วนกฎแบบรวมทุกอุปกรณ์ ระบบจะยิง query เพิ่มอีกครั้งเฉพาะตอนแจ้งเตือนเพื่อหาตัวเลขนี้)
จากรายการแจ้งเตือน วิเคราะห์ต่อได้ทันทีด้วยปุ่มเปิดใน Explorer หรือแนบเข้าเคสที่มีอยู่ ถ้ากำหนด groupBy ให้ตรงกับ entity ของกฎไว้ (เช่น user.name) คะแนนความเสี่ยงของ entity นั้นจะถูกปรับเพิ่มโดยอัตโนมัติ ดูสะสมได้ที่หน้า Entities
ปิดเคสและติดตามความแม่นยำ
เมื่อตรวจสอบเสร็จแล้ว ทำเครื่องหมายรายการเป็น รับทราบ หรือ ปิด จากหน้า Alerts — ตอนปิดสามารถ เลือกเหตุผลเพิ่มเติมได้ (ไม่บังคับ):
| เหตุผล | ความหมาย |
|---|---|
| แจ้งเตือนถูกต้อง (True positive) | เป็นเหตุการณ์จริงที่ต้องดำเนินการต่อ |
| แจ้งเตือนผิดพลาด (False positive) | ไม่ใช่เหตุการณ์จริง กฎตีความคลาดเคลื่อน |
| ไม่เป็นอันตราย (Benign) | เกิดขึ้นจริงแต่เป็นกิจกรรมปกติ ไม่ใช่ภัยคุกคาม |
| ซ้ำกับรายการอื่น (Duplicate) | เหตุการณ์เดียวกันถูกแจ้งเตือนซ้ำจากกฎหรือรอบอื่น |
| อื่น ๆ | เหตุผลอื่นนอกเหนือจากรายการข้างต้น |
เหตุผลที่สะสมไว้นี้คือสิ่งที่บอกความแม่นยำของแต่ละกฎในระยะยาว แทนที่จะดูแค่จำนวนครั้งที่แจ้งเตือน — การปิดโดยไม่เลือกเหตุผลก็ยังใช้งานได้ตามปกติ ไม่บังคับ
ขั้นต่อไป
ให้ระบบทำงานต่อหลังกฎแจ้งเตือนโดยอัตโนมัติ — เปิดเคสหรือส่งข้อความ Telegram เพิ่มไปยังช่องเฉพาะทีมที่ต้องรับผิดชอบต่อ — ดูวิธีตั้งค่าที่หน้า Playbooks
ดูว่าผู้ใช้ IP หรือโฮสต์ใดถูกแจ้งเตือนสะสมมากที่สุดได้ที่ เอนทิตี