# Triển khai Wazuh multi-node ## Setup Thiết lập các thành phần Wazuh trên các node: * Wazuh Indexer(node-1): **192.168.110.2** * Wazuh Indexer(node-2): **192.168.110.3** * Wazuh Manager(wazuh-1): **192.168.110.4** * Wazuh Manager(wazuh-2): **192.168.110.5** * Wazuh Dashboard(dashboard): **192.168.110.6** * Wazuh Agent(Windows 10): **192.168.110.7** **Yêu cầu phần cứng**: * Indexer: ![image](https://hackmd.io/_uploads/HkKIzSubWl.png) * Server: ![image](https://hackmd.io/_uploads/BJyYMSdWWl.png) * Dashboard: ![image](https://hackmd.io/_uploads/SJTifSuZ-l.png) ## Install ### Khởi tạo cấu hình Có thể thực hiện trên các node. Ở bài này thì cài trên node1. Tải bộ cài đặt và file cấu hình: ```linux= curl -sO https://packages.wazuh.com/4.14/wazuh-install.sh curl -sO https://packages.wazuh.com/4.14/config.yml ``` Chỉnh sửa file `config.yml` và thay thế node name và IP với tên và IP tương ứng. ```yml= nodes: # Wazuh indexer nodes indexer: - name: node-1 ip: "192.168.110.2" #- name: node-2 # ip: "192.168.110.3" #- name: node-3 # ip: "<indexer-node-ip>" # Wazuh server nodes # If there is more than one Wazuh server # node, each one must have a node_type server: - name: wazuh-1 ip: "192.168.110.3" # node_type: master #- name: wazuh-2 # ip: "192.168.110.4" # node_type: worker #- name: wazuh-3 # ip: "<wazuh-manager-ip>" # node_type: worker # Wazuh dashboard nodes dashboard: - name: dashboard ip: "<dashboard-node-ip>" ``` Chạy bộ cài đặt với option `--generate-config-files` để tạo Wazuh cluster key, certificates, mật khẩu cần thiết cho cài đặt. Nó nằm trong file `./wazuh-install-files.tar` ```linux= bash wazuh-install.sh --generate-config-files ``` Sao chép file `wazuh-install-files.tar` đến các toàn bộ các node. Có thể thực hiện bằng lệnh `scp` ```linux= scp wazuh-install-files.tar wazuh-install.sh node2@192.168.110.3:~ ``` ### Cài đặt Wazuh indexer Thực hiện trên máy cài node-1: ```linux= bash wazuh-install.sh --wazuh-indexer node-1 ``` Lặp lại với các node cần cài indexer. Khởi tạo cluster(chỉ cần trên 1 máy): ```linux= bash wazuh-install.sh --start-cluster ``` Kiểm tra các indexer trong cluster đã chạy chưa: ```linux= curl -k -u admin https://<WAZUH_INDEXER_IP_ADDRESS>:9200/_cat/nodes?v ``` với mật khẩu lấy bằng lệnh sau: ```linux= tar -axf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt -O | grep -P "\'admin\'" -A 1 ``` ### Cài đặt Wazuh server Thực hiện trên máy cài wazuh-1: ```linux= bash wazuh-install.sh --wazuh-server wazuh-1 ``` Lặp lại với các node server. Kiểm tra server trong cluster đã chạy chưa: ```linux= /var/ossec/bin/cluster_control -l ``` ### Cài đặt Wazuh dashboard Thực hiện trên máy cài dashboard: ```linux= bash wazuh-install.sh --wazuh-dashboard dashboard ``` ## Chỉnh sửa cấu hình ### Indexer Trong quá trình cài đặt, nếu có sự thay đổi IP, bạn phải sửa trong file `/etc/wazuh-indexer/opensearch.yml `: Sửa ở đoạn `cluster.initial_master_nodes` Để chỉnh sửa cấu hình của Indexer, chỉnh sửa ở file `/etc/wazuh-indexer/opensearch.yml `. Ví dụ nếu muốn thay đổi IP của Indexer, tìm đến mục: * network.host: Thiết lập địa chỉ của node này cho cả lưu lượng HTTP và lưu lượng transport (giao vận). Node sẽ gắn kết (bind) vào địa chỉ này và sử dụng nó làm địa chỉ công bố (publish address). Chấp nhận địa chỉ IP hoặc tên máy chủ (hostname). Lưu ý: Sử dụng cùng một địa chỉ node đã được thiết lập trong tệp config.yml (địa chỉ dùng để tạo chứng chỉ SSL). * node.name: Tên của node Wazuh indexer như được định nghĩa trong tệp config.yml. Ví dụ: node-1. * cluster.initial_master_nodes: Danh sách tên của các node đủ điều kiện làm master (master-eligible). Các tên này được định nghĩa trong tệp config.yml. Hãy bỏ chú thích (uncomment) các dòng node-2 và node-3, thay đổi tên hoặc thêm các dòng khác tùy theo các định nghĩa trong config.yml của bạn. ```yaml= cluster.initial_master_nodes: - "node-1" - "node-2" - "node-3" ``` * discovery.seed_hosts: Danh sách địa chỉ của các node đủ điều kiện làm master. Mỗi phần tử có thể là một địa chỉ IP hoặc tên máy chủ. Bạn có thể để cài đặt này dưới dạng chú thích (comment) nếu bạn đang cấu hình Wazuh indexer dạng node đơn (single node). Đối với cấu hình đa node (multi-node), hãy bỏ chú thích cài đặt này và thiết lập địa chỉ IP cho từng node đủ điều kiện làm master. ```yml= discovery.seed_hosts: - "10.0.0.1" - "10.0.0.2" - "10.0.0.3" ``` * plugins.security.nodes_dn: Danh sách các Tên định danh (Distinguished Names - DN) trong chứng chỉ của tất cả các node thuộc cụm Wazuh indexer. Hãy bỏ chú thích các dòng cho node-2 và node-3, sau đó thay đổi Tên chung (Common Names - CN) và các giá trị khác phù hợp với cài đặt và định nghĩa trong config.yml của bạn. ```yml= plugins.security.nodes_dn: - "CN=node-1,OU=Wazuh,O=Wazuh,L=California,C=US" - "CN=node-2,OU=Wazuh,O=Wazuh,L=California,C=US" - "CN=node-3,OU=Wazuh,O=Wazuh,L=California,C=US" ``` ### Server Hãy chỉnh sửa tệp cấu hình /etc/filebeat/filebeat.yml và thay thế giá trị sau: hosts: Danh sách các node Wazuh indexer cần kết nối tới. Bạn có thể sử dụng địa chỉ IP hoặc tên máy chủ (hostname). Theo mặc định, host được đặt là localhost: `hosts: ["127.0.0.1:9200"]`. Hãy thay thế bằng địa chỉ IP của Wazuh indexer của bạn cho phù hợp. Nếu bạn có nhiều hơn một node Wazuh indexer, bạn có thể phân tách các địa chỉ bằng dấu phẩy. Ví dụ: hosts: `["192.168.110.2:9200", "192.168.110.3:9200"]` Đoạn mã cấu hình mẫu ```YAML= # Wazuh - Filebeat configuration file (Tệp cấu hình Wazuh - Filebeat) output.elasticsearch: hosts: ["10.0.0.1:9200"] protocol: https username: ${username} password: ${password} ``` Chỉnh sửa tệp `/var/ossec/etc/ossec.conf` để cấu hình kết nối tới indexer. Theo mặc định, phần cài đặt indexer chỉ có một host được cấu hình. Nó được đặt là `0.0.0.0` như được hiển thị bên dưới: ```XML= <indexer> <enabled>yes</enabled> <hosts> <host>https://0.0.0.0:9200</host> </hosts> <ssl> <certificate_authorities> <ca>/etc/filebeat/certs/root-ca.pem</ca> </certificate_authorities> <certificate>/etc/filebeat/certs/filebeat.pem</certificate> <key>/etc/filebeat/certs/filebeat-key.pem</key> </ssl> </indexer> ``` Các bước thực hiện: Thay thế địa chỉ IP: Hãy thay thế `0.0.0.0` bằng địa chỉ IP hoặc tên máy chủ (hostname) của node Wazuh indexer của bạn. Bạn có thể tìm thấy giá trị này trong tệp cấu hình Filebeat tại `/etc/filebeat/filebeat.yml`. Kiểm tra chứng chỉ: Đảm bảo rằng tên của chứng chỉ (certificate) và khóa (key) của Filebeat trong cấu hình khớp với các tệp thực tế nằm trong thư mục `/etc/filebeat/certs`. Cấu hình cho cụm (Cluster): Nếu bạn đang vận hành hạ tầng cụm (cluster) Wazuh indexer, hãy thêm một thẻ `<host>` cho từng node của bạn. Ví dụ, trong cấu hình hai node: ```XML= <hosts> <host>https://192.168.110.2:9200</host> <host>https://192.168.110.3:9200</host> </hosts> ``` Lưu ý: Wazuh server sẽ ưu tiên báo cáo dữ liệu tới node Wazuh indexer đầu tiên trong danh sách. Nó sẽ chỉ chuyển sang node tiếp theo trong trường hợp node trước đó không khả dụng. ### Dashboard Dưới đây là bản dịch và hướng dẫn chi tiết cho việc cấu hình tệp `opensearch_dashboards.yml`: Hướng dẫn cấu hình Dashboard Hãy chỉnh sửa tệp `/etc/wazuh-dashboard/opensearch_dashboards.yml` và thay thế các giá trị sau: * server.host: Cài đặt này chỉ định địa chỉ host của Wazuh dashboard server. Để cho phép người dùng từ xa (remote users) kết nối vào giao diện web, hãy đặt giá trị này thành địa chỉ IP hoặc tên miền (DNS name) của máy chủ Wazuh dashboard. Giá trị `0.0.0.0` sẽ chấp nhận kết nối từ tất cả các địa chỉ IP khả dụng trên máy chủ (khuyên dùng nếu bạn muốn truy cập từ bên ngoài). * opensearch.hosts: Các đường dẫn URL của các Wazuh indexer instance sẽ được sử dụng cho mọi truy vấn dữ liệu. Wazuh dashboard có thể được cấu hình để kết nối tới nhiều node Wazuh indexer trong cùng một cụm (cluster). Địa chỉ của các node có thể được ngăn cách bằng dấu phẩy. Ví dụ: `["https://10.0.0.2:9200", "https://10.0.0.3:9200", "https://10.0.0.4:9200"]` Đoạn mã cấu hình mẫu Dưới đây là đoạn cấu hình tương ứng trong file (bạn cần thay đổi localhost thành IP của Indexer nếu chúng nằm trên các máy khác nhau): ```YAML= server.host: 0.0.0.0 server.port: 443 opensearch.hosts: ["https://192.168.110.2:9200", "https://192.168.110.3:9200"] # Thay thế bằng IP Indexer của bạn opensearch.ssl.verificationMode: certificate ``` Hãy chỉnh sửa tệp `/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml` và thay thế `<WAZUH_SERVER_IP_ADDRESS>` bằng địa chỉ IP hoặc tên máy chủ (hostname) của node Wazuh server master. Cấu hình này giúp giao diện web (Dashboard) có thể giao tiếp với Wazuh Server để lấy dữ liệu và thực hiện các tác vụ quản lý. Đoạn mã cấu hình mẫu ```YAML= hosts: - default: url: https://10.0.0.1 # Thay <WAZUH_SERVER_IP_ADDRESS> bằng IP của Wazuh Manager port: 55000 username: wazuh-wui password: wazuh-wui run_as: false ```