Cài đặt và cấu hình hệ thống WAZUH
Do đặc thù công việc nên từ một người làm Pentest tôi phải chuyển sang làm SOC và đảm nhiệm việc xây dựng hệ thống SIEM. Mặc dù thời điểm hiện tại có rất nhiều sản phẩm thương mại đã hoàn thiện, chỉ chờ doanh nghiệp mua về và vận hành thôi. Tuy nhiên chi phí cho các sản phẩm này là một trở ngại đối với các doanh nghiệp vừa và nhỏ (nó đắt ).
Vậy nên vừa để có thêm kiến thức và để tiết kiệm chi phí, tôi sẽ tự xây dựng hệ thống SIEM dựa trên open source. Một trong những open source mạnh mẽ nhất (hoặc là do tôi nghĩ thế) là WAZUH
Wazuh là một nền tảng bảo mật mã nguồn mở và miễn phí, hợp nhất các khả năng của XDR và SIEM, không chỉ cho phép các công ty phát hiện các mối đe dọa tinh vi mà còn có thể giúp ngăn ngừa vi phạm và rò rỉ dữ liệu xảy ra.
Hiện tại thì tôi đang triển khai nó trên môi trường thực tế, vậy nên chắc chắn là nó hoạt động.
Kiến trúc
Đọc thêm về cấu trúc tại đây hoặc là đây
Hiện tại thì WAZUH đang ở phiên bản 4.4 vậy nên tất cả cài đặt và cấu hình trong bài này cũng sẽ ở phiên bản 4.4, trong trường hợp có các cập nhật mới, chỉ cần thay đổi tên phiên bản (nếu) xuất hiện trong các link cài đặt.
WAZUH INDEXER
Để không gặp các lỗi trong quá trình cài đặt, phải sử dụng quyền root
Certificates creation
Tải tool tạo cert và file config của wazuh về
curl -sO https://packages.wazuh.com/4.4/wazuh-certs-tool.sh
curl -sO https://packages.wazuh.com/4.4/config.yml
Vào config.yml
nano config.yml
Thay đổi các giá trị “name” và “ip” thành tên là ip của server (Trường hợp tách wazuh-indexer và wazuh-manager thành 2 máy chủ vật lý thì phải đặt đúng ip của từng máy chủ).
nodes:
# Wazuh indexer nodes
indexer:
- name: dc-indexer
ip: 10.10.24.1
#- name: node-2
# ip: <indexer-node-ip>
#- 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: dc-manager
ip: 10.10.24.1
# node_type: master
#- name: wazuh-2
# ip: <wazuh-manager-ip>
# node_type: worker
#- name: wazuh-3
# ip: <wazuh-manager-ip>
# node_type: worker
# Wazuh dashboard nodes
dashboard:
- name: dc-dashboard
ip: 10.10.24.1
Chạy wazuh-certs-tool.sh để tạo cert
bash ./wazuh-certs-tool.sh -A
tar -cvf ./wazuh-certificates.tar -C ./wazuh-certificates/ .
Node installation
Cài đặt các gói còn thiếu
apt-get install debconf adduser procps
apt-get install gnupg apt-transport-https
Tạo wazuh repository
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import && chmod 644 /usr/share/keyrings/wazuh.gpg
echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" | tee -a /etc/apt/sources.list.d/wazuh.list
apt-get update
Cài đặt wazuh-indexer
apt-get -y install wazuh-indexer
Cấu hình các thông số trong opensearch
nano /etc/wazuh-indexer/opensearch.yml
network.host: “10.10.24.1”
node.name: “dc-indexer”
cluster.initial_master_nodes:
- "dc-indexer"
….
discovery.seed_hosts: # bỏ dấu “#” ở đầu dòng
- "10.10.24.1" # bỏ dấu “#” ở đầu dòng
….
path.logs: /var/log/wazuh-indexer
bootstrap.memory_lock: true
….
plugins.security.nodes_dn:
- "CN=dc-indexer,OU=Wazuh,O=Wazuh,L=California,C=US"
#- "CN=node-2,OU=Wazuh,O=Wazuh,L=California,C=US"
Tạo cert. Đặt tên node name giống tên node name cấu hình trong file opensearch.yml
NODE_NAME=dc-indexer
mkdir /etc/wazuh-indexer/certs
tar -xf ./wazuh-certificates.tar -C /etc/wazuh-indexer/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./admin.pem ./admin-key.pem ./root-ca.pem
mv -n /etc/wazuh-indexer/certs/$NODE_NAME.pem /etc/wazuh-indexer/certs/indexer.pem
mv -n /etc/wazuh-indexer/certs/$NODE_NAME-key.pem /etc/wazuh-indexer/certs/indexer-key.pem
chmod 500 /etc/wazuh-indexer/certs
chmod 400 /etc/wazuh-indexer/certs/*
chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs
Chỉnh sửa giới hạn tài nguyên hệ thống
nano /usr/lib/systemd/system/wazuh-indexer.service
[Service]
LimitMEMLOCK=infinity # Thêm dòng này
Tăng kích thước không gian heap
nano /etc/wazuh-indexer/jvm.options
Tài liệu Wazuh khuyến cáo không gian heap sử dụng tối thiểu bằng nửa tổng dung lượng RAM hiện có. Ví dụ RAM của tôi hiện có là 8Gb thì tôi sẽ sửa 1 thành 4
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms4g
-Xmx4g
Bật và chạy dịch vụ
systemctl daemon-reload
systemctl enable wazuh-indexer
systemctl start wazuh-indexer
Cluster initialization
Chạy file /usr/share/wazuh-indexer/bin/indexer-security-init.sh trên các node để tải lên thông tin các cert đã tạo
/usr/share/wazuh-indexer/bin/indexer-security-init.sh
Kiểm tra tất cả các cài đặt đã thành công và dịch vụ không có lỗi (Lưu ý: tắt proxy trước khi thực hiện lệnh curl)
curl -k -u admin:admin https://10.10.24.1:9200
Kết quả giống bên dưới là thành công
{
"name" : "dc-indexer",
"cluster_name" : "wazuh-cluster",
"cluster_uuid" : "bMz0BKdlRVui5jF-mlt6yg",
"version" : {
"number" : "7.10.2",
"build_type" : "rpm",
"build_hash" : "f2f809ea280ffba217451da894a5899f1cec02ab",
"build_date" : "2022-12-12T22:17:42.341124910Z",
"build_snapshot" : false,
"lucene_version" : "8.10.1",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
WAZUH MANAGER
Wazuh server node installation
- Cài đặt wazuh-manager
apt-get -y install wazuh-manager
Chạy wazuh-manager
systemctl daemon-reload
systemctl enable wazuh-manager
systemctl start wazuh-manager
Kiểm tra trạng thái wazuh-manager
systemctl status wazuh-manager
- Cài đặt filebeat
apt-get -y install filebeat
Tải file cấu hình filebeat
curl -so /etc/filebeat/filebeat.yml https://packages.wazuh.com/4.4/tpl/wazuh/filebeat/filebeat.yml
Sửa cấu hình filebeat với hosts là ip của indexer node
nano /etc/filebeat/filebeat.yml
hosts: ["10.10.24.1:9200"]
Tạo keystore
filebeat keystore create
echo admin | filebeat keystore add username --stdin --force
echo admin | filebeat keystore add password --stdin --force
Tải template cho indexer
curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/4.4/extensions/elasticsearch/7.x/wazuh-template.json
chmod go+r /etc/filebeat/wazuh-template.json
Cài đặt các module của wazuh cho filebeat
curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.2.tar.gz | tar -xvz -C /usr/share/filebeat/module
Tạo cert cho filebeat, đặt tên NODE_NAME giống với tên của server trong file config.yml
NODE_NAME=dc-manager
mkdir /etc/filebeat/certs
tar -xf ./wazuh-certificates.tar -C /etc/filebeat/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./root-ca.pem
mv -n /etc/filebeat/certs/$NODE_NAME.pem /etc/filebeat/certs/filebeat.pem
mv -n /etc/filebeat/certs/$NODE_NAME-key.pem /etc/filebeat/certs/filebeat-key.pem
chmod 500 /etc/filebeat/certs
chmod 400 /etc/filebeat/certs/*
chown -R root:root /etc/filebeat/certs
Chạy filebeat
systemctl daemon-reload
systemctl enable filebeat
systemctl start filebeat
Kiểm tra trạng thái filebeat
filebeat test output
Kết quả giống bên dưới là thành công
elasticsearch: https://10.10.24.1:9200...
parse url... OK
connection...
parse host... OK
dns lookup... OK
addresses: 127.0.0.1
dial up... OK
TLS...
security: server's certificate chain verification is enabled
handshake... OK
TLS version: TLSv1.3
dial up... OK
talk to server... OK
version: 7.10.2
WAZUH DASHBOARD
Tải các package còn thiếu
apt-get install debhelper tar curl libcap2-bin
Tải wazuh-dashboard
apt-get -y install wazuh-dashboard
Sửa cấu hình dashboard
nano /etc/wazuh-dashboard/opensearch_dashboards.yml
server.host: 10.10.24.1
server.port: 443
opensearch.hosts: https://10.10.24.1:9200
Tạo cert cho dashboard, đặt tên NODE_NAME giống với tên của dashboard trong file config.yml
NODE_NAME=dc-dashboard
mkdir /etc/wazuh-dashboard/certs
tar -xf ./wazuh-certificates.tar -C /etc/wazuh-dashboard/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./root-ca.pem
mv -n /etc/wazuh-dashboard/certs/$NODE_NAME.pem /etc/wazuh-dashboard/certs/dashboard.pem
mv -n /etc/wazuh-dashboard/certs/$NODE_NAME-key.pem /etc/wazuh-dashboard/certs/dashboard-key.pem
chmod 500 /etc/wazuh-dashboard/certs
chmod 400 /etc/wazuh-dashboard/certs/*
chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/certs
Chạy dashboard
systemctl daemon-reload
systemctl enable wazuh-dashboard
systemctl start wazuh-dashboard
Truy cập vào dashboard trên web theo địa chỉ https://10.10.24.1 với username và password mặc định admin:admin
Đổi password mặc định của tài khoản admin
curl -so wazuh-passwords-tool.sh https://packages.wazuh.com/4.4/wazuh-passwords-tool.sh
bash wazuh-passwords-tool.sh -u admin -p <mật khẩu>
Lưu ý: Nếu hệ thống có proxy (internet gateway) thì phải đặt proxy trước khi cài đặt
- Set proxy cho apt để tải các package trên trang chủ Ubuntu
nano /etc/apt/apt.conf
Acquire::https::Proxy "http://ip:port";
Acquire::http::Proxy "http://ip:port";
Lưu file và login lại vào account
- Set proxy cho server
nano /etc/environment
Thêm vào file các dòng sau:
HTTP_PROXY="http://ip:port"
HTTPS_PROXY="http://ip:port"
NO_PROXY="10.10.24.1,localhost,127.0.0.1,::1"
Lưu file và login lại vào account