Panduan Penggunaan

Dokumentasi lengkap SOC Provisioning Portal & Wazuh Agent

Apa itu SOC Provisioning

SOC Provisioning Portal adalah aplikasi self-service yang memudahkan tenant (organisasi/individu) untuk mendaftarkan server mereka ke Wazuh SIEM tanpa perlu interaksi manual dengan administrator. Portal otomatis menangani provisioning user, deployment Wazuh Agent, dan pengaturan dashboard per-tenant.

Komponen Utama

  • Web Provisioning Portal (Flask) — UI tenant untuk register, deploy, dan kelola agent
  • Wazuh Manager — pusat ingestion log, rule engine, dan analisis
  • Wazuh Indexer (OpenSearch) — penyimpanan + query alert
  • Wazuh Dashboard — visualisasi data dan analisis interaktif
  • Telegram Bot — notifikasi alert real-time per tenant

Apa itu Wazuh Agent

Wazuh Agent adalah program kecil yang dipasang pada endpoint (server, workstation) untuk mengumpulkan data telemetri keamanan. Agent berjalan sebagai background service dan mengirim data ke Wazuh Manager via TCP port 1514 (encrypted).

Log Collection

Mengumpulkan log sistem, aplikasi, dan keamanan secara real-time.

File Integrity Monitoring

Memantau perubahan file kritikal (cron, web root, /etc).

Threat Detection

Brute force, malware, defacement, web attack, IoC matching.

Compliance

PCI DSS, NIST 800-53, GDPR, HIPAA mapping otomatis pada alert.

Agent sangat ringan: CPU rata-rata <1%, memori 30–50MB. Hanya membuka koneksi outbound ke Manager — tidak meng-expose port di server target.

Alur Penggunaan

1

Daftar Akun

Buat akun di portal. Sistem otomatis membuat tenant Wazuh khusus untuk Anda (username, password, dan grup agent).

2

Hubungkan Telegram (Opsional)

Di halaman Pengaturan, hubungkan akun Telegram untuk menerima notifikasi alert keamanan real-time.

3

Deploy Agent ke Server

Klik "Deploy Agent", isi form (hostname, IP, kredensial), pilih mode (Ansible / Script), konfirmasi.

4

Monitor via Wazuh Dashboard

Login ke Wazuh Dashboard menggunakan kredensial dari Pengaturan. Lihat dashboard "Tenant Overview" dengan data terisolasi.

Ansible vs Script Install

Portal menyediakan dua cara instalasi Wazuh Agent. Pilih sesuai kondisi jaringan server target Anda.

Ansible (Otomatis)

Direkomendasikan
  • Sepenuhnya otomatis dari portal
  • Dukung banyak server sekaligus
  • Log deployment real-time
  • Butuh SSH/WinRM accessible dari portal

Script Install (Manual)

Untuk jaringan terisolasi
  • Tidak butuh SSH dari portal
  • Cocok server di belakang firewall
  • Tidak perlu kasih password ke portal
  • Run script manual di server (root)

Cara pakai Script Install:

  1. Pilih mode "Script Install" di form Deploy Agent
  2. Sistem generate URL + token unik
  3. Login ke server target (SSH manual / KVM / dll)
  4. Jalankan: curl -sk [URL] | sudo bash
  5. Status di portal auto-update saat selesai

Setup SSH Key

Autentikasi SSH Key lebih aman dibanding password. Portal otomatis membuat keypair Ed25519 per user — private key tersimpan di portal, public key perlu dipasang di server target.

Langkah Setup

  1. 1.Buka halaman Deploy Agent. Salin public key di bagian atas.
  2. 2.Login ke server target, tambahkan public key:
    mkdir -p ~/.ssh && chmod 700 ~/.ssh echo "ssh-ed25519 AAAA..." >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
  3. 3.Saat deploy, pilih metode "SSH Key" — tidak perlu password.

Pastikan public key terpasang sebelum deploy. Jika tidak, error Permission denied (publickey).

Sumber Log yang Dipantau

