AizuDemy

Tutorial Setup Wazuh SIEM di VPS: Deteksi Intrusi Real-Time Server

Tutorial Setup Wazuh SIEM di VPS: Deteksi Intrusi Real-Time Server
๐ŸŽง
Dengarkan Artikel Ini
Suara AI Otomatis โ€ข 9 mnt baca baca
โšก TL;DR

Poin Kunci Artikel Ini:

  • System OS: Ubuntu 22.04 LTS.Wazuh Agent VPS: 1 vCPU, 512 MB RAM (Linux target monitoring).
  • Arsitektur single-node Wazuh Docker menggabungkan Indexer, Server, dan Dashboard dalam satu jaringan virtual Docker.1.
  • Sesuaikan variabel kernel OS target.
๐Ÿ“‹ Daftar Isi Materi Tutup โ–ด

Anatomi Ancaman VPS: Mengapa Log Lokal Tidak Cukup

Setiap VPS publik yang terhubung ke internet menerima pemindaian (scanning) dan percobaan peretasan secara terus-menerus oleh botnet otomatis dalam hitungan detik setelah alamat IP aktif. Vektor serangan paling umum mencakup SSH brute force, pengunggahan web shell melalui kerentanan aplikasi web, serta eskalasi hak akses untuk memodifikasi biner sistem. Pendekatan analisis keamanan tradisional yang mengandalkan file log lokal seperti /var/log/auth.log atau /var/log/syslog memiliki kelemahan fatal: saat penyerang berhasil memperoleh akses root, langkah pertama yang mereka lakukan adalah menghapus atau memanipulasi file log tersebut untuk menghilangkan jejak digital (anti-forensik).

Wazuh SIEM (Security Information and Event Management) memecahkan masalah ini dengan memindahkan arsitektur keamanan dari lokal ke model terpusat dan real-time. Sistem Wazuh terdiri dari dua komponen utama: Wazuh Agent yang berjalan di server target untuk mengumpulkan event sistem, serta Wazuh Manager yang berfungsi mendeksripsi, menganalisis, mengorelasikan log, dan menyimpan indeks data menggunakan OpenSearch. Log yang terkirim bersifat read-only di sisi manager, sehingga penyerang yang berhasil menembus VPS target tidak dapat menghapus catatan aktivitas yang sudah terkirim. Selain analitik log, Wazuh menyediakan modul File Integrity Monitoring (FIM), deteksi kerentanan CVE, audit kepatuhan (CIS Benchmarks), dan respons otomatis (Active Response).

Arsitektur Sistem & Spesifikasi Minimum Server

Wazuh Manager mengintegrasikan tiga engine utama: Wazuh Server (log analyzer & correlation engine), Wazuh Indexer (fork Elasticsearch berbasis OpenSearch untuk pencarian dan indeks cepat), serta Wazuh Dashboard (antarmuka visualisasi Kibana-fork). Pengoperasian seluruh stack ini membutuhkan alokasi sumber daya komputasi yang tepat.

  • Wazuh Manager VPS: Minimum 2 vCPU, 4 GB RAM (Disarankan 4 vCPU, 8 GB RAM untuk performa indeks OpenSearch optimal), 50 GB SSD storage. System OS: Ubuntu 22.04 LTS.
  • Wazuh Agent VPS: 1 vCPU, 512 MB RAM (Linux target monitoring). Overhead CPU agent rata-rata di bawah 1%.
  • Port Firewall Dibuka (Manager Node):
    • 1514/TCP: Kanal komunikasi terenkripsi agent-to-manager (pengiriman log & event).
    • 1515/TCP: Layanan pendaftaran agent baru (Wazuh AuthD service).
    • 5601/TCP: Akses HTTPS ke Wazuh Dashboard.
    • 9200/TCP: OpenSearch REST API (opsional, amankan hanya untuk akses internal).

Langkah 1: Deploy Wazuh Manager via Docker Compose

Penggunaan Docker Compose memastikan isolasi dependensi dan kemudahan manajemen lifecycle kontainer. Arsitektur single-node Wazuh Docker menggabungkan Indexer, Server, dan Dashboard dalam satu jaringan virtual Docker.

1. Sesuaikan variabel kernel OS target. OpenSearch membutuhkan batas memori virtual (virtual memory map counts) yang lebih tinggi dari nilai default Linux:

sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

2. Clone repositori resmi Wazuh Docker spesifik pada versi stabil v4.9.0:

git clone https://github.com/wazuh/wazuh-docker.git -b v4.9.0 --single-branch
cd wazuh-docker/single-node

3. Eksekusi kontainer generator sertifikat SSL/TLS internal. Langkah ini membuat kunci enkripsi dan sertifikat self-signed untuk mengamankan komunikasi antar-kontainer (Manager-to-Indexer dan Dashboard-to-Indexer):

docker compose -f generate-indexed-certs.yml run --rm generator

4. Jalankan seluruh stack kontainer Wazuh secara daemon (background):

docker compose up -d

