Tổng quan cấu hình
Agent sử dụng file cấu hình YAML để định nghĩa các nguồn dữ liệu, đích đến, và các thiết lập khác.Cấu hình chi tiết
Logging Configuration
Cấu hình logging cho Agent (tùy chọn):-
level(bắt buộc): Mức độ loggingdebug: Hiển thị tất cả thông tin chi tiết, bao gồm debug messagesinfo: Hiển thị thông tin chung và các sự kiện quan trọng (mặc định)warn: Chỉ hiển thị cảnh báo và lỗierror: Chỉ hiển thị lỗi
-
dir(bắt buộc): Đường dẫn thư mục lưu trữ log files (mặc định:./logs) -
file(bắt buộc): Tên file log chính (mặc định:default.log) -
error_file(tùy chọn): Tên file log riêng cho lỗi (mặc định:default-error.log) -
max_size_mb(bắt buộc): Kích thước tối đa của tất cả log files tính bằng MB (mặc định: 10MB)
Channel Buffers Configuration
Cấu hình buffer cho performance tuning và memory management:-
orchestrator_capacity(bắt buộc): Buffer capacity cho orchestrator collector channel (mặc định: 10000000)- Controls how many events can be queued between sources and orchestrator
- Higher values improve burst handling but use more memory
-
shipper_capacity(bắt buộc): Buffer capacity cho shipper channels (mặc định: 10000000)- Controls how many events can be queued between orchestrator and sinks
- Higher values improve throughput but use more memory
-
router_max_in_flight_routes(bắt buộc): Maximum concurrent routing tasks in orchestrator (mặc định: 4)- Controls parallelism when routing events to multiple sinks
- Higher values improve throughput but increase CPU usage
Registry Configuration
Registry là điểm điều phối trung tâm (tùy chọn) để xác thực và đồng bộ cấu hình. Nếu không sử dụng Registry, bạn có thể bỏ qua phần này: (Từ v0.5.5+)-
api_url(bắt buộc): URL của API endpoint Registry (mặc định:https://blackhole.glabs.one) -
proxy(tùy chọn): Cấu hình proxyenable(bắt buộc): Bật/tắt proxy (mặc định:true)http(tùy chọn): URL của HTTP proxyhttps(tùy chọn): URL của HTTPS proxy
-
tls(tùy chọn): TLS settings cho kết nối tớiapi_url(chỉ áp dụng khiapi_urldùnghttps://)ca_cert_path(tùy chọn): Đường dẫn file CA bundle (PEM) để validate certificate của Registryinsecure_skip_verify_https(tùy chọn): Skip HTTPS certificate verification (không khuyến nghị)
-
config_update_interval(bắt buộc): Khoảng thời gian cập nhật cấu hình (mặc định: 15 giây)
- Registry là tùy chọn. Agent có thể hoạt động độc lập mà không cần Registry
- Nếu sử dụng Registry, bạn phải xác thực trước bằng lệnh
auth --key
-
mqtt_url(bắt buộc): URL của MQTT broker Registry (mặc định:mqtts://blackhole.glabs.one:8883) -
api_url(bắt buộc): URL của API endpoint Registry (mặc định:https://blackhole.glabs.one) -
identifier(bắt buộc): Tên định danh cho registry sink (mặc định:registry) -
proxy(tùy chọn): Cấu hình proxyenable(bắt buộc): Bật/tắt proxy (mặc định:true)http(tùy chọn): URL của HTTP proxyhttps(tùy chọn): URL của HTTPS proxy
-
rate_limit(bắt buộc): Cấu hình giới hạn tốc độ gửi dữ liệubatch_size(bắt buộc): Số message trong mỗi batch (mặc định: 500)batch_interval(bắt buộc): Khoảng thời gian giữa các batch tính bằng ms (mặc định: 1000ms)batch_max_bytes(bắt buộc): Kích thước tối đa mỗi batch tính bằng bytes (mặc định: 10485760 bytes = 10MB)
- Registry là tùy chọn. Agent có thể hoạt động độc lập mà không cần Registry
- Nếu sử dụng Registry, bạn phải xác thực trước bằng lệnh
auth --keyhoặc Forwarder sẽ tự động xác thực thay cho Agent
Sources Configuration
APM Source
Thu thập metrics hệ thống:-
type(bắt buộc): Loại source, phải là"apm" -
interval(bắt buộc): Chu kỳ thu thập metrics tính bằng giây (mặc định: 30 giây)- Giá trị nhỏ hơn = thu thập thường xuyên hơn nhưng tốn tài nguyên
- Giá trị lớn hơn = tiết kiệm tài nguyên nhưng ít chi tiết
-
index(tùy chọn): Index để lưu trữ dữ liệu APM (mặc định:null) -
sourcetype(tùy chọn): Loại dữ liệu để phân loại (mặc định:null)
- CPU usage (global và per-core)
- Memory usage (total, used, available)
- Disk I/O và usage
- Network interface statistics
- Process information
- File descriptor usage (Linux)
- Load average (Linux/macOS)
File Source
Theo dõi và thu thập log từ files:-
type(bắt buộc): Loại source, phải là"file" -
includes(bắt buộc): Danh sách file patterns để theo dõi (mặc định:["/var/log/auth.log", "/var/log/secure.log", "/var/log/commands.log"])- Hỗ trợ glob patterns:
*,**,? - Ví dụ:
"/var/log/*.log","/opt/app/**/*.log"
- Hỗ trợ glob patterns:
-
index(tùy chọn): Index để lưu trữ dữ liệu (mặc định:null) -
sourcetype(tùy chọn): Loại dữ liệu để phân loại (mặc định:null) -
tail(bắt buộc): Có bắt đầu đọc từ cuối file không (mặc định:true)true: Chỉ đọc dữ liệu mới (như lệnhtail -f)false: Đọc toàn bộ file từ đầu
-
debounce_ms(bắt buộc): Thời gian chờ để nhóm các sự kiện thay đổi file tính bằng ms (mặc định: 1000ms)- Giá trị nhỏ = phản hồi nhanh nhưng có thể tạo nhiều events
- Giá trị lớn = giảm số lượng events nhưng phản hồi chậm hơn
- Hỗ trợ glob patterns
- Tự động phát hiện log rotation
- Debouncing để tối ưu hiệu suất
- Theo dõi real-time
SCA Source (Security Configuration Assessment) [v0.5.4+]
Thu thập và đánh giá cấu hình bảo mật theo các policy tương thích Wazuh:-
type(bắt buộc): Loại source, phải là"sca" -
policy_directory(bắt buộc): Đường dẫn thư mục chứa file policy YAML- Linux/macOS mặc định:
/etc/agent/sca/policies - Windows mặc định:
C:\ProgramData\agent\sca\policies - Collector sẽ quét đệ quy các file
.ymlhoặc.yaml
- Linux/macOS mặc định:
-
scan_interval_secs(bắt buộc): Chu kỳ quét cấu hình tính bằng giây (mặc định: 3600 = 1 giờ)- Đặt
0để tắt quét định kỳ (chỉ quét khi khởi động nếurun_on_start: true)
- Đặt
-
run_on_start(bắt buộc): Có quét ngay khi collector khởi động không (mặc định:true)true: Thực hiện quét ngay lập tức khi khởi độngfalse: Đợi đến chu kỳ quét đầu tiên
-
allow_commands(bắt buộc): Cho phép thực thi lệnh trong rulesc:(mặc định:false)true: Cho phép thực thi lệnh shell/commandfalse: Các check yêu cầu command sẽ được đánh dấu “not applicable”- Lưu ý bảo mật: Mặc định tắt để ngăn chặn rủi ro bảo mật
-
enabled_policies(bắt buộc): Danh sách file policy cụ thể để bật (mặc định:[])[]: Xử lý tất cả policy files trong thư mục["cis_ubuntu22.yml", "pci_dss.yml"]: Chỉ xử lý các file được chỉ định
-
index(tùy chọn): Index để lưu trữ kết quả SCA (mặc định:null) -
sourcetype(tùy chọn): Loại dữ liệu để phân loại (mặc định:null)
| Prefix | Mô tả | Ví dụ |
|---|---|---|
f: | File operations (tồn tại, nội dung, regex) | f:/etc/passwd -> exists |
d: | Directory operations | d:/etc/ssh |
p: | Process existence | p:sshd |
c: | Command execution (yêu cầu allow_commands: true) | c:systemctl is-enabled sshd -> r:enabled |
r: | Windows registry (chỉ Windows) | r:HKLM\SOFTWARE\Policies -> ValueName |
- Hỗ trợ negation với prefix
not(ví dụ:not f:/etc/insecure -> exists) - Variable substitution trong rules (ví dụ:
$path) - Conditions:
all,any,noneđể aggregate kết quả rules - State tracking: Chỉ báo cáo các check có thay đổi trạng thái
- Policy hash tracking: Tự động phát hiện thay đổi file policy
policy_id: ID của policycheck_id: ID của checkcheck_title: Tiêu đề checkresult: Kết quả (pass,fail,not_applicable,error)evidence: Bằng chứng thu thập đượcdescription,rationale,remediation: Thông tin bổ sung (nếu có)compliance: Frameworks tuân thủ (CIS, PCI-DSS, HIPAA, …)references: Tài liệu tham khảo
Windows Event Log Source
Chỉ có trên Windows:-
type(bắt buộc): Loại source, phải là"windows_event" -
channels(bắt buộc): Danh sách Windows Event channels để theo dõi (mặc định:[{"name": "Application", "ids": []}])name(bắt buộc): Tên event channel (ví dụ: “Application”, “Security”, “System”)ids(bắt buộc): Danh sách Event IDs cụ thể (mặc định:[]= tất cả events)
-
index(tùy chọn): Index để lưu trữ dữ liệu (mặc định:null) -
sourcetype(tùy chọn): Loại dữ liệu để phân loại (mặc định:null)
Application: Events từ applicationsSecurity: Security-related events (login, logout, access)System: System events (startup, shutdown, errors)
Sinks Configuration
MQTT Sink
-
type(bắt buộc): Loại sink, phải là"mqtt" -
url(bắt buộc): URL của MQTT broker (mặc định:mqtt://localhost:1883?client_id=siem-agent)- Hỗ trợ protocols:
mqtt://,mqtts://,ws://,wss:// - Có thể thêm query parameters:
?client_id=agent-001
- Hỗ trợ protocols:
-
inputs(tùy chọn): Danh sách source identifiers để consume (mặc định:["*"])["*"]: Consume tất cả sources["file_logs", "apm_metrics"]: Chỉ consume từ specific sources
-
auth(bắt buộc): Cấu hình xác thựctype(bắt buộc): Loại xác thực"none": Không xác thực (mặc định)"basic": Username/password authentication
username(bắt buộc khi type=“basic”): Tên người dùngpassword(bắt buộc khi type=“basic”): Mật khẩu
-
proxy(tùy chọn): Cấu hình proxyenable(bắt buộc): Bật/tắt proxy (mặc định:true)http(tùy chọn): URL của HTTP proxyhttps(tùy chọn): URL của HTTPS proxy
-
rate_limit(bắt buộc): Cấu hình giới hạn tốc độbatch_size(bắt buộc): Số message trong mỗi batch (mặc định: 500)batch_interval(bắt buộc): Khoảng thời gian giữa các batch tính bằng ms (mặc định: 1000ms)batch_max_bytes(bắt buộc): Kích thước tối đa mỗi batch tính bằng bytes (mặc định: 10485760 bytes = 10MB)
Kafka Sink
-
type(bắt buộc): Loại sink, phải là"kafka" -
inputs(tùy chọn): Danh sách source identifiers để consume (mặc định:["*"])["*"]: Consume tất cả sources["file_logs", "apm_metrics"]: Chỉ consume từ specific sources
-
bootstrap_servers(bắt buộc): Danh sách Kafka brokers (mặc định:["localhost:9092"]) -
client_id(tùy chọn): Client ID để nhận diện producer (mặc định:null- auto-generated) -
security(bắt buộc): Cấu hình bảo mật (mặc định:"none")type(bắt buộc): Loại bảo mật"none": Không bảo mật (mặc định)"tls": Chỉ TLS"sasl": SASL authentication
sasl(bắt buộc khi type=“sasl”): Cấu hình SASLmechanism(bắt buộc): Cơ chế SASL (mặc định:"PLAIN")"PLAIN": Username/password"SCRAM-SHA-256": SCRAM-SHA-256"SCRAM-SHA-512": SCRAM-SHA-512"GSSAPI": Kerberos"OAUTHBEARER": OAuth 2.0
username(tùy chọn): Tên người dùngpassword(tùy chọn): Mật khẩutls(tùy chọn): Cấu hình TLS cho SASLverify_certificate(bắt buộc): Xác minh chứng chỉ (mặc định:true)
-
acks(bắt buộc): Mức độ xác nhận (mặc định:"leader")"none": Không yêu cầu xác nhận (acks=0) - nhanh nhất nhưng có thể mất dữ liệu"leader": Chỉ yêu cầu xác nhận từ leader (acks=1) - cân bằng tốc độ và độ tin cậy"all": Yêu cầu xác nhận từ tất cả replicas (acks=all) - chậm nhất nhưng đảm bảo nhất
-
compression(bắt buộc): Loại nén dữ liệu (mặc định:"none")"none": Không nén - nhanh nhất"gzip": Gzip compression - tốt cho text data"snappy": Snappy compression - cân bằng tốc độ và tỷ lệ nén"lz4": LZ4 compression - nhanh nhất trong các loại nén"zstd": Zstandard compression - tỷ lệ nén tốt nhất
-
enable_idempotence(bắt buộc): Bật idempotent producer (mặc định:false)true: Đảm bảo không có duplicate messagesfalse: Có thể có duplicate messages
-
transactional_id(tùy chọn): Transactional ID cho exactly-once semantics (mặc định:null) -
batching(bắt buộc): Cấu hình batchinglinger_ms(bắt buộc): Thời gian chờ để tạo batch tính bằng ms (mặc định: 0)batch_num_messages(bắt buộc): Số message tối đa trong batch (mặc định: 100000)batch_kbytes(bắt buộc): Kích thước tối đa batch tính bằng KB (mặc định: 1048576 KB = 1GB)
-
retries(bắt buộc): Cấu hình retrymax_retries(bắt buộc): Số lần retry tối đa (mặc định: 10)backoff_ms(bắt buộc): Thời gian chờ giữa các retry tính bằng ms (mặc định: 100)
-
timeouts(bắt buộc): Cấu hình timeoutsocket_timeout_ms(bắt buộc): Socket timeout tính bằng ms (mặc định: 60000)request_timeout_ms(bắt buộc): Request timeout tính bằng ms (mặc định: 30000)message_timeout_ms(bắt buộc): Message timeout tính bằng ms (mặc định: 300000)connections_max_idle_ms(bắt buộc): Connection idle timeout tính bằng ms (mặc định: 300000)
-
producer_pool_size(bắt buộc): Số producer instances trong pool (mặc định: 4, range: 1-64) -
extra(bắt buộc): Additional librdkafka configuration properties (mặc định:{})
gRPC Sink
Gửi sự kiện tới một gRPC endpoint (ví dụ Forwarder chạy embedded gRPC server). gRPC sink sẽ serialize mỗiLogEvent thành JSON và gửi theo RPC Publish (unary) hoặc PublishStream (client-streaming). Trường topic của gRPC request mặc định là index của event.
-
type(bắt buộc): Loại sink, phải là"grpc". -
url(bắt buộc): URL đầy đủ của gRPC endpoint (mặc định:http://localhost:50051).- Hỗ trợ
http://vàhttps://. - Alias:
endpoint.
- Hỗ trợ
-
inputs(tùy chọn): Danh sách source identifiers để consume (mặc định:["*"]).["*"]: Consume tất cả sources.
-
headers(tùy chọn): Map{header: value}được gửi kèm mọi request dưới dạng gRPC metadata (mặc định:{}).- Ví dụ:
x-api-key: "forwarder-secret".
- Ví dụ:
-
use_streaming(tùy chọn): Chọn kiểu RPC gửi dữ liệu (mặc định:true).true: dùngPublishStreamđể tăng throughput.false: dùngPublishcho từng event (unary).
-
max_concurrent_requests(tùy chọn): Số request gRPC đồng thời mà shipper có thể gửi (mặc định:1). -
rate_limit(bắt buộc): Cấu hình batching/throughput (giống các sinks khác).batch_size,batch_interval,batch_max_bytes.
-
message_limits(tùy chọn): Giới hạn kích thước message gRPC (bytes).max_decoding_message_size: giới hạn decode response.max_encoding_message_size: giới hạn encode request.
connect_timeout_secs: Timeout cho TCP connect (seconds).request_timeout_secs(aliastimeout_secs): Timeout per-RPC (seconds). Hiện tại shipper chưa áp dụng timeout này.tcp_keepalive_secs: TCP keepalive (seconds).tcp_nodelay: Bật/tắt TCP_NODELAY.http2_keep_alive_interval_secs,http2_keep_alive_timeout_secs,http2_keep_alive_while_idle: HTTP/2 keepalive tuning.initial_stream_window_size,initial_connection_window_size,http2_adaptive_window: HTTP/2 flow control tuning.concurrency_limit: Giới hạn concurrency ở mứctonic::transport::Endpoint.buffer_size: Buffer nội bộ của endpoint/service.user_agent: User-Agent header cho outbound.tls: Cấu hình TLS client.domain_namehiện được dùng để override SNI/hostname verify.ca_cert_path,client_cert_path,client_key_path,insecure_skip_verifyhiện chưa được áp dụng trong shipper.
proxy: Cấu hình proxy. Hiện tại gRPC shipper chưa hỗ trợ proxy cho Endpoint.reflection,proto: Hook forward-compatible (hiện tại runtime có thể bỏ qua).
BlackHole Sink
-
type(bắt buộc): Loại sink, phải là"blackhole" -
inputs(tùy chọn): Danh sách source identifiers để consume (mặc định:["*"])["*"]: Consume tất cả sources["file_logs", "apm_metrics"]: Chỉ consume từ specific sources
-
url(bắt buộc): URL của BlackHole endpoint (mặc định:http://localhost:9200) -
healthcheck(bắt buộc): Enable health check requests (mặc định:false) -
request(tùy chọn): Compatibility request configuration (mặc định:null)retry_attempts(tùy chọn): Số lần retry attemptstimeout_secs(tùy chọn): Request timeout in seconds
-
auth(bắt buộc): Cấu hình xác thực (mặc định:"none")type(bắt buộc): Loại xác thực"none": Không xác thực (mặc định)"basic": Username/password authentication"client_cert": Client certificate (mTLS)"jwt": JWT/OIDC bearer token"aws_sigv4": AWS SigV4 signing
username(bắt buộc khi type=“basic”): Tên người dùngpassword(bắt buộc khi type=“basic”): Mật khẩupkcs12_path(bắt buộc khi type=“client_cert”): Đường dẫn file PKCS#12pkcs12_password(bắt buộc khi type=“client_cert”): Mật khẩu PKCS#12token(bắt buộc khi type=“jwt”): JWT tokenheader_name(bắt buộc khi type=“jwt”): Tên header (mặc định: “Authorization”)region(bắt buộc khi type=“aws_sigv4”): AWS regionprofile(tùy chọn khi type=“aws_sigv4”): AWS profilerole_arn(tùy chọn khi type=“aws_sigv4”): Role ARN để assumeservice(bắt buộc khi type=“aws_sigv4”): AWS service name"es": Amazon BlackHole Service"aoss": BlackHole Serverless
-
tls(bắt buộc): TLS configuration (mặc định:{ca_cert_path: null, insecure_skip_verify: false})ca_cert_path(tùy chọn): Custom CA bundle file pathinsecure_skip_verify(bắt buộc): Skip certificate verification (mặc định:false)
-
headers(bắt buộc): Custom headers (mặc định:{}) -
timeouts(bắt buộc): Cấu hình timeoutrequest_timeout_secs(bắt buộc): Request timeout tính bằng giây (mặc định: 30)connect_timeout_secs(bắt buộc): Connect timeout tính bằng giây (mặc định: 10)
-
rate_limit(bắt buộc): Cấu hình giới hạn tốc độbatch_size(bắt buộc): Số message trong mỗi batch (mặc định: 500)batch_interval(bắt buộc): Khoảng thời gian giữa các batch tính bằng ms (mặc định: 1000ms)batch_max_bytes(bắt buộc): Kích thước tối đa mỗi batch tính bằng bytes (mặc định: 10485760 bytes = 10MB)
Inventory Configuration
Cấu hình queue persistent cho dữ liệu:-
max_messages(bắt buộc): Số message tối đa được lưu trữ (mặc định: 100000)null: Không giới hạn số message- Số nguyên: Giới hạn số message
-
max_bytes(bắt buộc): Dung lượng tối đa tính bằng bytes (mặc định: 268435456 bytes = 256MB)null: Không giới hạn dung lượng- Số nguyên: Giới hạn dung lượng
-
backpressure_on_limit(bắt buộc): Có áp dụng backpressure khi đạt giới hạn không (mặc định:false)true: Dừng nhận dữ liệu mới khi đạt giới hạnfalse: Xóa dữ liệu cũ nhất khi đạt giới hạn
-
per_shipper(bắt buộc): Cấu hình cho từng loại shippermqtt: Cấu hình cho MQTT shipperkafka: Cấu hình cho Kafka shipperblackhole: Cấu hình cho BlackHole shipper- Mỗi shipper có các tham số:
ttl(bắt buộc): Time-to-live tính bằng giây (mặc định: 86400 = 24 giờ)max_retries(bắt buộc): Số lần retry tối đa (mặc định: 20)flush_interval_secs(bắt buộc): Chu kỳ flush tính bằng giây (mặc định: 5)
Hướng dẫn tạo chứng chỉ SSL
Tạo chứng chỉ SSL tự ký cho MQTT Broker
Để cấu hình MQTT broker với TLS, bạn cần tạo chứng chỉ SSL. Dưới đây là hướng dẫn tạo chứng chỉ tự ký:Bước 1: Tạo thư mục lưu trữ chứng chỉ
Bước 2: Tạo CA (Certificate Authority) tự ký
- Country Name: VN
- State: Ho Chi Minh
- City: Ho Chi Minh City
- Organization: Your Company
- Organizational Unit: IT Department
- Common Name: MQTT CA
- Email: admin@yourcompany.com
Bước 3: Tạo server certificate
Bước 4: Tạo server certificate từ CSR
Bước 5: Tạo client certificate (tùy chọn)
Bước 6: Cấu hình MQTT Sink với TLS
Cấu hình TLS cho MQTT Client (Source và Sink)
Sau khi đã tạo chứng chỉ SSL cho MQTT broker, bạn cần cấu hình client (agent/forwarder) để kết nối với broker sử dụng TLS. Điều này đặc biệt quan trọng khi sử dụng chứng chỉ tự ký (self-signed certificates).Cấu hình MQTT Source với TLS
Khi cấu hình MQTT source để subscribe từ broker có TLS, bạn cần chỉ định đường dẫn đến CA certificate:Cấu hình MQTT Sink với TLS
Tương tự, khi cấu hình MQTT sink để publish đến broker có TLS:Cấu hình Mutual TLS (mTLS)
Nếu broker yêu cầu client certificate authentication (mutual TLS), bạn cần cung cấp cả client certificate và key:Lưu ý: Khi sử dụng mTLS, bạn thường không cần username/password vì client
certificate đã đóng vai trò xác thực.
Các tùy chọn TLS
ca_cert_path: Đường dẫn đến CA certificate file (PEM format). Bắt buộc khi sử dụng chứng chỉ tự ký hoặc custom CA.client_cert_path: Đường dẫn đến client certificate file (PEM format). Chỉ cần khi broker yêu cầu client authentication.client_key_path: Đường dẫn đến client private key file (PEM format). Phải được cung cấp cùng vớiclient_cert_path.insecure: Bỏ qua xác thực certificate (mặc định:false). Không khuyến nghị sử dụng trong môi trường production vì làm giảm bảo mật.
Xử lý lỗi TLS
Nếu bạn gặp lỗiTLS: I/O: tls handshake eof hoặc các lỗi TLS khác, hãy kiểm tra:
- CA certificate path đúng chưa? Đảm bảo đường dẫn đến file CA certificate là chính xác và file có thể đọc được.
- Certificate format đúng chưa? Các certificate phải ở định dạng PEM (text format, bắt đầu với
-----BEGIN CERTIFICATE-----). - Quyền truy cập file: Đảm bảo agent/forwarder có quyền đọc các file certificate.
- URL protocol: Sử dụng
mqtts://thay vìmqtt://cho kết nối TLS. - Port đúng chưa? Port mặc định cho MQTT over TLS là 8883, không phải 1883.
