Tutorial Setup Wazuh SIEM di VPS: Deteksi Intrusi Real-Time Server
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.
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.conf2. 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-node3. 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 generator4. Jalankan seluruh stack kontainer Wazuh secara daemon (background):
docker compose up -d5. Verifikasi status operasional seluruh kontainer:
docker compose psPastikan 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 update2. 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-agent3. 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-agent4. 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 -lJika 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 subsisteminotifypada 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-agentLangkah 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) dan5720(SSHD multiple authentication failures) memicu aksi.firewall-dropmemanggil skrip internal Wazuh yang menambahkan aturan penolakan IP keiptablesatauufwpada server target.timeout 1800memblokir 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.managerChecklist 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 -vdi 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/TCPpada VPS Manager jika tidak ada penambahan agent baru. Biarkan port1514/TCPtetap 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 reloadPeriksa 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.