5. Verifikasi status operasional seluruh kontainer:

docker compose ps

Pastikan kontainer wazuh.indexer, wazuh.manager, dan wazuh.dashboard berstatus Up (healthy). Akses dashboard melalui peramban web dengan URL: https://<IP_VPS_MANAGER>:5601. Kredensial default: Username admin, sedangkan password acak dapat ditemukan dalam log insialisasi kontainer generator atau file config/wazuh_indexer/internal_users.yml.

Langkah 2: Instalasi & Registrasi Wazuh Agent di Server Target

Wazuh Agent bekerja secara efisien di background sebagai systemd service. Agent membaca log lokal, memantau sistem berkas via kernel inotify, dan mengirimkan data terenkripsi ke Manager.

Jalankan instruksi berikut pada VPS target (node yang ingin diproteksi):

1. Import GPG Key resmi Wazuh dan tambahkan repositori APT ke sistem:

curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo gpg --dearmor -o /usr/share/keyrings/wazuh-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/wazuh-archive-keyring.gpg] https://packages.wazuh.com/4.x/apt/ stable main" | sudo tee /etc/apt/sources.list.d/wazuh.list
sudo apt-get update

2. Install paket wazuh-agent dengan menyertakan variabel lingkungan IP Manager dan Nama Agent untuk registrasi otomatis:

sudo WAZUH_MANAGER="IP_VPS_MANAGER" WAZUH_AGENT_NAME="vps-production-01" apt-get install wazuh-agent

3. Reload daemon systemd, aktifkan auto-start saat boot, dan jalankan service agent:

sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent

4. Verifikasi status koneksi agent langsung dari VPS Manager menggunakan utilitas pengelola agent Wazuh:

docker exec -it single-node-wazuh.manager-1 /var/ossec/bin/agent_control -l

Jika registrasi berhasil, agent vps-production-01 akan menampakkan status Active.

Langkah 3: Konfigurasi File Integrity Monitoring (FIM / Syscheck)

Modul File Integrity Monitoring (Syscheck) pada Wazuh mendeteksi perubahan atribut, pembuatan file baru, modifikasi isi, dan penghapusan berkas secara real-time. FIM menghitung hash cryptographic (MD5, SHA1, SHA256) dari file target dan membandingkannya dengan database baseline.

Buka dan edit file konfigurasi agent /var/ossec/etc/ossec.conf pada server target:

<syscheck>
  <disabled>no</disabled>
  <frequency>43200</frequency>

  <!-- Monitoring real-time direktori web root & biner sistem -->
  <directories realtime="yes" check_all="yes" report_changes="yes">/var/www/html</directories>
  <directories realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin,/sbin</directories>

  <!-- Pengecualian berkas dinamis/temporary -->
  <ignore>/etc/mtab</ignore>
  <ignore>/etc/hosts.deny</ignore>
  <ignore>/etc/mail/statistics</ignore>
  <ignore>/etc/svc/volatile</ignore>
</syscheck>

Penjelasan parameter kunci FIM:

  • realtime="yes": Memanfaatkan subsistem inotify pada Linux kernel untuk mendeteksi perubahan secara instant tanpa menunggu jadwal pemindaian berkala.
  • report_changes="yes": Mencatat perbedaan baris kode (diff) yang dimodifikasi (sangat berguna untuk melacak injeksi skrip berbahaya pada file PHP/HTML).
  • check_all="yes": Memeriksa perubahan ukuran berkas, hak akses (permissions), pemilik (owner/group), jam modifikasi (mtime), dan kalkulasi hash.

Terapkan konfigurasi baru dengan merestart service agent:

sudo systemctl restart wazuh-agent

Langkah 4: Integrasi Notifikasi Alert ke Telegram Bot

Notifikasi real-time memastikan tim Operations/Security mendapat peringatan instan saat terjadi insiden kritis tanpa perlu memantau dashboard 24/7.

1. Buat bot baru melalui @BotFather di Telegram, dapatkan BOT_TOKEN, dan catat ID obrolan tujuan (CHAT_ID).

2. Edit berkas /var/ossec/etc/ossec.conf pada kontainer Wazuh Manager:

<integration>
  <name>telegram</name>
  <hook_url>https://api.telegram.org/bot<YOUR_BOT_TOKEN>/sendMessage</hook_url>
  <api_key><YOUR_CHAT_ID></api_key>
  <level>7</level>
  <alert_format>json</alert_format>
</integration>

Skala Severity Level pada Wazuh berkisar dari 0 hingga 16. Mengatur <level>7</level> memastikan hanya alert kategori menengah hingga tinggi (seperti kegagalan login berulang, perubahan file sistem kritis, atau eksekusi malware) yang dikirim ke Telegram untuk mencegah kejenuhan notifikasi (alert fatigue).

Langkah 5: Active Response - Pemblokiran IP Penyerang Otomatis

Active Response mengubah Wazuh dari SIEM pasif menjadi Intrusion Prevention System (IPS) aktif. Saat aturan deteksi terpicu, Wazuh Manager menginstruksikan agent untuk menjalankan skrip mitigasi lokal.

