Rules

Import và Export Rules

Hướng dẫn xuất và nhập các Rule trên hệ thống.

Import Rules

Người dùng có thể import Detection Rules từ tệp YAML. Hệ thống kiểm tra tất cả Rule trong lượt import trước khi nhập; nếu có lỗi, không có Rule nào được import.

Các bước thực hiện

  1. Tại màn hình Detections → Rule, nhấn Import Yaml. Hệ thống hiển thị popup Import Yaml.
  2. Nhấn Download sample để tải tệp mẫu cấu trúc Rule.
  3. Dựa theo cấu trúc trong tệp mẫu, khai báo các Rule cần import. Mỗi Rule là một tài liệu YAML riêng; nếu tệp có nhiều Rule, phân cách từng Rule bằng dòng ---.
  4. Tải tệp .yaml hoặc .yml lên popup bằng cách nhấn Click to upload hoặc kéo thả tệp vào vùng tải lên.
  5. Nhấn Import. Hệ thống kiểm tra các Rule trước khi import.
  6. Nếu hệ thống hiển thị lỗi, chỉnh sửa tệp YAML theo thông báo lỗi rồi tải tệp lên và import lại.
  7. Khi import thành công, các Rule được tạo ở trạng thái Inactive trong tab Custom.
Lưu ý:
  • Mỗi lượt import hỗ trợ tối đa 10 tệp .yaml hoặc .yml; mỗi tệp không quá 1 MiB và tổng số Rule tối đa là 100.
  • Để chuyển Rule sang trạng thái Active, cần chọn Sources cho Rule.

Nguyên tắc import

  • Tất cả hoặc không có gì: hệ thống kiểm tra toàn bộ Rule trước khi lưu. Nếu có một Rule không hợp lệ, không Rule nào được tạo và hệ thống liệt kê toàn bộ lỗi.
  • Rule mới ở trạng thái Inactive: Sources thuộc về môi trường của bạn nên không nằm trong tệp. Cần chọn Sources rồi mới kích hoạt Rule.
  • Rule thuộc về người import: mỗi Rule được tạo là Rule của người dùng, nằm trong nhóm Default, có ID mới và tác giả là người import. Số Rule import được tính vào hạn mức Rule (quota) và được kiểm tra trước khi lưu.
  • Loại Rule hỗ trợ: Streaming (Sigma), Threshold Correlation và Custom Correlation. Không hỗ trợ Sequence Correlation.
  • Quyền hạn: người dùng cần có quyền chỉnh sửa Rule.
Giới hạnGiá trị
Định dạng tệp.yaml, .yml
Số tệp mỗi lượt importTối đa 10
Dung lượng mỗi tệpTối đa 1 MiB
Số Rule mỗi lượt importTối đa 100 (tính trên tất cả các tệp)

Cấu trúc tệp YAML

Mỗi Rule là một tài liệu YAML riêng. Nếu tệp có nhiều Rule, phân cách bằng dòng chỉ chứa ---. Có thể trộn Streaming và Correlation Rule trong cùng một tệp, theo thứ tự bất kỳ.

# Có thể ghi chú ở bất kỳ đâu
title: Suspicious cmd execution
logsource:
  product: windows
  category: process_creation
detection:
  selection:
    process.name: cmd.exe
  condition: selection
level: high
---
title: Brute force login
detection_mode: correlation
correlation_type: threshold
# ... phần còn lại của Correlation Rule

Hệ thống cũng chấp nhận: dòng --- ở đầu hoặc cuối tệp (tài liệu rỗng được bỏ qua), tệp chỉ có một Rule và không có ---, hoặc tệp là một danh sách YAML (list) các Rule.

Loại Rule được xác định bởi detection_mode và correlation_type:

detection_modecorrelation_typeLoại Rule
Bỏ trống hoặc streamingPhải bỏ trốngStreaming (Sigma)
correlationthresholdThreshold Correlation
correlationcustomCustom Correlation (SQL)
Lưu ý: Tệp xuất từ hệ thống (Export) đã đúng định dạng này và có thể import lại mà không cần chỉnh sửa.

Các trường chung

Áp dụng cho mọi loại Rule.

TrườngBắt buộcMô tả
titleCóTên Rule, tối đa 256 ký tự.
versionKhôngVăn bản tự do, tối đa 50 ký tự, ví dụ v1.0.0. Mặc định v1.0.0.
statusKhôngTrạng thái Sigma: experimental, test, stable, deprecated hoặc unsupported. Không phân biệt hoa thường.
sigma_statusKhôngTương đương status. Nếu khai báo cả hai thì giá trị phải trùng nhau.
descriptionKhôngMô tả Rule phát hiện điều gì.
referencesKhôngDanh sách URL hoặc tài liệu tham khảo.
tagsKhôngDanh sách tag, ví dụ attack.execution.
attack_matrixBắt buộc khi có MITREenterprise, mobile hoặc ics. Bắt buộc khi khai báo tactic_techniques.
tactic_techniquesKhôngTối đa 10 ánh xạ MITRE ATT&CK, mỗi ánh xạ gồm tactic_id và/hoặc technique_id.
logsourceKhôngGồm product, category, service, definition. Chỉ mang tính mô tả, không dùng để chọn dữ liệu.
detectionCóLogic phát hiện. Cấu trúc phụ thuộc loại Rule.
falsepositivesKhôngDanh sách các trường hợp cảnh báo sai đã biết.
levelKhôngMức độ: critical, high, medium hoặc low. Không phân biệt hoa thường.

