Integración de Wazuh con Telegram mediante un bot

Revisión del 15:19 23 may 2025 de Admin (discusión | contribs.) (Página creada con «== Integración de Wazuh con Telegram mediante un bot == === 1. Crear un bot de Telegram === # En la app de Telegram, buscar '''@BotFather'''. # Iniciar un chat con BotFather y escribir el comando: <code>/newbot</code> # Elegir un nombre para el bot. # Elegir un nombre de usuario para el bot (debe terminar en "bot"). # BotFather proporcionará una clave API. Esta clave se usará en la integración. Ejemplo de URL: <code>https://api.telegram.org/bot:<API_KEY&gt…»)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)

Integración de Wazuh con Telegram mediante un bot

1. Crear un bot de Telegram

  1. En la app de Telegram, buscar @BotFather.
  2. Iniciar un chat con BotFather y escribir el comando: /newbot
  3. Elegir un nombre para el bot.
  4. Elegir un nombre de usuario para el bot (debe terminar en "bot").
  5. BotFather proporcionará una clave API. Esta clave se usará en la integración.

Ejemplo de URL: https://api.telegram.org/bot:<API_KEY>/sendMessage

2. Crear el script de integración

En el servidor donde está instalado Wazuh, crear el siguiente archivo:

nano /var/ossec/integrations/custom-telegram

Agregar el siguiente contenido:

<syntaxhighlight lang="bash">

  1. !/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*)

   	[ -z "${WAZUH_PATH}" ] && WAZUH_PATH="$(cd ${DIR_NAME}/../..; pwd)"
   	PYTHON_SCRIPT="${DIR_NAME}/${SCRIPT_NAME}.py"
   	;;

*/bin)

   	[ -z "${WAZUH_PATH}" ] && WAZUH_PATH="$(cd ${DIR_NAME}/..; pwd)"
   	PYTHON_SCRIPT="${WAZUH_PATH}/framework/scripts/${SCRIPT_NAME}.py"
   	;;

*/integrations)

   	[ -z "${WAZUH_PATH}" ] && WAZUH_PATH="$(cd ${DIR_NAME}/..; pwd)"
   	PYTHON_SCRIPT="${DIR_NAME}/${SCRIPT_NAME}.py"
   	;;

esac

${WAZUH_PATH}/${WPYTHON_BIN} ${PYTHON_SCRIPT} "$@" </syntaxhighlight>

Ahora crear el script en Python:

nano /var/ossec/integrations/custom-telegram.py

Agregar el siguiente contenido:

<syntaxhighlight lang="python">

  1. !/usr/bin/env python

import sys import json import requests

CHAT_ID = "CHAT_ID"

  1. Reemplazar "CHAT_ID" por el ID del chat con el bot.
  2. Obtenerlo accediendo a:
  3. https://api.telegram.org/botTOKEN/getUpdates
  1. Leer parámetros de entrada

alert_file = open(sys.argv[1]) hook_url = sys.argv[3]

  1. Leer archivo de alerta

alert_json = json.loads(alert_file.read()) alert_file.close()

  1. Extraer información

alert_level = alert_json['rule'].get('level', "N/A") description = alert_json['rule'].get('description', "N/A") agent = alert_json['agent'].get('name', "N/A")

  1. Construir mensaje

msg_data = { 'chat_id': CHAT_ID, 'text': f"Nivel de alerta: {alert_level}\nAgente: {agent}\nDescripción: {description}" }

headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}

  1. Enviar mensaje

requests.post(hook_url, headers=headers, data=json.dumps(msg_data))

sys.exit(0) </syntaxhighlight>

3. Asignar permisos a los archivos

<syntaxhighlight lang="bash"> chown root:ossec /var/ossec/integrations/custom-telegram* chmod 750 /var/ossec/integrations/custom-telegram* </syntaxhighlight>

4. Configurar la integración en Wazuh

Editar el archivo de configuración de Wazuh:

nano /var/ossec/etc/ossec.conf

Agregar la siguiente sección (dentro de <ossec_config>):

<syntaxhighlight lang="xml"> <integration> <name>custom-telegram</name> <level>3</level> <hook_url>https://api.telegram.org/bot:APIKEY/sendMessage</hook_url> <alert_format>json</alert_format> </integration> </syntaxhighlight>

(Reemplazar APIKEY por el token de tu bot).

5. Configurar desde el Dashboard de Wazuh

  1. Ingresar al Dashboard de Wazuh.
  2. Ir a Explore > Notifications.
  3. Agregar un nuevo canal de notificación.
  4. Configurar el canal utilizando el token del bot creado previamente.

6. Reiniciar el servicio Wazuh Manager

<syntaxhighlight lang="bash"> systemctl restart wazuh-manager </syntaxhighlight>