Tested & Verified · FIM → Telegram

Wazuh SIEM → Telegram Real-Time Security Alert Integration

Wazuh adalah platform SIEM open-source yang mengumpulkan dan menganalisis log dari endpoint untuk mendeteksi ancaman keamanan. Project ini menghubungkan Wazuh Manager dengan Telegram Bot API, sehingga setiap kali Wazuh mendeteksi perubahan mencurigakan pada sebuah endpoint, notifikasi terkirim langsung ke chat Telegram tanpa perlu membuka dashboard.

Windows 10
Kali Linux
Telegram Bot API
Python Integration

NAVIGASI SUB-BAB

1. Overview

Wazuh adalah platform SIEM open-source yang mengumpulkan dan menganalisis log dari endpoint untuk mendeteksi ancaman keamanan. Project ini menghubungkan Wazuh Manager dengan Telegram Bot API, sehingga setiap kali Wazuh mendeteksi perubahan mencurigakan pada sebuah endpoint, notifikasi terkirim langsung ke chat Telegram tanpa perlu membuka dashboard.

Masalah yang diselesaikan

Wazuh dashboard tidak selalu dipantau secara real-time. Alert kritikal bisa terlewat jika analis tidak sedang membuka console. Integrasi Telegram memindahkan notifikasi ke channel yang selalu aktif di perangkat analis.

Hasil akhir

File Integrity Monitoring (FIM) pada endpoint Windows berhasil memicu Rule ID 550, dan alert tersebut diteruskan secara otomatis ke Telegram dalam hitungan detik melalui custom integration berbasis Python.

Cakupan saat ini

Yang sudah teruji: alert FIM (perubahan file) level 5 ke atas. Deteksi lain seperti failed login, malware, dan PowerShell abuse belum diimplementasikan — lihat bagian Future Development.

2. Architecture

Lima komponen inti membentuk lab ini: bot Telegram sebagai penerima notifikasi, Wazuh Manager sebagai otak analisis, Wazuh Agent sebagai pengumpul data, endpoint Windows sebagai sumber event, dan Telegram sebagai output akhir.

Telegram Bot

  • Token Bot
  • Chat ID
  • Kirim / terima pesan via Bot API

Wazuh Manager

  • Menerima data dari agent
  • Menganalisis log & event
  • Rule matching
  • Generate alert

Wazuh Agent

  • Kirim data (logs & events) ke Manager
  • FIM, malware detection, system events

Windows 10

  • File / folder berubah (FIM)
  • EICAR test (malware) — belum diuji
  • System / security events

Alert Telegram

  • Alert dikirim real-time ke Telegram Bot (user)

3. Requirements

Komponen yang dibutuhkan sebelum memulai integrasi.

🐧 Kali Linux
🛡️ Wazuh Manager
🪟 Windows Endpoint
📡 Wazuh Agent
💬 Telegram Account
🤖 Telegram Bot
🐍 Python 3
📦 python3-requests
🌐 Internet Connection

4. Environment

Peran setiap komponen dalam environment pengujian.

ComponentRole
Kali LinuxWazuh Manager
WindowsWazuh Agent / Endpoint
TelegramAlert Notification
PythonCustom Integration
Telegram Bot APIMessage Delivery

5. Telegram Bot Setup — Membuat Bot & Token

Langkah membuat bot dan mendapatkan token serta chat ID yang dibutuhkan integrasi.

  1. Buka BotFather di Telegram dan mulai percakapan.
  2. Kirim perintah /newbot untuk membuat bot baru, lalu tentukan nama dan username bot.
  3. BotFather akan memberikan bot token — simpan sebagai TOKEN_BOT_KAMU, jangan pernah membagikannya.
  4. Buka bot yang baru dibuat dari hasil pencarian Telegram.
  5. Tekan tombol Start agar bot bisa mengirim pesan ke chat kamu.
  6. Dapatkan CHAT_ID_KAMU dengan memanggil endpoint getUpdates (lihat bagian Telegram API Testing).
Jangan menampilkan token asli. Seluruh contoh di dokumentasi ini menggunakan placeholder TOKEN_BOT_KAMU dan CHAT_ID_KAMU.

6. Telegram API Testing — Validasi Token & Chat ID

Dua endpoint utama digunakan untuk memvalidasi bot sebelum dihubungkan ke Wazuh.

getUpdates — mengambil chat_id dari pesan terakhir ke bot

curl -s "https://api.telegram.org/botTOKEN_BOT_KAMU/getUpdates"