Edit berkas /var/ossec/etc/ossec.conf pada node Wazuh Manager untuk mendefinisikan perintah dan kaitannya dengan rule ID:

<command>
  <name>firewall-drop</name>
  <executable>firewall-drop</executable>
  <timeout_allowed>yes</timeout_allowed>
</command>

<active-response>
  <command>firewall-drop</command>
  <location>local</location>
  <rules_id>5716,5720</rules_id>
  <timeout>1800</timeout>
</active-response>

Mekanisme kerja Active Response di atas:

  • rules_id 5716 (SSHD authentication failure) dan 5720 (SSHD multiple authentication failures) memicu aksi.
  • firewall-drop memanggil skrip internal Wazuh yang menambahkan aturan penolakan IP ke iptables atau ufw pada server target.
  • timeout 1800 memblokir alamat IP penyerang selama 30 menit (1800 detik). Setelah durasi berakhir, aturan iptables dicabut secara otomatis untuk mencegah pemblokiran permanen akibat kesalahan manusia (false positive).

Restart kontainer Manager untuk mendaftarkan rule Active Response:

docker compose restart wazuh.manager

Checklist Pengujian & Audit Hardening Keamanan

Lakukan validasi berikut untuk memastikan seluruh rantai deteksi dan mitigasi berfungsi sesuai skenario:

  • [ ] Pengujian SSH Brute Force: Lakukan simulasi SSH login gagal sebanyak 6 kali berturut-turut dari komputer luar. Verifikasi IP terisolasi otomatis: eksekusi sudo iptables -L -n -v di target agent dan pastikan IP penguji masuk ke rantai blokir.
  • [ ] Pengujian FIM Real-time: Eksekusi pembuatan berkas mencurigakan di web root: sudo touch /var/www/html/shell.php. Cek event log di Wazuh Dashboard (menu Security Events -> FIM) dan pastikan notifikasi Telegram diterima.
  • [ ] Hardening Port Firewall: Tutup port 1515/TCP pada VPS Manager jika tidak ada penambahan agent baru. Biarkan port 1514/TCP tetap terbuka untuk enkapsulasi log.
  • [ ] Manajemen Lifecycle OpenSearch: Buat Index State Management (ISM) policy pada OpenSearch Dashboard untuk merotasi atau menghapus indeks log lama melebihi 30 hari agar kapasitas penyimpanan VPS tidak penuh.

Troubleshooting & Remediation Permasalahan Umum

1. Agent Status: Never Connected / Disconnected

Gejala: Agent yang baru diinstal tidak muncul di dashboard atau berstatus Never Connected.

Penyebab: Traffic inbound port 1514/TCP atau 1515/TCP terhalang oleh firewall VPS (UFW) atau Security Group cloud provider (AWS EC2, DigitalOcean, Hetzner).

Solusi: Pada VPS Manager, pastikan rule firewall diizinkan:

sudo ufw allow 1514/tcp
sudo ufw allow 1515/tcp
sudo ufw reload

Periksa log kendala koneksi pada agent target: sudo tail -f /var/ossec/logs/ossec.log.

2. OpenSearch Container Exited (Exit Code 137)

Gejala: Kontainer wazuh.indexer mendadak mati (exited) setelah beberapa menit berjalan.

Penyebab: Exit code 137 menunjukkan kontainer dihentikan oleh Linux Kernel Out-Of-Memory (OOM) Killer karena penggunaan RAM melebihi batas fisik VPS.

Solusi: Batasi JVM Heap Size pada file docker-compose.yml milik OpenSearch Indexer:

OPENSEARCH_JAVA_OPTS="-Xms1g -Xmx1g"

Nilai heap size disarankan sebesar 50% dari total RAM VPS, dengan batas minimal 1 GB.

3. Penggunaan CPU Agent Melonjak Tinggi

Gejala: Process wazuh-syscheckd menggunakan 100% CPU di server target.

Penyebab: Modul FIM melakukan pemindaian pada direktori yang berisi ribuan berkas dinamis atau log berukuran besar (misal: /var/log atau direktori cache node_modules).

Solusi: Tambahkan tag <ignore> pada direktori berfrekuensi tinggi atau turunkan frekuensi pemindaian pada ossec.conf.

Kesimpulan

Implementasi Wazuh SIEM pada infrastruktur VPS mengubah paradigma keamanan server dari pendekatan reaktif menjadi visibilitas proaktif dan respons terautomasi. Dengan pengumpulan log terpusat yang terenkripsi, pemantauan integritas berkas (FIM) secara real-time via kernel inotify, serta eksekusi Active Response untuk memblokir IP penyerang secara spontan, risiko pengambilalihan server dapat ditekan sejak tahap awal pengintaian (reconnaissance). Amankan infrastruktur Linux Anda sekarang dengan menerapkan Wazuh SIEM sebagai benteng pertahanan utama.

๐Ÿ“– Artikel Terkait