MITRE ID phải tồn tại trong dữ liệu ATT&CK của hệ thống và thuộc đúng attack_matrix đã chọn. Ví dụ: không thể dùng technique của Enterprise với attack_matrix: mobile.

Streaming Rule (Sigma)

Streaming Rule dùng cấu trúc Sigma chuẩn. Tệp Sigma chuẩn có thể import trực tiếp, với điều kiện tên trường (field) có tồn tại trong môi trường của bạn.

TrườngBắt buộcMô tả
detection_modeKhôngBỏ trống hoặc đặt streaming.
fieldsKhôngSigma fields: các trường log đáng chú ý khi điều tra.

Quy tắc cho detection:

  • Cần ít nhất một selection có tên và một condition.
  • Tên selection chỉ gồm chữ cái, chữ số và _, và phải bắt đầu bằng chữ cái hoặc _.
  • Tên trường phải tồn tại trong môi trường, ví dụ process.name, host.name.
  • Modifier hỗ trợ: contains, startswith, endswith, re, gt, gte, lt, lte.
  • Ngày giờ có thể viết không có dấu nháy (2026-03-11 10:28:02); hệ thống giữ nguyên dưới dạng văn bản.
title: Suspicious cmd execution
version: v1.0.0
status: test
description: Detects cmd.exe started outside trusted hosts
references:
  - https://example.com/cmd
tags:
  - attack.execution
attack_matrix: enterprise
tactic_techniques:
  - tactic_id: TA0002
    technique_id: T1059.003
logsource:
  product: windows
  category: process_creation
detection_mode: streaming
detection:
  selection:
    process.name|endswith: cmd.exe
  filter:
    host.name: trusted-host
  condition: selection and not filter
falsepositives:
  - Admin scripts
level: high

Correlation Rule

Correlation Rule chạy theo lịch trên một khoảng thời gian nhìn lại (lookback). Cả hai loại Correlation dùng chung các trường sau:

TrườngBắt buộcMô tả
detection_modeCócorrelation.
correlation_typeCóthreshold hoặc custom.
time_settingsCóCài đặt lịch chạy (xem bên dưới).

Time Settings

Thời lượng gồm một số và đơn vị m (phút), h (giờ) hoặc d (ngày), ví dụ 5m, 1h, 1d.

TrườngBắt buộcQuy tắc
frequencyCóTần suất chạy Rule, từ 1 phút đến 7 ngày.
lookback_windowCóKhoảng thời gian mỗi lần chạy nhìn lại, từ 1 phút đến 7 ngày và không vượt quá 10 × frequency.
suppressionKhôngCùng định dạng thời lượng.
Lưu ý: Không khai báo start_time. Rule import được lên lịch tính từ thời điểm import.

Threshold Rule

Threshold Rule lọc sự kiện bằng detection theo kiểu Sigma, sau đó nhóm và đếm các sự kiện khớp.

TrườngBắt buộcMô tả
threshold_config.group_result_by.fieldsCóCác trường dùng để nhóm kết quả. Mỗi trường phải tồn tại trong môi trường.
threshold_config.group_result_by.operatorCógreater_than hoặc greater_than_or_equals.
threshold_config.group_result_by.valueCóSố nguyên lớn hơn 0.
threshold_config.count_uniqueKhôngĐếm số giá trị khác nhau của một trường trong mỗi nhóm.
count_unique.target_fieldKhi dùng count_uniqueTrường cần đếm, phải tồn tại trong môi trường.
count_unique.operatorKhi dùng count_uniquegreater_than hoặc greater_than_or_equals.
count_unique.valueKhi dùng count_uniqueSố nguyên lớn hơn 0.

Quy tắc detection của Streaming Rule cũng áp dụng cho Threshold Rule.

title: Brute force login
version: v1.0.0
sigma_status: experimental
description: Detects many failed logins from one source
attack_matrix: enterprise
tactic_techniques:
  - tactic_id: TA0006
    technique_id: T1110.001
logsource:
  product: windows
  service: security
detection_mode: correlation
correlation_type: threshold
detection:
  failed_logins:
    event.action:
      - logon-failed
      - authentication_failure
  condition: failed_logins
threshold_config:
  group_result_by:
    fields:
      - source.ip
    operator: greater_than
    value: 10
  count_unique:
    target_field: user.name
    operator: greater_than_or_equals
    value: 3