Command ini mengembalikan JSON berisi riwayat pesan ke bot, termasuk chat.id pengirim — inilah nilai yang dipakai sebagai CHAT_ID_KAMU.

Contoh response getUpdates (setelah menekan Start di bot)

{"ok":true,"result":[{"update_id":XXXXXXXXX,
"message":{"message_id":1,"from":{"id":CHAT_ID_KAMU,"is_bot":false,
"first_name":"...","username":"...","language_code":"id"},
"chat":{"id":CHAT_ID_KAMU,"type":"private"},
"date":XXXXXXXXXX,"text":"/start",
"entities":[{"offset":0,"length":6,"type":"bot_command"}]}}]}

Field chat.id pada response inilah yang diambil sebagai CHAT_ID_KAMU. Nilai token dan chat ID pada dokumentasi ini sengaja diganti placeholder — jangan pernah mem-publish token/chat ID asli.

sendMessage — mengirim pesan uji ke chat Telegram

curl -s -X POST "https://api.telegram.org/botTOKEN_BOT_KAMU/sendMessage" \
  -d chat_id="CHAT_ID_KAMU" \
  -d text="Test alert dari Wazuh Integration"

Digunakan untuk memastikan token dan chat ID valid sebelum diintegrasikan ke script Python.

Contoh response sendMessage (status 200 / ok: true)

{"ok":true,"result":{"message_id":2,
"from":{"id":BOT_ID_KAMU,"is_bot":true,"first_name":"nama_bot_kamu"},
"chat":{"id":CHAT_ID_KAMU,"type":"private"},
"date":XXXXXXXXXX,"text":"TEST WAZUH TELEGRAM"}}

"ok":true menandakan pesan berhasil terkirim — token bot dan chat ID sudah valid dan siap dipakai di script integrasi.

7. Wazuh Custom Integration — Script Python

File integrasi berada di /var/ossec/integrations/custom-telegram dan berjalan sebagai script Python yang dipanggil otomatis oleh Wazuh Manager setiap kali ada alert yang cocok dengan konfigurasi.

Membuat file integrasi

Buat / edit file integrasi dengan editor nano

sudo nano /var/ossec/integrations/custom-telegram

Isi script custom-telegram

custom-telegram (Python)

#!/usr/bin/env python3
import sys
import json
import requests

TOKEN = "TOKEN_BOT_KAMU"
CHAT_ID = "CHAT_ID_KAMU"

alert_file = sys.argv[1]

with open(alert_file, "r") as f:
    alert = json.load(f)

rule = alert.get("rule", {})
agent = alert.get("agent", {})
syscheck = alert.get("syscheck", {})

message = f"""🚨 WAZUH ALERT
🔴 Level    : {rule.get("level", "-")}
📋 Rule ID  : {rule.get("id", "-")}
💻 Agent    : {agent.get("name", "-")}
🆔 Agent ID : {agent.get("id", "-")}
⚠️ Event    : {rule.get("description", "-")}
📁 Path     : {syscheck.get("path", "-")}
🔧 Action   : {syscheck.get("event", "-")}
"""

url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"

requests.post(
    url,
    data={
        "chat_id": CHAT_ID,
        "text": message
    },
    timeout=10
)

Wazuh Manager memanggil script ini dengan path file alert JSON sebagai argumen (sys.argv[1]) setiap kali sebuah alert cocok dengan konfigurasi <integration> di ossec.conf.

Fungsi script

  • Membaca alert dalam format JSON yang dikirim Wazuh melalui argumen script
  • Mengambil data rule (id, level, description)
  • Mengambil data agent (name, id)
  • Mengambil data syscheck (path file, jenis perubahan)
  • Membentuk pesan terformat dari data-data tersebut
  • Mengirim pesan ke Telegram melalui endpoint sendMessage

Permission & ownership

Permission script integrasi

sudo chmod 750 /var/ossec/integrations/custom-telegram

Ownership script integrasi

sudo chown root:wazuh /var/ossec/integrations/custom-telegram

Dependency

Install library Python yang dibutuhkan

sudo apt install python3-requests -y
Script tidak menyimpan token secara hardcoded pada dokumentasi ini — token dan chat ID sebenarnya dikonfigurasi langsung pada environment Wazuh Manager, bukan ditampilkan di publik.

8. Wazuh Configuration — Daftarkan Integration

Integrasi didaftarkan pada /var/ossec/etc/ossec.conf agar Wazuh Manager memanggil script custom-telegram setiap kali alert baru terbentuk.

