Integrasi Wazuh Alert dengan Telegram Bot
Untuk mengoptimalkan fungsi alert pada Wazuh, kita bisa menghubungkan Wazuh Alert dengan Telegram Bot. Produk akhir dari tutorial ini adalah, Wazuh akan mengirimkan alert kepada Blue Team atau Tim CISRT melalui Telegram yang ada di Smartphone anggota tim. Tutorial ini dibagi menjadi 2 bagian yaitu membuat Telegram Bot dan Menghubungkan Telegram Bot dengan server Wazuh.
Membuat Telegram Bot dan Mendapatkan Chat ID
- Buka Telegram lalu search
BotFather
pilih akun yangVerified
atau dengan centang biru supaya tidak terkenaMan-in-the-Middle Attack
- Klik
start
untuk memulai percakapan denganBotFather
- Ketik command
/newbot
lalu masukkan nama bot, di sini saya menggunakan namaBayuskyWazuhBot
untuk bot saya, lalu simpan dan catat HTTP API, karena akan digunakan untuk integrasi nantinya.
- Search bot yang baru dibuat
BayuskyWazuhBot
lalu klikstart
untuk memulai percakapan. - Buat grup yang beranggotakan
BayuskyWazuhBot
dengan anggota tim CISRT (bila ada). Lalu mulai percapakan dalam grup untuk membangkitkan chat ID.
- Masukkan HTTP API ke link
https://api.telegram.org/bot<HTTP-API>/getUpdates
untuk mendapatkan chat ID. Chat ID berupa angka :-xxxx
(termasuk tanda minus) , dalam hal ini saya mendapatkan Chat ID :-826434xxx
dan HTTP API :551002xxxx:AAGT1kcg554SFINnRGlga11J-lHvLSxxxxx
Chat ID dan HTTP API harus dirahasiakan, jika bocor, kendali bot bisa diambil oleh orang lain.
Jika link
getUpdates
belum menghasilkanchat ID
, bisa dicoba beberapa langkah berikut : Mention bot dalam chat grup, DM (Direct Message) bot, Keluarkan bot dari grup, lalu masukkan lagi.
Integrasi dengan Wazuh Server
- Cek kesiapan sistem dengan command ini
# pip install requests
- Buat 2 file :
custom-telegram
dancustom-telegram.py
dalam directory/var/ossec/integrations
# nano /var/ossec/integrations/custom-telegram
#!/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} "$@"
# nano /var/ossec/integrations/custom-telegram.py
#!/usr/bin/env python
import sys
import json
import requests
from requests.auth import HTTPBasicAuth
#CHAT_ID="-xxxx" --- change with your chat id
CHAT_ID="-826434xxx"
# 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()
# Extract data fields
alert_level = alert_json['rule']['level'] if 'level' in alert_json['rule'] else "N/A"
description = alert_json['rule']['description'] if 'description' in alert_json['rule'] else "N/A"
agent = alert_json['agent']['name'] if 'name' in alert_json['agent'] else "N/A"
# Generate request
msg_data = {}
msg_data['chat_id'] = CHAT_ID
msg_data['text'] = {}
msg_data['text']['description'] = description
msg_data['text']['alert_level'] = str(alert_level)
msg_data['text']['agent'] = agent
headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
# Send the request
requests.post(hook_url, headers=headers, data=json.dumps(msg_data))
sys.exit(0)
- Tentukan permission yang benar untuk kedua file tersebut
#chown root:wazuh /var/ossec/integrations/custom-telegram*
#chmod 750 /var/ossec/integrations/custom-telegram*
- Masukkan baris kode
xml
ini dengan mencamtukan HTTP API ke dalam/var/ossec/etc/ossec.conf
<integration>
<name>custom-telegram</name>
<level>3</level>
<hook_url>https://api.telegram.org/bot<API_KEY>/sendMessage</hook_url>
<alert_format>json</alert_format>
</integration>
Kode di atas jika ingin mengirimkan alert level 3 ke atas melalui bot telegram. Namun jika hanya ingin mengirimkan yang critical saja, bisa mengubah nilai parameter pada frame
<level>
- Restart
wazuh-manager
# systemctl restart wazuh-manager
- Telegram Tim CISRT / Blue Team sudah bisa mendapatkan alert dari Wazuh