Telegram Notification
Buat file /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} "$@"
Lalu buat juga file /var/ossec/integrations/custom-telegram.py
#!/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)
CHAT_ID = "-1001628361859"
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 ''
agent_ip = alert_json['agent']['ip'] if 'ip' in alert_json['agent'] else ''
# Format message with markdown
msg_content = f'*DC*\n\n'
msg_content += f'*{title}*\n\n'
msg_content += f'_{description}_\n\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_ip} ({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)
Buka wazuh dashboard, klik Management -> Configuration -> Edit Configuration. Di bawah tag </syscheck>, tambahkan config berikut
<!--Notif telegram-->
<integration>
<name>custom-telegram</name>
<level>8</level>
<hook_url>https://api.telegram.org/bot21982349233:AAFHIXvQkajhfDiyFalskjlkfGiGGiMNM/sendMessage</hook_url>
<alert_format>json</alert_format>
</integration>