time_settings:
  frequency: 5m
  lookback_window: 15m
  suppression: 30m
falsepositives:
  - Service accounts with expired credentials
level: high

Custom Rule

Custom Rule dùng truy vấn SQL riêng thay cho logic Sigma.

  • detection phải có sql_query và condition: sql_query.
  • Không được khai báo threshold_config.
  • Truy vấn chỉ được đọc từ bảng events. Có thể viết câu SELECT đầy đủ hoặc chỉ điều kiện WHERE.
  • Chỉ chấp nhận truy vấn chỉ đọc (read-only). Truy vấn khác sẽ báo lỗi Invalid sql query.
title: Rare agent activity
version: v1.0.0
sigma_status: experimental
attack_matrix: enterprise
tactic_techniques:
  - tactic_id: TA0009
    technique_id: T1005
logsource:
  product: linux
detection_mode: correlation
correlation_type: custom
detection:
  sql_query: "select `agent.name` as agent_name, `event.id` from events where `agent.name` = 'agent-1' and `event.id` = '12345'"
  condition: sql_query
time_settings:
  frequency: 5m
  lookback_window: 15m
level: low

Các trường bị bỏ qua

Trường không nhận diện được sẽ bị bỏ qua, nên metadata Sigma chuẩn không gây lỗi. Các giá trị do hệ thống quản lý không bao giờ được đọc từ tệp.

TrườngXử lý
id, date, modified, related, license và các trường không nhận diệnBỏ qua.
authorThay bằng người thực hiện import.
data_sources, disabled, type, nhóm Rule, start_timeBỏ qua. Hệ thống tự thiết lập khi import.

Sau khi import

  1. Chọn Sources: mở từng Rule vừa import và chọn Sources (nguồn dữ liệu) cho Rule.
  2. Kích hoạt Rule: chuyển Rule sang Active từ danh sách Rule. Correlation Rule bắt đầu chạy theo lịch ngay khi được kích hoạt.

Xử lý lỗi khi import

Khi import thất bại, không Rule nào được tạo. Hệ thống liệt kê mọi lỗi kèm tên tệp, vị trí Rule trong tệp (tính từ 1) và tiêu đề Rule, ví dụ:

rules.yaml · Rule #2 · Brute force login: time_settings is required for correlation rules
other.yml: invalid YAML: yaml: line 7: did not find expected key
Thông báo lỗi (trích)Cách khắc phục
invalid YAML: … line N …Sửa cú pháp tại dòng được báo. Toàn bộ tệp bị từ chối.
title is required / detection is requiredBổ sung trường còn thiếu.
invalid status '…'Dùng experimental, test, stable, deprecated hoặc unsupported.
invalid level '…'Dùng critical, high, medium hoặc low.
… require 'detection_mode: correlation'Thêm detection_mode: correlation, hoặc xoá các trường của Correlation.
correlation_type is required … / unsupported correlation_typeDùng threshold hoặc custom. Không thể import Sequence Rule.
time_settings is required …Thêm time_settings gồm frequency và lookback_window.
lookback_window is too large relative to frequencyGiữ lookback_window không quá 10 × frequency.
… does not exist in available fieldsDùng tên trường có tồn tại trong môi trường.
Invalid tactic / Invalid technique / … does not match rule's attack matrixKiểm tra lại MITRE ID và attack_matrix.
Invalid sql queryViết lại thành truy vấn chỉ đọc trên bảng events.
Quota exceeded: importing N rule(s) would exceed …Xoá các Rule không dùng hoặc import ít Rule hơn.
too many rulesChia nhỏ lượt import, mỗi lượt tối đa 100 Rule.

Export Rules

Tại màn hình Detections → Rule, người dùng có thể xuất Rule ra tệp YAML. Nút Export thay đổi theo trạng thái chọn Rule:

Trạng tháiNút hiển thịKết quả
Không có Rule nào được chọnExport AllXuất toàn bộ Rule trên tất cả các trang, không chỉ các Rule đang hiển thị ở trang hiện tại.
Đã chọn một hoặc nhiều RuleExport kèm số lượng Rule được chọnChỉ xuất các Rule đã chọn. Số lượng trên nút được cập nhật theo số Rule đang chọn.

Các bước thực hiện

  1. Từ thanh menu bên trái, chọn Detections → Rule.
  2. Nếu muốn xuất một số Rule cụ thể, tick checkbox tương ứng với các Rule cần xuất. Nếu không chọn Rule nào, hệ thống sẽ xuất toàn bộ Rule.
  3. Nhấn nút Export. Hệ thống tải tệp YAML chứa các Rule theo phạm vi đã chọn.

Tệp xuất có thể chứa nhiều Rule YAML; mỗi Rule là một tài liệu riêng, phân cách bằng dòng ---.

logo
CMC Telecom
Aspire to Inspire the Digital World