Edit ossec.conf dengan nano

sudo nano /var/ossec/etc/ossec.conf

Tambahkan blok <integration> berikut tepat sebelum tag penutup </ossec_config>.

/var/ossec/etc/ossec.conf

<integration>
    <name>custom-telegram</name>
    <level>5</level>
    <group>syscheck</group>
    <alert_format>json</alert_format>
</integration>
ParameterKeterangan
level 5Integrasi hanya dipicu untuk alert dengan level 5 ke atas, menyaring event minor agar tidak membanjiri Telegram.
group syscheckMembatasi integrasi pada alert dari grup syscheck, yaitu modul File Integrity Monitoring.
alert_format jsonAlert dikirim ke script dalam format JSON agar mudah di-parse oleh Python.

Restart Wazuh Manager setelah perubahan konfigurasi

sudo systemctl restart wazuh-manager

9. FIM Testing — Skenario Pengujian

Skenario pengujian yang digunakan untuk memvalidasi seluruh pipeline, dari perubahan file di endpoint hingga notifikasi diterima di Telegram.

  1. Windows membuat file uji di C:\Users\Public\wazuh-test.txt
  2. Wazuh Agent memonitor lokasi file tersebut melalui modul syscheck
  3. File dimodifikasi (isi file diubah)
  4. Agent mengirim event perubahan ke Wazuh Manager
  5. Wazuh Manager menganalisis event terhadap rule yang tersedia
  6. Rule ID 550 (integrity checksum changed) terpicu pada level 7
  7. Custom integration mengambil alert JSON dan membentuk pesan
  8. Telegram menerima notifikasi alert secara real-time
Diuji dan berhasil pada environment lab

10. Alert Flow — Dari Endpoint ke Telegram

Detail tujuh langkah dari satu kejadian di endpoint Windows hingga alert diterima di Telegram — ini adalah alur yang sudah diuji menggunakan skenario FIM.

1
Trigger di Windows

Terjadi perubahan file / folder atau EICAR test dijalankan di Windows. Contoh: C:\Data\test.txt diubah.

2
Wazuh Agent Mendeteksi

Wazuh Agent mendeteksi perubahan / event dan mengirimkannya ke Wazuh Manager.

3
Wazuh Manager Menganalisis

Wazuh Manager menerima data, menganalisis log & event, mencocokkan dengan rule (misal: Rule ID 550).

4
Alert Terbentuk

Rule cocok → alert dibuat dengan level (misal ≥ 5), format JSON.

5
Custom Integration (custom-telegram)

Script Python membaca alert JSON dan mengirimkannya ke Telegram Bot API.

6
Telegram Bot API

Telegram Bot API menerima request dari script dan mengirim pesan ke chat ID tujuan.

7
Alert Diterima di Telegram

User menerima alert secara real-time di Telegram.

🚨 WAZUH ALERT
Level  : 7
Rule ID : 550
Agent   : LAPTOP-AQJ28AHJ
Path    : c:\data\test.txt
Action : modified

11. Ringkasan — Inti Lab

Inti dari lab ini dalam lima poin. Item bertanda konsep menggambarkan kemampuan yang sudah didesain dalam topologi tetapi belum sepenuhnya diuji — lihat Future Development.

🔍

Monitoring

FIM memantau integritas file & direktori penting secara real-time.

🐞

Deteksi (konsep)

Malware dapat dideteksi menggunakan EICAR test file — belum diuji pada lab ini.

🔔

Alert Real-Time

Alert dikirim otomatis ke Telegram tanpa delay yang berarti.

📈

Visibilitas

Semua event dan alert dapat dipantau langsung di Wazuh Dashboard.

🛡️

Keamanan

Meningkatkan visibilitas, deteksi, dan respons terhadap ancaman pada endpoint.

Catatan: alert hanya akan dikirim ke Telegram jika level alert ≥ 5 dan sesuai dengan group yang ditentukan (misal: syscheck untuk FIM).

12. Example Alert — Notifikasi Asli di Telegram

Contoh notifikasi asli yang diterima di Telegram setelah pengujian FIM pada wazuh-test.txt.

🚨 WAZUH ALERT
🔴Level7
📋Rule ID550
💻AgentLAPTOP-AQJ28AHJ
🆔Agent ID001
⚠️EventIntegrity checksum changed.
📁Pathc:\users\public\wazuh-test.txt
🔧Actionmodified
Buka Screenshot Notifikasi Telegram Asli
Back to Projects