Wazuh: Enviar alertas via Telegram

764 views
4 mins read
1

Introdução

Wazuh oferece integração como Slack, Jira ou e-mail, mas minha opnião, essa definitivamente não é a maneira mais confortável de ser notificado sobre um evento de segurança em sua casa. Com o Telegram você pode receber o alerta no seu smartphone ou desktop, em tempo real o que ajudará em suas tarefas.

Um outro meio bem interessante para receber os alertas é utilizando  o Discord e esse será meu próximo post sobre e em breve.


O Ambiente

Eu estou assumindo que você já esteja com o Wazuh instalado e funcionando. Em meu ambiente atual, estou com uma instalação em uma VM com Ubuntu, mas você pode seguir com qualquer distribuição Linux que preferir.

Se você estiver usando o Wazuh distribuído em clusters, irá precisar replicar toda esta configuração nas managers onde você queira que a integração funcione.


Criando seu bot no Telegram

Criar um bot é tão fácil quanto enviar uma mensagem por Telegram, basta entrar em contato com o BotFather .

1- Com o comando /start você terá acesso a todas as opções do bot.

2- Para criar um novo bot, insira o comando /newbot

3- Dê um nome para o bot (no final do nome deve ter Bot ou _bot)

4- Guarde sua API KEY

5- Envie algumas mensagens no bot.

6- Troque o <YOUR_API_KEY> por sua API KEY ao acessar o link https://api.telegram.org/bot<YOUR_API_KEY>/getUpdates

7- Verifique o ChatID (em destaque na imagem abaixo). Salve essa informação pois usaremos na configuração da integração.


Gerenciando integrações personalizadas no Wazuh

Existem dois locais que são importantes de entender para a configuração de integrações (Integrations).

1- Configuração local no servidor Wazuh (arquivo de configuração geral do Wazuh):

/var/ossec/etc/ossec.conf

2- Local de integração (local com todas as integrações que configurou no wazuh)

/var/ossec/integrations/ 

Script

Utilizaremos um script para realizar a integração entre o Wazuh e o Telegram, sendo necessário, dois requisitos para fazer o script funcionar.

Requisitos do Script

Instale o pacote requests pois nosso script Python fará chamadas para a API do Telegram.

No terminal do Linux do servidor Wazuh execute o comando

pip3 install requests

Integrations

Crie o arquivo customizado com as informações do Telegram em

/var/ossec/integrations/

Utilize algum editor de texto, por exemplo o nano:

nano /var/ossec/integrations/custom-telegram

Copie e cole o conteúdo do script

#!/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 = "xxxxxxxx"

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 ''

    # Format message with markdown
    msg_content = f'*{title}*\n\n'
    msg_content += f'_{description}_\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_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)

Se quiser ter mais informações sobre esse script, fique à vontade para dar uma olhada nesse artigo, onde o criador do script fez um trabalho incrível ao fornecer o script e explicá-lo em detalhes.

Torne o script executável e conceda a ele as permissões adequadas :

chmod 750 /var/ossec/integrations/custom-telegram
chown root:wazuh /var/ossec/integrations/custom-telegram

Finalizando

Finalizando, adicionamos à configuração global do Wazuh as informações do integrador do Telegram com qualquer editor de texto do Linux:

nano /var/ossec/etc/ossec.conf

Com o seguinte conteúdo.

<integration>
     <name>custom-telegram</name>
     <hook_url>https://api.telegram.org/bot<YOUR-BOT-API-TELEGRAM-KEY>/sendMessage</hook_url>
     <alert_format>json</alert_format>
</integration>

Reinicie o gerenciador Wazuh executando o comando no terminal do Linux.

systemctl restart wazuh-manager.

Ou pela Dashboard do Wazuh direto pelo navegador

Wazuh > Management > Status > Restart Manager

Depois de reiniciado, você verá suas primeiras notificações


Meu próximo post será a integração do Wazuh com o Discord.

Sou um profissional apaixonado pela área de Segurança da Informação. Sou certificado em ISO 27001, ISO 27005, LGPD e GDPR, o que me torna um Data Protection Officer (DPO) certificado. Também sou certificado CC e SSCP pelo (ISC)², bem como um AWS Practitioner. Além do meu trabalho, sou um orgulhoso pai de três filhos, um nerd, um cinéfilo, um leitor voraz e um eterno aprendiz.

1 Comment

Deixe um comentário

Your email address will not be published.

Previous Story

Coleção de ferramentas para segurança em APIs

Next Story

Wazuh: Enviar alertas via Discord

Latest from Ferramentas

Git Exposed

Introdução A questão da segurança na era digital tornou-se rapidamente um tema quente. Todos nós já

AWS Cloudtrail + Wazuh

Introdução Depois de um tempo ausente (aprendendo sobre uma poderosa ferramenta de BI e suas consultas