SIEM/Log Management Tìm hiểu và nghiên cứu

CHƯƠNG 1: TỔNG QUAN VỀ OPENSEARCH, LOG PIPELINE VÀ CÁC NGÔN NGỮ TRUY VẤN​


1.1. TỔNG QUAN VỀ OPENSEARCH VÀ OPENSEARCH DASHBOARDS​

1.1.1. Khái niệm và Lịch sử ra đời​

OpenSearch là một bộ công cụ (suite) mã nguồn mở được phát triển bởi Amazon Web Services (AWS) vào năm 2021, dựa trên nền tảng của Elasticsearch và Kibana (phiên bản 7.10.2). OpenSearch cung cấp khả năng tìm kiếm, phân tích dữ liệu và quản lý log theo thời gian thực dưới giấy phép Apache 2.0 hoàn toàn tự do và miễn phí cho cộng đồng.

1.1.2. Kiến trúc và Thành phần cốt lõi​

OpenSearch vận hành dựa trên lõi tìm kiếm Apache Lucene với dữ liệu lưu trữ dưới dạng các tài liệu JSON.

Các khái niệm quan trọng trong OpenSearch Cluster:
  • Document: Đơn vị dữ liệu cơ bản (dạng JSON), tương đương 1 dòng (row) trong CSDL quan hệ.
  • Index: Tập hợp các Document cùng cấu trúc, tương đương 1 bảng (table) trong CSDL quan hệ.
  • Inverted Index (Chỉ mục đảo): Cơ chế lưu trữ cốt lõi giúp OpenSearch tìm kiếm từ khóa siêu nhanh.
  • Node & Cluster: Node là một máy chủ chạy OpenSearch (Manager Node, Data Node, Ingest Node). Cluster là tập hợp nhiều Node hoạt động cùng nhau.
  • Shard & Replica: Primary Shard giúp chia nhỏ Index ra nhiều Node; Replica Shard là bản sao hỗ trợ khả năng chịu lỗi (High Availability) và tăng tốc độ đọc.

1.1.3. OpenSearch Dashboards​

OpenSearch Dashboards là giao diện đồ họa (GUI) dựa trên web dành cho OpenSearch, cung cấp 4 chức năng chính:
  1. Discover: Tra cứu, lọc và điều tra log thời gian thực.
  2. Visualize: Tạo các biểu đồ trực quan (Bar, Line, Pie, Map...).
  3. Dashboards: Tổng hợp nhiều biểu đồ thành màn hình giám sát tập trung (SOC Dashboard).
  4. Dev Tools: Môi trường gửi lệnh REST API trực tiếp tới Cluster.

1.2. NGHIÊN CỨU VÀ ĐÁNH GIÁ CÁC GIẢI PHÁP LOG PIPELINE​

1.2.1. 5 Giai đoạn của Log Pipeline chuẩn​

Log Pipeline là chuỗi hạ tầng chịu trách nhiệm xử lý dữ liệu từ nguồn phát sinh đến nơi lưu trữ:
  1. Collection (Thu thập): Thu thập log từ File, Syslog, Event Log, API.
  2. Filtering (Lọc): Loại bỏ log nhiễu, ẩn thông tin nhạy cảm (PII masking).
  3. Normalization (Chuẩn hóa): Chuyển log phi cấu trúc thành JSON theo chuẩn ECS hoặc OCSF.
  4. Routing & Buffering (Định tuyến & Đệm): Đẩy dữ liệu qua hàng đợi (Kafka) để chống tràn tải (Backpressure).
  5. Storage (Lưu trữ): Đẩy dữ liệu chuẩn hóa vào OpenSearch để phân tích và S3 để lưu trữ dài hạn.

1.2.2. So sánh các công cụ Log Shipper & Collector​

Tiêu chíLogstashFluent BitVectorOpenSearch Data Prepper
Ngôn ngữJava (JVM)CRustJava
Tài nguyên (RAM/CPU)Nặng (vài trăm MB - GB)Siêu nhẹ (< 20MB)Rất thấpTrung bình
Khả năng Parse logCực mạnh (Grok, Mutate)Khá (Regex, JSON)Cực mạnh (VRL)Khá (Grok, OCSF)
Vị trí đề xuấtCentral ProcessingAgent tại Edge/EndpointEdge hoặc CentralCentral Aggregator

1.2.3. Đề xuất Mô hình Kiến trúc Log Pipeline cho SecurityZone​

Plaintext

Mã:
[ Sources / Endpoints ] (Windows Event Log, Firewall, Nginx)
          │
          ▼  (Fluent Bit / Filebeat - Siêu nhẹ tại Endpoint)
[ Layer 1: Edge Collectors ]
          │
          ▼  (TCP / mTLS)
[ Layer 2: Central Queue ] ──► (Apache Kafka / RabbitMQ: Đệm dữ liệu)
          │
          ▼
[ Layer 3: Central Processing ] ──► (Vector / Logstash: Parse Grok & Chuẩn hóa OCSF)
          │
          ├──────────────────────────┐
          ▼                          ▼
[ Storage 1: OpenSearch Cluster ]    [ Storage 2: S3 Cold Storage ]
(Lưu 30-90 ngày để Alerting/SOC)    (Lưu dài hạn phục vụ Compliance)

1.3. TÌM HIỂU VỀ OPENSEARCH QUERY DSL, DQL, PPL VÀ VEGA​

Để truy vấn và trực quan hóa dữ liệu trên OpenSearch, Chuyên viên An ninh mạng cần làm chủ 4 ngôn ngữ cốt lõi:

1.3.1. Phân loại và Ví dụ ứng dụng​

1. OpenSearch Query DSL (JSON)​

Ngôn ngữ truy vấn gốc của OpenSearch, dùng khi lập trình API hoặc cấu hình luật tự động.
  • Ví dụ (Tìm log đăng nhập thất bại ID 4625 từ IP cụ thể):
JSON

Mã:
GET /security-logs-*/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "event.code": "4625" } },
        { "term": { "source.ip": "192.168.1.100" } }
      ]
    }
  }
}

2. DQL (Dashboards Query Language)​

Cú pháp ngắn gọn dùng trên thanh tìm kiếm Discover để Analyst tra cứu nhanh khi có sự cố.
  • Ví dụ: http.response.status >= 400 AND NOT source.ip : "10.0.0.5"

3. PPL (Piped Processing Language)​

Ngôn ngữ dạng ống (|) tương tự Splunk SPL hoặc Linux CLI, rất tối ưu cho Threat Hunting.
  • Ví dụ (Thống kê top IP đăng nhập thất bại > 10 lần):
Plaintext

Mã:
source = security-logs-* 
| where event.code == '4625' 
| stats count() as failed_attempts by source.ip 
| where failed_attempts > 10 
| sort - failed_attempts

4. Vega & Vega-Lite​

Ngôn ngữ định nghĩa biểu đồ tùy biến dạng JSON, dùng vẽ các biểu đồ phức tạp (Sankey, Network Graph, Bản đồ nhiệt) trên SOC Dashboard.

1.3.2. Bảng so sánh tổng hợp các ngôn ngữ​


Tiêu chíQuery DSLDQLPPLVega / Vega-Lite
Dạng cú phápJSONChuỗi ngắnDạng ống (|)JSON
Độ phức tạpCaoThấpTrung bìnhCao
Mục đích chínhLập trình / Rules APITra cứu nhanh (UI)Điều tra / Threat HuntingThiết kế Biểu đồ nâng cao
Đối tượng dùngDeveloper / EngineerSOC Tier 1SOC Tier 2/3Dashboard Designer
 
Back
Top