Sistem ini mengumpulkan log dari sumber-sumber berikut secara otomatis pada setiap agent yang dideploy. Konfigurasi default sudah di-push ke setiap tenant group lewat agent.conf sentral.

Kategori Path / Sumber Format Deteksi
FIM/etc, /tmp, /home, /var/www/htmlsyscheckPersistence, defacement, malware drop
Web/var/log/apache2/*, /var/log/nginx/access.logapacheSQL injection, XSS, webshell, scanning
Auth/var/log/auth.logsyslogSSH brute force, sudo escalation, PAM
System/var/log/syslog, /var/log/kern.logsyslogService crash, kernel events
Firewall/var/log/ufw.logsyslogPacket drop dari IP malicious (OTX)
Threat Intel/var/log/wazuh-otx.logsyslogMatch hash file dengan IoC AlienVault

Daftar log mengikuti dokumentasi resmi Wazuh: Log Data Collection.

File Integrity Monitoring (FIM)

FIM (modul syscheck) memonitor perubahan pada file dan direktori penting. Sistem ini memakai mode realtime sehingga perubahan terdeteksi seketika via inotify (Linux).

Direktori yang Dipantau

  • /etc — perubahan konfigurasi sistem (cron, systemd, init.d)
  • /tmp — file mencurigakan dropped oleh attacker
  • /home — modifikasi user data
  • /var/www/html — web defacement detection (dengan report_changes)

Atribut yang Dipakai

  • realtime="yes" — monitor instan (vs scheduled scan)
  • check_md5="yes" — hash MD5 untuk OTX threat intel matching (rule 100103)
  • check_sha256="yes" — hash SHA256 untuk OTX (rule 100104)
  • report_changes="yes" — diff isi file (untuk web root)

Referensi: Wazuh File Integrity Monitoring

Web Server Logs

Apache dan Nginx menulis log akses dan error yang dipakai Wazuh untuk mendeteksi serangan web.

Path & Konfigurasi

<localfile> <log_format>apache</log_format> <location>/var/log/apache2/access.log</location> </localfile>

Apa yang Dideteksi

  • SQL Injection (rule 100040) — payload UNION SELECT, OR 1=1
  • XSS (rule 100041) — tag <script> di URL
  • Webshell execution (rule 100044) — perintah shell via web
  • Buffer overflow (rule 100043) — URL abnormally long
  • Scanning (rule 100045) — multiple HTTP 400 dari same IP

Nginx ditangani dengan parser apache karena format log compatible.

Authentication Logs

/var/log/auth.log mencatat aktivitas autentikasi: SSH login, sudo, PAM session.

Apa yang Dideteksi

  • SSH brute force (rules 100020–100027) — multiple gagal login dari IP sama
  • Successful brute force (rule 100027) — gagal banyak kali lalu sukses
  • Sudo escalation — eskalasi privilege monitoring
  • Authentication failure pattern — Wazuh built-in rule 5710, 5712, 5760

Contoh Trigger

# Dari attacker IP: gagal login 10x dalam 30 detik for i in {1..10}; do ssh nonexist@server; done # -> trigger rule 100020 dan kirim notifikasi Telegram

System Logs

Log sistem menyediakan konteks operasional umum.

  • /var/log/syslog — service events, daemon messages, cron jobs
  • /var/log/kern.log — kernel events, hardware errors, OOM kill

Log ini mendukung deteksi anomali sistem dan dipakai sebagai konteks korelasi alert.

Firewall (UFW)

/var/log/ufw.log mencatat paket yang di-drop oleh UFW (Uncomplicated Firewall).

Integrasi dengan OTX Threat Intel

Setiap entry dengan source/destination IP dicocokkan dengan list otx_malicious_ip dari AlienVault OTX.

  • Rule 100100 — koneksi DARI IP malicious (level 14)
  • Rule 100101 — koneksi KE IP malicious (level 14)

Cara Aktifkan UFW Logging

sudo ufw logging on sudo ufw logging medium # atau high untuk verbose

Threat Intel — AlienVault OTX

Sistem terintegrasi dengan OTX (Open Threat Exchange) AlienVault. List IoC (Indicators of Compromise) diperbarui berkala dan disimpan di:

  • /var/ossec/etc/lists/otx_malicious_ip
  • /var/ossec/etc/lists/otx_malicious_domains_all
  • /var/ossec/etc/lists/otx_malicious_hash_md5
  • /var/ossec/etc/lists/otx_malicious_hash_sha256

Realtime Hash Lookup

Saat FIM mendeteksi file baru, hash MD5/SHA256 dicocokkan langsung. Jika match, custom decoder menulis ke /var/log/wazuh-otx.log dan trigger rule 100060 (level 14).

Struktur Konfigurasi Wazuh Agent

Wazuh Agent membaca konfigurasi dari dua sumber yang di-merge saat startup:

1. Lokal — ossec.conf

Path: /var/ossec/etc/ossec.conf

Berisi koneksi ke Manager (IP, port). Di-edit sekali saat install, jarang berubah.

2. Sentral — agent.conf

Path di Manager: /var/ossec/etc/shared/<group>/agent.conf

Manager push ke semua agent di group. Berisi syscheck, localfile, labels. Di-update via portal.

Saat Manager update agent.conf, agent akan pull config baru di periodic check (default ~60 detik) atau langsung saat systemctl restart wazuh-agent.

ossec.conf (Konfigurasi Lokal)

File ini di-generate saat instalasi. Bagian terpenting adalah blok <client> yang menentukan koneksi ke Manager.

<ossec_config> <client> <server> <address>37.60.246.175</address> <port>1514</port> <protocol>tcp</protocol> </server> <config-profile>ubuntu, ubuntu22</config-profile> <notify_time>10</notify_time> <time-reconnect>60</time-reconnect> </client> </ossec_config>

Parameter Penting

  • <address> — IP/hostname Wazuh Manager
  • <port> — port komunikasi (default 1514)
  • <protocol> — TCP (recommended) atau UDP
  • <notify_time> — interval keepalive (detik)
  • <time-reconnect> — delay reconnect saat lost connection

agent.conf (Centralized Configuration)

File agent.conf tersimpan di Manager dan otomatis di-push ke semua agent dalam satu group. Memungkinkan satu kali update untuk banyak agent.

Lokasi di Manager

/var/ossec/etc/shared/<group_name>/agent.conf

Cara Push Update

Sistem ini push agent.conf via Wazuh API endpoint:

PUT /groups/<group_name>/configuration Content-Type: application/xml Authorization: Bearer <token> <agent_config>...</agent_config>

Verifikasi Konfigurasi

Sebelum Manager menerima file, ada validator XML:

sudo /var/ossec/bin/verify-agent-conf -f /path/to/agent.conf

Referensi: Centralized Configuration

Konfigurasi FIM (syscheck)

Modul <syscheck> mendefinisikan direktori yang dipantau untuk perubahan integritas.

Default Konfigurasi Sistem

<syscheck> <directories realtime="yes" check_sha256="yes" check_md5="yes" report_changes="yes">/var/www/html</directories> <directories realtime="yes" check_sha256="yes" check_md5="yes">/etc</directories> <directories realtime="yes" check_sha256="yes" check_md5="yes">/tmp</directories> <directories realtime="yes" check_sha256="yes" check_md5="yes">/home</directories> </syscheck>

Atribut yang Dapat Disesuaikan

  • realtime="yes" — pakai inotify (Linux) untuk deteksi instan
  • check_all="yes" — semua atribut (size, owner, group, mtime, hash)
  • check_sha256/md5 — aktif untuk threat intel hash matching
  • report_changes — simpan diff isi file (untuk file teks)
  • recursion_level="N" — kedalaman subdirectory (default 256)

Exclude Pattern

<ignore>/etc/mtab</ignore> <ignore type="sregex">.log$|.swp$</ignore>

Referensi: Wazuh Syscheck Configuration

Log Collection (localfile)

Blok <localfile> mendefinisikan file log yang akan dibaca dan dikirim ke Manager.

Format Dasar

<localfile> <log_format>syslog</log_format> <location>/var/log/auth.log</location> </localfile>

Tipe Log Format

  • syslog — format standar Unix syslog (auth, syslog, kern, ufw)
  • apache — Apache & Nginx access/error log
  • iis — Windows IIS
  • json — JSON line per event
  • multi-line — log multi-baris (stack trace dll)
  • command — output dari shell command (polling)
  • full_command — output full untuk diff
  • eventchannel — Windows Event Channel

Wildcard Path

<location>/var/log/*.log</location>

Referensi: Wazuh Log Data Collection

Labels (Multi-Tenant Isolation)

Sistem ini menggunakan <labels> untuk menandai setiap alert dengan tenant pemilik. Field tersimpan di alert sebagai agent.labels.tenant.

Konfigurasi di agent.conf

<agent_config> <labels> <label key="tenant">tenant_yourname_id</label> </labels> </agent_config>

Manfaat

  • Setiap alert otomatis tagged — tidak perlu set di kode aplikasi
  • OpenSearch DLS (Document Level Security) filter berdasarkan field ini
  • Tenant hanya lihat data mereka sendiri di Wazuh Dashboard

Referensi: Wazuh Labels Configuration

Restart & Verifikasi Agent

Cek Status Agent

sudo systemctl status wazuh-agent # atau sudo /var/ossec/bin/wazuh-control status

Restart Agent

sudo systemctl restart wazuh-agent # atau sudo /var/ossec/bin/wazuh-control restart

Cek Log Runtime

sudo tail -f /var/ossec/logs/ossec.log

Verifikasi Koneksi ke Manager

Cari di log baris "Connected to the server". Jika ada "Lost connection", cek firewall / connectivity port 1514.

Lihat Konfigurasi Aktif

sudo /var/ossec/bin/wazuh-control info # Cek konfigurasi yang sedang berlaku (merge ossec.conf + agent.conf) sudo cat /var/ossec/etc/shared/merged.mg

Wazuh Dashboard

Wazuh Dashboard adalah antarmuka web (berbasis OpenSearch Dashboards) untuk mem-visualisasi alert dan menjelajahi data telemetri.

Cara Akses

  1. Klik tombol SIEM di navbar (atau buka URL di Pengaturan)
  2. Login dengan username + password dari halaman Pengaturan
  3. Buka tab Dashboards di sidebar kiri
  4. Klik dashboard "Tenant Overview"

Visualisasi Default (Tenant Overview)

  • Total Alerts (24 jam terakhir)
  • Critical Alerts (level ≥ 13)
  • Alert Trend 7 hari (line chart)
  • Alerts by Category (donut chart)
  • Top 10 Rules (data table)

Data Anda terisolasi via DLS — tenant lain tidak dapat melihat alert milik Anda, dan sebaliknya. Filter ini diberlakukan di backend, tidak dapat di-bypass dari UI.

Troubleshooting

Server tidak dapat dijangkau / Unreachable
Permission denied / Autentikasi gagal
Wazuh Agent gagal start / tidak terhubung
Tenant Wazuh belum tersedia

FAQ

Apakah Wazuh Agent aman untuk server produksi?

Sangat aman. Agent hanya membaca log, tidak mengubah/menghapus apapun. Hak akses terbatas, tidak meng-expose port apapun.

Apakah password server saya disimpan dengan aman?

Password dienkripsi AES-128 (Fernet) sebelum disimpan di database. Password otomatis dihapus setelah deployment berhasil.

Bisa deploy ke berapa server sekaligus?

Tidak ada batasan. Gunakan tombol "Tambah Server" — semua di-deploy paralel dalam satu batch.

OS apa yang didukung?

Ansible: Linux (Ubuntu/Debian) & Windows (WinRM). Script Install: Linux saja. CentOS/RHEL menyusul.

Apa yang terjadi jika deployment gagal?

Lihat log error di Detail Agent. Tombol "Retry dengan Edit Data" untuk perbaiki & coba ulang tanpa buat agent baru.

Bagaimana cara hapus Wazuh Agent?

Linux: apt-get remove wazuh-agent. Lalu hapus record di portal lewat tombol "Hapus Agent".