Trương Văn Thịnh
Intern
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:- Discover: Tra cứu, lọc và điều tra log thời gian thực.
- Visualize: Tạo các biểu đồ trực quan (Bar, Line, Pie, Map...).
- Dashboards: Tổng hợp nhiều biểu đồ thành màn hình giám sát tập trung (SOC Dashboard).
- 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ữ:- Collection (Thu thập): Thu thập log từ File, Syslog, Event Log, API.
- Filtering (Lọc): Loại bỏ log nhiễu, ẩn thông tin nhạy cảm (PII masking).
- Normalization (Chuẩn hóa): Chuyển log phi cấu trúc thành JSON theo chuẩn ECS hoặc OCSF.
- Routing & Buffering (Định tuyến & Đệm): Đẩy dữ liệu qua hàng đợi (Kafka) để chống tràn tải (Backpressure).
- 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í | Logstash | Fluent Bit | Vector | OpenSearch Data Prepper |
| Ngôn ngữ | Java (JVM) | C | Rust | Java |
| Tài nguyên (RAM/CPU) | Nặng (vài trăm MB - GB) | Siêu nhẹ (< 20MB) | Rất thấp | Trung bình |
| Khả năng Parse log | Cực mạnh (Grok, Mutate) | Khá (Regex, JSON) | Cực mạnh (VRL) | Khá (Grok, OCSF) |
| Vị trí đề xuất | Central Processing | Agent tại Edge/Endpoint | Edge hoặc Central | Central 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ể):
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):
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 DSL | DQL | PPL | Vega / Vega-Lite |
| Dạng cú pháp | JSON | Chuỗi ngắn | Dạng ống (|) | JSON |
| Độ phức tạp | Cao | Thấp | Trung bình | Cao |
| Mục đích chính | Lập trình / Rules API | Tra cứu nhanh (UI) | Điều tra / Threat Hunting | Thiết kế Biểu đồ nâng cao |
| Đối tượng dùng | Developer / Engineer | SOC Tier 1 | SOC Tier 2/3 | Dashboard Designer |
Bài viết liên quan
Được quan tâm
Bài viết mới