sensorctl¶
sensorctl là một công cụ dòng lệnh hỗ trợ gọi các phương thức JSON-RPC của alert-mqttx qua MQTT, đồng thời cung cấp khả năng SSH tới sensor và agent.
Mục đích¶
- Tương tác với bất kỳ sensor nào.
- Hỗ trợ SSH tới sensor (yêu cầu nhập mật khẩu).
- Hỗ trợ SSH tới agent.
- Hỗ trợ tải file từ máy agent về local để điều tra.
Sơ đồ luồng¶

Cài đặt¶
Tạo file .env để cấu hình MQTT và tên sensor:
X_API_KEY=NO
MQTT_BROKER=msg.broker.com
MQTT_PORT=8883
MQTT_USERNAME=soc
MQTT_PASSWORD=pass
SENSOR_NAME=sensor-20250526120306.852 # Nếu không đặt, cần truyền qua argument
Chạy ./sensorctl. Nếu hiển thị tài liệu hướng dẫn, cài đặt đã thành công.
Hướng dẫn sử dụng¶

1. SSH tới sensor¶
Cách 1: Sử dụng file .env¶
- Đặt tên sensor trong file
.env. -
Chạy lệnh:
bash ./sensorctl ssh
Cách 2: Truyền tên sensor qua argument¶
-
Chạy lệnh:
bash ./sensorctl ssh --sensor-name <sensor-name>
Lưu ý:
- Để thoát chương trình, nhấn
Ctrl+W. - Do tính năng SSH qua MQTT, việc chỉnh sửa file có thể không hiển thị như mong muốn. Nên sao chép nội dung file thay vì gõ từng ký tự.
2. JSON-RPC¶
Cú pháp:¶
./sensorctl rpc [sensor-name] --method [RPC-method]
Ví dụ:¶
-
Health check sensor:
bash ./sensorctl rpc [sensor-name] --method healthCheck -
Lưu ý khi sử dụng Wazuh rule files:
- Thay
--filenamebằng--src_file,--filebằng--dst_file. - Thêm
--watchđể theo dõi thay đổi khi lưu file.
- Thay
3. SSH tới agent¶
3.1. Run Always-On Onexar¶
Chạy Always-On trước khi SSH tới agent:
-
Linux agent:
bash agentctl ar run --agent 003 --command "alwayson-linux0" -
Windows agent:
bash agentctl ar run --agent 004 --command "alwayson-windows0"
3.2. SSH tới agent¶
Cú pháp:
./sensorctl ssh-agent <sensor-name> <agent-id>
Ví dụ:
./sensorctl ssh-agent sensor-20250526120306.852 004
3.3. Tải file từ agent về local¶
Cú pháp:
./sensorctl agent-download <sensor-name> <agent-id> --dst_file <file_path_download>
Ví dụ:
./sensorctl agent-download sensor-20250526120306.852 004 --dst_file /home/vagrant/Desktop/test.png
Phụ lục: Danh sách RPC methods¶
| Method | Mô tả |
|---|---|
| getAlert | Trả về cảnh báo theo UUID |
| listAlerts | Liệt kê cảnh báo gần đây |
| getAssets | Liệt kê tài sản đã biết |
| getFlows | Liệt kê tương quan giữa tài sản nội bộ |
| getWorldFlows | Liệt kê tương quan tài sản với bên ngoài |
| getAssetNeighbors | Liệt kê tài sản lân cận |
| getAssetGraph | Trả về topology tương quan tài sản |
| getSensorStatus | Trả về trạng thái của sensor & phiên bản các binary |
| healthCheck | Trả về tổng quan trạng thái của sensor & các binary |
| shutdownSensor | Tắt sensor một cách có kiểm soát |
| restartSensor | Khởi động lại sensor |
| triggerUpdate | Kích hoạt cơ chế cập nhật config/binary |
| triggerBackup | Kích hoạt cơ chế sao lưu ClickHouse |
| getConfig | Trả về cấu hình hiện tại của sensor |
| setConfig | Cập nhật cấu hình mới cho sensor |
| getThresholds | Trả về cấu hình CEL threshold |
| setThresholds | Cập nhật cấu hình CEL threshold |
| getDBStatus | Trả về thông số của cơ sở dữ liệu |
| setRetention | Cập nhật thời gian lưu dữ liệu ClickHouse |
| pruneOldAlerts | Xóa các cảnh báo cũ hơn cấu hình thời gian lưu |
| reloadCelRules | Reload CEL rules trong cơ sở dữ liệu |
| exportPCAP | Export nội dung PCAP theo ID |
| getPCAP | Trả về tệp PCAP dạng bytes |
| getMetrics | Trả về số liệu runtime |
| getCacheStats | Trả về số liệu cache |
| getQueueDepth | Trả về hàng đợi các tiến trình bất đồng bộ |
| getRuleCoverage | Trả về số liệu độ phủ của rule |
| clearCaches | Dọn dẹp bộ nhớ đệm |
| scanOsVulns | Bắt đầu quét vuln hệ điều hành |
| scanPkgVulns | Bắt đầu quét vuln các gói package |
| scanHotfixVulns | Bắt đầu quét vuln các hotfix |
| listScapResults | Truy vấn kết quả đánh giá SCAP rule |
| wazuhDecoders.listFiles | Liệt kê các tệp XML nằm trong thư mục decoder |
| wazuhDecoders.getFileContent | Trả về nội dung của decoder |
| wazuhDecoders.saveFile | Upload tệp XML decoder từ local lên sensor |
| wazuhRules.listFiles | Liệt kê các tệp XML nằm trong thư mục rule |
| wazuhRules.getFileContent | Trả về nội dung của decoder |
| wazuhRules.saveFile | Upload tệp XML rule từ local lên sensor |
| suricataRules.listFiles | Liệt kê các tệp trong suricata rule |
| suricataRules.getFileContent | Trả về nội dung của suricata rule |
| suricataRules.saveFile | Upload tệp suricata.rules từ local lên sensor |
| getJobStatus | Trả về trạng thái của tiến trình scan bất đồng bộ |
| cancelJob | Hủy tiến trình scan bất đồng bộ |
| ackAlert | Ghi nhận cảnh báo |
| tagAlert | Cập nhật tag của cảnh báo với metadata |
| subscribeAlertsRPC | Subscribe cảnh báo thông qua RPC |
| unsubscribeAlertsRPC | Unsubscribe cảnh báo thông qua RPC |