Integrasi Wazuh dengan Telegram

Dellave Daffa
3 min readSep 25, 2023

--

Prakata

Dalam dunia keamanan informasi, memantau kejadian yang terjadi pada sistem dan jaringan sangat penting untuk menjaga integritas dan keamanan. Salah satu cara untuk melakukan pemantauan ini adalah dengan menggunakan Wazuh, sebuah platform keamanan yang dapat mengidentifikasi potensi ancaman dan memberikan peringatan saat terdeteksi aktivitas yang mencurigakan. Wazuh mendukung integrasi dengan berbagai layanan pihak ketiga, termasuk Telegram, sehingga Anda dapat menerima pemberitahuan instan tentang kejadian penting.

Panduan ini akan memandu Anda dalam langkah-langkah untuk mengintegrasikan Wazuh dengan Telegram, sehingga Anda dapat menerima notifikasi melalui pesan Telegram setiap kali Wazuh mendeteksi ancaman. Untuk memulai, Anda perlu membuat bot Telegram dan mengkonfigurasi Wazuh agar dapat mengirimkan pemberitahuan ke bot tersebut.

Langkah — langkah

  • Buat bot Telegram dengan menghubungi @BotFather dan dapatkan API keynya. API key ini akan digunakan untuk mengidentifikasi bot Anda dalam mengirimkan pesan.
API Bot Telegram
  • Dapatkan ID Telegram dari bot @IDBot untuk penerima notifikasi, seperti ke chat pribadi Anda atau ke grup Telegram yang Anda inginkan.
ID User Telegram
  • Buat file custom-telegram di direktori /var/ossec/integrations/ dengan menggunakan editor teks seperti nano atau vim.
#!/bin/sh

WPYTHON_BIN="framework/python/bin/python3"

SCRIPT_PATH_NAME="$0"

DIR_NAME="$(cd $(dirname ${SCRIPT_PATH_NAME}); pwd -P)"
SCRIPT_NAME="$(basename ${SCRIPT_PATH_NAME})"

case ${DIR_NAME} in
*/active-response/bin | */wodles*)
if [ -z "${WAZUH_PATH}" ]; then
WAZUH_PATH="$(cd ${DIR_NAME}/../..; pwd)"
fi

PYTHON_SCRIPT="${DIR_NAME}/${SCRIPT_NAME}.py"
;;
*/bin)
if [ -z "${WAZUH_PATH}" ]; then
WAZUH_PATH="$(cd ${DIR_NAME}/..; pwd)"
fi

PYTHON_SCRIPT="${WAZUH_PATH}/framework/scripts/${SCRIPT_NAME}.py"
;;
*/integrations)
if [ -z "${WAZUH_PATH}" ]; then
WAZUH_PATH="$(cd ${DIR_NAME}/..; pwd)"
fi

PYTHON_SCRIPT="${DIR_NAME}/${SCRIPT_NAME}.py"
;;
esac


${WAZUH_PATH}/${WPYTHON_BIN} ${PYTHON_SCRIPT} "$@"
  • Buat file custom-telegram.py di direktori /var/ossec/integrations/ dan isi variabel CHAT_ID dengan ID Telegram penerima notifikasi Anda.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
import json

try:
import requests
except Exception:
print("No module 'requests' found. Install: pip3 install requests")
sys.exit(1)
#Taruh Chat ID Penerima
CHAT_ID = "xxxxxxxx"


def create_message(alert_json):
# Get alert information
title = alert_json['rule']['description'] if 'description' in alert_json['rule'] else ''
description = alert_json['full_log'] if 'full_log' in alert_json else ''
description.replace("\\n", "\n")
alert_level = alert_json['rule']['level'] if 'level' in alert_json['rule'] else ''
groups = ', '.join(alert_json['rule']['groups']) if 'groups' in alert_json['rule'] else ''
rule_id = alert_json['rule']['id'] if 'rule' in alert_json else ''
agent_name = alert_json['agent']['name'] if 'name' in alert_json['agent'] else ''
agent_id = alert_json['agent']['id'] if 'id' in alert_json['agent'] else ''

# Format message with markdown
msg_content = f'*{title}*\n\n'
msg_content += f'_{description}_\n'
msg_content += f'*Groups:* {groups}\n' if len(groups) > 0 else ''
msg_content += f'*Rule:* {rule_id} (Level {alert_level})\n'
msg_content += f'*Agent:* {agent_name} ({agent_id})\n' if len(agent_name) > 0 else ''

msg_data = {}
msg_data['chat_id'] = CHAT_ID
msg_data['text'] = msg_content
msg_data['parse_mode'] = 'markdown'

# Debug information
with open('/var/ossec/logs/integrations.log', 'a') as f:
f.write(f'MSG: {msg_data}\n')

return json.dumps(msg_data)


# Read configuration parameters
alert_file = open(sys.argv[1])
hook_url = sys.argv[3]

# Read the alert file
alert_json = json.loads(alert_file.read())
alert_file.close()

# Send the request
msg_data = create_message(alert_json)
headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
response = requests.post(hook_url, headers=headers, data=msg_data)

# Debug information
with open('/var/ossec/logs/integrations.log', 'a') as f:
f.write(f'RESPONSE: {response}\n')

sys.exit(0)
  • Ubah izin (permission) dari kedua file tersebut dengan perintah berikut:
chown root:ossec /var/ossec/integrations/custom-telegram*
chmod 750 /var/ossec/integrations/custom-telegram*
  • Edit file /var/ossec/etc/ossec.conf dan tambahkan konfigurasi berikut:
<integration>
<name>custom-telegram</name>
<level>3</level> <!-- Sesuaikan level sesuai kebutuhan -->
<hook_url>https://api.telegram.org/bot<API_KEY>/sendMessage</hook_url> <!-- Gantilah <API_KEY> dengan API key dari Bot Father -->
<alert_format>json</alert_format>
</integration>
  • Terakhir, restart layanan Wazuh Manager dengan perintah systemctl restart wazuh-manager untuk menerapkan perubahan konfigurasi.

Kesimpulan

Dengan mengikuti langkah-langkah di atas, Anda telah berhasil mengintegrasikan Wazuh dengan Telegram. Sekarang, setiap kali Wazuh mendeteksi ancaman atau kejadian penting, Anda akan menerima notifikasi instan melalui pesan Telegram, memungkinkan Anda untuk segera mengambil tindakan yang diperlukan untuk menjaga keamanan sistem dan jaringan Anda. Selalu prioritaskan keamanan informasi Anda!

Referensi :

  • https://medium.com/@jesusjimsa_12801/integrating-telegram-with-wazuh-4d8db91025f
  • https://github.com/OpenSecureCo/Demos/blob/main/Telegram%20Integration
  • https://youtu.be/2X1wVizsvjw?si=yTA1TJM4B6G63s4r

--

--

Dellave Daffa
Dellave Daffa

Written by Dellave Daffa

I love sharing insights on cybersecurity and linux operational. I use Indonesian for cybersecurity so fellow Indonesians can join in. Let's explore together!

No responses yet