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:
/newbot
- 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:
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">
- !/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">
- !/usr/bin/env python
import sys import json import requests
CHAT_ID = "CHAT_ID"
- Reemplazar "CHAT_ID" por el ID del chat con el bot.
- Obtenerlo accediendo a:
- https://api.telegram.org/botTOKEN/getUpdates
- Leer parámetros de entrada
alert_file = open(sys.argv[1]) hook_url = sys.argv[3]
- Leer archivo de alerta
alert_json = json.loads(alert_file.read()) alert_file.close()
- 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")
- 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'}
- 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
- Ingresar al Dashboard de Wazuh.
- Ir a Explore > Notifications.
- Agregar un nuevo canal de notificación.
- Configurar el canal utilizando el token del bot creado previamente.
6. Reiniciar el servicio Wazuh Manager
<syntaxhighlight lang="bash"> systemctl restart wazuh-manager </syntaxhighlight>