mSin resumen de edición Etiqueta: editor de código 2017 |
m Confección de pasos para la integración. |
||
Línea 2: | Línea 2: | ||
=== 1. Crear un bot de Telegram === | === 1. Crear un bot de Telegram === | ||
# En la app de Telegram, buscar '''@BotFather'''. | # En la app de Telegram, buscar '''@BotFather'''. | ||
# [[Archivo:Telegram-wazuh-1.png|centro|miniaturadeimagen]] | |||
# Iniciar un chat con BotFather y escribir el comando: <code>/newbot</code> | # Iniciar un chat con BotFather y escribir el comando: <code>/newbot</code> | ||
# | # [[Archivo:Telegram-wazuh-2.png|centro|miniaturadeimagen]] | ||
# Elegir | # Elegir el nombre del bot. | ||
[[Archivo:Telegram-wazuh-3.png|centro|miniaturadeimagen]] | |||
# Elegir el nombre de usuario para el bot. | |||
[[Archivo:Telegram-wazuh-4.png|centro|miniaturadeimagen]] | |||
# BotFather proporciona una clave API que se usará para la integración. | |||
Ejemplo de URL: <code>https://api.telegram.org/bot<nowiki/>:<API_KEY>/sendMessage</code> | |||
[[Archivo:Imagen.png|centro|miniaturadeimagen]] | |||
<pre> | === 2. Crear un script para enviar mensajes a Telegram === | ||
En el servidor donde está instalado Wazuh, crear el archivo:<pre> | |||
nano /var/ossec/integrations/custom-telegram | |||
</pre>Agregar el siguiente contenido:<pre> | |||
#!/bin/sh | #!/bin/sh | ||
Línea 44: | Línea 47: | ||
${WAZUH_PATH}/${WPYTHON_BIN} ${PYTHON_SCRIPT} "$@" | ${WAZUH_PATH}/${WPYTHON_BIN} ${PYTHON_SCRIPT} "$@" | ||
</pre> | </pre>Luego, crear o editar el archivo Python:<pre> | ||
<pre> | |||
nano /var/ossec/integrations/custom-telegram.py | nano /var/ossec/integrations/custom-telegram.py | ||
</pre> | </pre>Agregar el siguiente contenido: | ||
#!/usr/bin/env python | |||
Agregar el siguiente contenido: | |||
import sys | |||
import json | |||
#!/usr/bin/env python | import requests | ||
import sys | CHAT_ID = "CHAT_ID" | ||
import json | <u>'''# Reemplazar "CHAT_ID" por el ID del chat con el bot. | ||
import requests | # Obtenerlo accediendo a: | ||
# <nowiki>https://api.telegram.org/botTOKEN/getUpdates</nowiki>'''</u> | |||
CHAT_ID = "CHAT_ID" | |||
# Reemplazar "CHAT_ID" por el ID del chat con el bot. | # Leer parámetros de entrada | ||
# Obtenerlo accediendo a: | alert_file = open(sys.argv[1]) | ||
# https://api.telegram.org/botTOKEN/getUpdates | hook_url = sys.argv[3] | ||
# Leer parámetros de entrada | # Leer archivo de alerta | ||
alert_file = open(sys.argv[1]) | alert_json = json.loads(alert_file.read()) | ||
hook_url = sys.argv[3] | alert_file.close() | ||
# Leer archivo de alerta | # Extraer información | ||
alert_json = json.loads(alert_file.read()) | alert_level = alert_json['rule'].get('level', "N/A") | ||
alert_file.close() | description = alert_json['rule'].get('description', "N/A") | ||
agent = alert_json['agent'].get('name', "N/A") | |||
# Extraer información | |||
alert_level = alert_json['rule'].get('level', "N/A") | # Construir mensaje | ||
description = alert_json['rule'].get('description', "N/A") | msg_data = { | ||
agent = alert_json['agent'].get('name', "N/A") | 'chat_id': CHAT_ID, | ||
'text': f"Nivel de alerta: {alert_level}\nAgente: {agent}\nDescripción: {description}" | |||
# Construir mensaje | } | ||
msg_data = { | |||
headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'} | |||
} | # Enviar mensaje | ||
requests.post(hook_url, headers=headers, data=json.dumps(msg_data)) | |||
headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'} | |||
sys.exit(0) | |||
# Enviar mensaje | |||
requests.post(hook_url, headers=headers, data=json.dumps(msg_data)) | |||
sys.exit(0) | |||
=== 3. Dar permisos a los archivos === | |||
<pre> | <pre> | ||
chown root:ossec /var/ossec/integrations/custom-telegram* | chown root:ossec /var/ossec/integrations/custom-telegram* | ||
Línea 101: | Línea 94: | ||
=== 4. Configurar la integración en Wazuh === | === 4. Configurar la integración en Wazuh === | ||
Editar el archivo de configuración de Wazuh:<pre> | |||
Editar el archivo de configuración de Wazuh: | |||
<pre> | |||
nano /var/ossec/etc/ossec.conf | nano /var/ossec/etc/ossec.conf | ||
</pre> | </pre>Agregar dentro de la sección adecuada:<pre> | ||
Agregar la | |||
<pre> | |||
<integration> | <integration> | ||
<name>custom-telegram</name> | <name>custom-telegram</name> | ||
<level>3</level> | <level>3</level> | ||
<hook_url>https://api.telegram.org/bot:APIKEY/sendMessage</hook_url> | <hook_url>https://api.telegram.org/bot:"APIKEY"/sendMessage</hook_url> | ||
<alert_format>json</alert_format> | <alert_format>json</alert_format> | ||
</integration> | </integration> | ||
</pre> | </pre>(Reemplazar <code>"APIKEY"</code> por el token obtenido del bot). | ||
=== 5. Modificar en el Dashboard === | |||
Ingresar al Dashboard de Wazuh, ir a: | |||
'''Explore > Notifications''' | |||
[[Archivo:Telegram-wazuh-6.png|centro|miniaturadeimagen]] | |||
Agregar un nuevo canal y configurarlo con los siguientes datos: | |||
[[Archivo:Telegram-wazuh-7.png|centro|miniaturadeimagen|745x745px|[[Archivo:Telegram-wazuh-8.png|centro|miniaturadeimagen|705x705px]]]] | |||
=== 6. Reiniciar Wazuh Manager === | |||
<pre> | <pre> | ||
systemctl restart wazuh-manager | systemctl restart wazuh-manager | ||
</pre> | </pre> |
Revisión del 16:12 23 may 2025
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 el nombre del bot.

- Elegir el nombre de usuario para el bot.

- BotFather proporciona una clave API que se usará para la integración.
Ejemplo de URL: https://api.telegram.org/bot:<API_KEY>/sendMessage

2. Crear un script para enviar mensajes a Telegram
En el servidor donde está instalado Wazuh, crear el archivo:
nano /var/ossec/integrations/custom-telegram
Agregar el siguiente contenido:
- !/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} "$@"
Luego, crear o editar el archivo Python:
nano /var/ossec/integrations/custom-telegram.py
Agregar el siguiente contenido:
#!/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)
3. Dar permisos a los archivos
chown root:ossec /var/ossec/integrations/custom-telegram* chmod 750 /var/ossec/integrations/custom-telegram*
4. Configurar la integración en Wazuh
Editar el archivo de configuración de Wazuh:
nano /var/ossec/etc/ossec.conf
Agregar dentro de la sección adecuada:
<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>
(Reemplazar "APIKEY"
por el token obtenido del bot).
5. Modificar en el Dashboard
Ingresar al Dashboard de Wazuh, ir a:
Explore > Notifications

Agregar un nuevo canal y configurarlo con los siguientes datos:


6. Reiniciar Wazuh Manager
systemctl restart wazuh-manager