Artikel ini akan membahas tentang integrasi Graylog dengan Wazuh. Pada akhir artikel, Wazuh akan mengirimkan semua Wazuh alert ke Graylog, dan Graylog akan melakukan ingesting alert sebagai alert_log. Wazuh tetap berfungsi sepenuhnya sebagai SIEM, IDS, IPS, EDR, dan XDR. Instalasi dilakukan dengan kondisi Wazuh dan Graylog berada dalam satu Host (bisa VM ataupun baremetal). Langkah yang dilakukan adalah:
- Instalasi Wazuh
- Persiapan instalasi Graylog
- Instalasi Graylog
- Redirect alert Wazuh ke Graylog.
Instalasi Wazuh
Wazuh akan di-install melalui installation script dari Wazuh dengan versi 4.4.x. System yang saya gunakan adalah.
- 4 core CPU
- 4GB RAM
- Ubuntu 20.04
- IP Address 192.168.80.119
Download file yang dibutuhkan dan jalankan sebagai root user.
sudo su
cd ~
curl -sO https://packages.wazuh.com/4.4/wazuh-install.sh
curl -sO https://packages.wazuh.com/4.4/config.yml
Ubah konfigurasi file config.yml
menjadi seperti ini.
nodes:
# Wazuh indexer nodes
indexer:
- name: node01.bayuskylabs.demo
ip: 192.168.80.119
#- 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: node01.bayuskylabs.demo
ip: 192.168.80.119
# 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: node01.bayuskylabs.demo
ip: 192.168.80.119
Lakukan instalasi sesuai dengan artikel berikut Instalasi Wazuh pada Ubuntu 20.04 – BayuSky’s Virtual Labs (bayuskylabs.com)
Setelah selesai instalasi, jalankan command ini agar semua komponen Wazuh dikenali sebagai service dan dijalankan secara otomatis.
systemctl daemon-reload
systemctl enable wazuh-indexer
systemctl restart wazuh-indexer
systemctl enable wazuh-manager
systemctl restart wazuh-manager
systemctl enable wazuh-dashboard
systemctl restart wazuh-dashboard
Persiapan instalasi Graylog
Wazuh Indexer akan digunakan juga oleh Graylog, hal ini dikarenakan Wazuh Indexer berbasis Opensearch dan Graylog membutuhkan Opensearch untuk beroperasi.
Ubah parameter Opensearch
nano /etc/wazuh-indexer/opensearch.yml
Tambahakan parameter berikut, dan comment bagian compatibility.override_main_response_version
bootstrap.memory_lock: true
#compatibility.override_main_response_version: true
Ubah parameter wazuh-indexer.service
nano /usr/lib/systemd/system/wazuh-indexer.service
Tambahkan line berikut di bawah [Service]
[Service]
LimitMEMLOCK=infinity
nano /etc/wazuh-indexer/jvm.options
#ubah jvm options menggunakan 50% memory, saya menggunakan 4GB RAM, jadi set up jvm menggunakan 2GB
-Xms2g
-Xmx2g
systemctl daemon-reload
systemctl enable wazuh-indexer
systemctl restart wazuh-indexer.service
Masuk ke Wazuh web admin, pada sidebar, pilih menu Security > Internal Users, tambahkan internal user dengan username graylog dan password menggunakan karakter alfanumerik.
Instalasi Graylog
Graylog membutuhkan MongoDB untuk menyimpan konfigurasi. Untuk Graylog, saya menggunakan versi 5.0 yang compatible dengan Opensearch pada Wazuh Indexer. Jadi MongoDB yang dibutuhkan minimal versi 5.0. Instalasi MongoDB dengan menggunakan command berikut.
sudo apt-get install gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl restart mongod.service
sudo systemctl --type=service --state=active | grep mongod
Selanjutnya instalasi Graylog dengan menggunakan command berikut.
wget https://packages.graylog2.org/repo/packages/graylog-5.0-repository_latest.deb
sudo dpkg -i graylog-5.0-repository_latest.deb
apt-get update && sudo apt-get install graylog-server
Konfigurasi Parameter berikut pada Graylog nano /etc/graylog/server/server.conf
ubah parameter berikut.
#command:
pwgen -N 1 -s 96
#hasilnya masukkan pada bagian
password_secret =
#command:
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
#hasilnya masukkan pada bagian
root_password_sha2 =
#ubah bagian
http bind = 192.168.80.119
port 9000
elasticsearch_hosts = https://graylog:password@192.168.80.119:9200
Tambahkan ceritificate Graylog dan copy root-ca.pem
Wazuh ke dalam Graylog
mkdir /etc/graylog/server/certs
cp -a /usr/share/graylog-server/jvm/lib/security/cacerts /etc/graylog/server/certs/cacerts
cp /etc/wazuh-indexer/certs/root-ca.pem /etc/graylog/server/certs/
/usr/share/graylog-server/jvm/bin/keytool -importcert -keystore /etc/graylog/server/certs/cacerts -storepass changeit -alias root_ca -file /etc/graylog/server/certs/root-ca.pem
Ubah konfigurasi security java untuk graylog nano /etc/default/graylog-server
# Path to a custom java executable. By default the java executable of the
# bundled JVM is used.
#JAVA=/usr/bin/java
# Default Java options for heap and garbage collection.
GRAYLOG_SERVER_JAVA_OPTS="-Xms1g -Xmx1g -server -XX:+UseG1GC -XX:-OmitStackTraceInFastThrow"
# Avoid endless loop with some TLSv1.3 implementations.
GRAYLOG_SERVER_JAVA_OPTS="$GRAYLOG_SERVER_JAVA_OPTS -Djdk.tls.acknowledgeCloseNotify=true"
# Fix for log4j CVE-2021-44228
#GRAYLOG_SERVER_JAVA_OPTS="$GRAYLOG_SERVER_JAVA_OPTS -Dlog4j2.formatMsgNoLookups=true"
GRAYLOG_SERVER_JAVA_OPTS="$GRAYLOG_SERVER_JAVA_OPTS -Dlog4j2.formatMsgNoLookups=true -Djavax.net.ssl.trustStore=/etc/graylog/server/certs/cacerts -Djavax.net.ssl.trustStorePassword=changeit"
# Pass some extra args to graylog-server. (i.e. "-d" to enable debug mode)
GRAYLOG_SERVER_ARGS=""
# Program that will be used to wrap the graylog-server command. Useful to
# support programs like authbind.
GRAYLOG_COMMAND_WRAPPER=""
Enable dan start graylog server
systemctl daemon-reload
systemctl enable graylog-server
systemctl start graylog-server
Redirect alert Wazuh ke Graylog menggunakan fluent-bit
Fluent-bit dimanfaatkan untuk mengirimkan alert Wazuh ke Graylog. Namun yang pertama dilakukan adalah mempersiapkan Graylog untuk menerima data dari Wazuh. Buka Web admin Graylog pada alamat http://192.168.80.119:9000
lalu masukkan username admin dan password plain yang digunakan untuk membangkitkan root_password_sha2
.
Masuk ke menu System > Inputs, pilih Raw/Plaintect TCP lalu klik Launch new input
Berikan Title Wazuh Alert, lalu masukkan bind address 0.0.0.0 dengan port 5555.
Instalasi fluent-bit dengan menggunakan command berikut
curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh
Ubah parameter fluent-bit nano /etc/fluent-bit/fluent-bit.conf
[SERVICE]
flush 5
daemon Off
log_level info
parsers_file parsers.conf
plugins_file plugins.conf
http_server Off
http_listen 0.0.0.0
http_port 2020
storage.metrics on
storage.path /var/log/flb-storage/
storage.sync normal
storage.checksum off
storage.backlog.mem_limit 5M
Log_File /var/log/td-agent-bit.log
[INPUT]
name tail
path /var/ossec/logs/alerts/alerts.json
tag wazuh
parser json
Buffer_Max_Size 5MB
Buffer_Chunk_Size 400k
storage.type filesystem
Mem_Buf_Limit 512MB
[OUTPUT]
Name tcp
Host 192.168.80.119 #graylog IP
Port 5555 #input port
net.keepalive off
Match wazuh
Format json_lines
json_date_key true
systemctl enable fluent-bit
systemctl start fluent-bit
Generate alert dengan login SSH pada server, lalu perhatikan bits received.
Klik Show received messages untuk melihat stream.
Graylog sudah bisa menerima alert dari Wazuh. Selanjutnya lakukan proses ingest Wazuh alert ke dalam Graylog, bisa merujuk pada artikel selanjutnya: SIEM Stack: Ingest Wazuh alert ke dalam Graylog – BayuSky’s Virtual Labs (bayuskylabs.com). Happy logging!
Catatan
Jika sudah memiliki Wazuh yang aktif, bisa langsung ke langkah Persiapan instalasi Graylog.
Jika sudah memiliki Wazuh dan Graylog namun dalam server yang terpisah, bisa langsung lakukan langkah Redirect alert Wazuh ke Graylog lalu sesuaikan IP Address pada fluent-bit.conf.
Sumber
Installing the New Wazuh version 4.4 — The SOCFortress Way | by SOCFortress | Medium