top of page
Foto do escritorvictor tirloni

[Fortigate] Automation Stitch para receber Alertas e Notificações do Firewall no Telegram

Topologia de Referência

Introdução


Precisa de uma maneira eficaz de receber determinados alertas do Fortigate? Possui uma aplicação e/ou determinadas comunicações críticas que é necessário saber imediatamente quando a mesma caiu, mesmo quando está "out-of-office"?


No Post de hoje iremos abordar uma maneira eficaz de receber notificações e alertas do Fortigate através do Telegram.


É possível encaminhar as notificações e alertas de diversos "serviços" em que o Fortigate é responsável. Basicamente tudo o que gera Log no Firewall, é possível encaminhar a notificação para o Telegram, como por exemplo Logs de VPN, roteamento dinâmico (OSPF, BGP, etc), Logs de UTM, etc.


Organização do Post


O post ficou organizado conforme tópicos abaixo:



Objetivo


Configurar Automation Stitches no Firewall Fortigate para receber os alertas e notificações assim que estas ocorrerem, pelo Telegram.


Configurações Telegram


Criando um Bot


  • Inicie a conversa com o BotFather com /start;

  • Para a configuração de um novo bot, digite /newbot;

  • Escolha um nome para o Bot;

  • Após, escolha um username para o Bot;


Segue exemplo criado:



Após a conclusão, o BotFather irá enviar o Token da HTTP API, salve essa informação, pois a mesma será utilizada no Fortigate.


Criando um Grupo no Telegram


Agora iremos criar o grupo em que será recebido as notificações do Firewall:



Neste grupo iremos incluir o Bot recém criado e também os usuários que irão receber as notificações.



Após, selecione o chat do grupo criado e salve a URL/chat_id do grupo, conforme abaixo (no caso do grupo que eu criei, o chat_id foi -4265443662), pois usaremos essa informação no Fortigate:


Configurações Firewall Fortigate


No Firewall Fortigate as notificações e eventos serão enviados ao Telegram através de HTTP API, que será acionada utilizando a funcionalidade dos Stitches de Automação do Fortigate.


Um Stitch de automação possuí duas partes:


  • Trigger: é a condição ou evento no FortiGate que ativa a ação, por exemplo, um log específico ou uma tentativa de login com falha;

  • Action: a ação é o que o FortiGate faz em resposta ao gatilho (trigger).


No caso do nosso laboratório, a Trigger será os eventos/logs que será configurado que, quando gerados, irá acionar a Action de enviar a Notificação para o Telegram.


Podemos utilizar a mesma Action (no qual é configurado a API HTTP para o Telegram) para diversas Triggers diferentes (eventos gerados), entretanto, no meu ponto de vista é interessante criarmos Actions diferentes para Triggers diferentes, pois assim podemos personalizar o texto que será enviado ao Telegram baseado no Log recebido do Firewall.


Após a configuração da Action e da Trigger, é criado um novo Stitch, onde incluimos a Trigger e a Action que a Trigger terá quando acionada.


As configurações do Stitch são realizadas em Security Fabric > Automation.


Configurando a Action


Segue o comando via CLI para configuração da Action:

config system automation-action
 edit "Send Telegram Notification - Admin Login"
        set action-type webhook
        set protocol https
        set uri "api.telegram.org/bot<tokenBotFather>/sendMessage"
        set http-body {\"chat_id\":\"-<chat_id>\",\"text\":\"%%msg%%\":}"
        set port 443
        config http-headers
            edit 1
                set key "Content-Type"
                set value "application/json"
            next
        end
    next
end

Neste comando, se atentar para 3 partes:


  • <tokenBotFather> - aqui você deve incluir o Token enviado pelo BotFather;

  • <chat_id> - aqui você deve incluir o chat id do grupo criado no Telegram, conforme passos da Configuração do Telegram acima;

  • %%msg%% - na parte onde está este texto é onde você personalizará a mensagem enviada ao Telegram. O "%%msg%%" significa que irá coletar o texto do Log do tipo "Message". Exemplo:

Podemos personalizar o texto de diversas maneiras, coletando diversos campos diferentes do LOG, basta incluirmos o Log field de acordo com o tipo desejado, conforme lista retirada do Fórum da Fortinet:



Configurando a Trigger


Em Security Fabric > Automation > Trigger, iremos configurar uma Trigger do Tipo FortiOS Event Log, onde possuí todos os tipos de Eventos e Entradas de LOG que podemos escolher para que seja enviada a notificação ao Telegram.


Configurando o Stitch


Com a Action e a Trigger criada, agora basta configurarmos o Stitch e atrelar ambos no novo Stitch.


Vamos demonstrar alguns exemplos práticos abaixo.


Exemplos Práticos

 

Alerta de Admin Login Fail/Successfull

 

Configurando a Action:


  • via CLI:

config system automation-action
 edit "Send Telegram Notification - Admin Login"
        set action-type webhook
        set protocol https
        set uri "api.telegram.org/bot7366502653:AAGBI7DuGNh1CQX2EQ2tdmXY8uK0rNsj4Yg/sendMessage"
        set http-body "{\"chat_id\":\"-4265443662\",\"text\":\"FGT SITE-01 - %%msg%%\":}"
        set port 443
        config http-headers
            edit 1
                set key "Content-Type"
                set value "application/json"
            next
        end
    next
end

  • via GUI:


Configurando a Trigger:


  • via CLI:

config system automation-trigger
edit "Admin Login Fail and Successfull"
        set event-type event-log
        set logid 32002 32001
    next
end
  • via GUI:


Configurando o Stitch:


  • via CLI:

config system automation-stitch
    edit "Admin Login Fail/Successfull"
        set trigger "Admin Login Fail and Successfull"
        config actions
            edit 1
                set action "Send Telegram Notification - Admin Login"
                set required enable
            next
        end
    next
end
  • via GUI:


Alertas recebidos no Telegram:

 

Alerta de Tunnel IPSec UP/Down

 

Configurando a Action:


Utilizando o mesmo código do exemplo anterior, entretanto neste caso personalizei o texto enviado de acordo com o Log que o tunnel IPSec gera, para obtermos mais detalhes na notificação recebida.


  • via CLI:

config system automation-action
    edit "Send Telegram Notification - IPSec"
        set action-type webhook
        set protocol https
        set uri "api.telegram.org/bot7366502653:AAGBI7DuGNh1CQX2EQ2tdmXY8uK0rNsj4Yg/sendMessage"
        set http-body "{\"chat_id\":\"-4265443662\",\"text\":\"Notificação FGT SITE-01 - VPN IPSec: %%vpntunnel%% | IP Remoto: %%remip%% | LOG: %%action%%  - %%msg%%\":}"
        set port 443
        config http-headers
            edit 1
                set key "Content-Type"
                set value "application/json"
            next
        end
    next
end
  • via GUI:


Configurando a Trigger:


  • via CLI:

config system automation-trigger
   edit "IPSec Tunnel UP/DOWN"
        set event-type event-log
        set logid 37138
    next
end
  •  via GUI:


Configurando o Stitch:


  • via CLI:

config system automation-stitch
    edit "Admin Login Fail/Successfull"
        set trigger "Admin Login Fail and Successfull"
        config actions
            edit 1
                set action "Send Telegram Notification - Admin Login"
                set required enable
            next
        end
    next
end
  •  via GUI:


Alertas recebidos no Telegram:



Vamos demonstrar alguns exemplos práticos abaixo.

 

Alerta de BGP UP/DOWN

 

Configurando a Action:


  • via CLI:

config system automation-action
    edit "Send Telegram Notification - BGP"
        set action-type webhook
        set protocol https
        set uri "api.telegram.org/bot7366502653:AAGBI7DuGNh1CQX2EQ2tdmXY8uK0rNsj4Yg/sendMessage"
        set http-body "{\"chat_id\":\"-4265443662\",\"text\":\"Notificação FGT SITE-01 - BGP - Tipo de LOG: %%logdesc%% | Ação Ocorrida: %%msg%%\":}"
        set port 443
        config http-headers
            edit 1
                set key "Content-Type"
                set value "application/json"
            next
        end
    next
end
  • via GUI:


Configurando a Trigger:


  • via CLI:

config system automation-trigger
    edit "BGP UP/DOWN"
        set event-type event-log
        set logid 20300
    next
end

  •  via GUI:


Configurando o Stitch:


  • via CLI:

config system automation-stitch
    edit "IPSec UP/DOWN"
        set trigger "IPSec Tunnel UP/DOWN"
        config actions
            edit 1
                set action "Send Telegram Notification - IPSec"
                set required enable
            next
        end
    next
end

  •  via GUI:


Alertas recebidos no Telegram:


Conclusão


Conforme vimos, o Automation Stitch pode ser utilizado para automatizar ações baseado em eventos/gatilhos, e uma destas ações vimos hoje que é receber os alertas e notificações imediatamente quando ocorrem pelo Telegram, entretanto, são infinitas as suas aplicações.


Receber alertas críticos imediatamente no Telegram pode ser útil quando há serviços críticos que precisamos saber imediatamente quando ocorre alguma anomalia, pois podemos estar fora do escritório e não termos visibilidade instantânea do evento que ocorreu.


Referências


59 visualizações0 comentário

Posts recentes

Ver tudo
SIGN UP AND STAY UPDATED!

Thanks for submitting!

  • Grey LinkedIn Icon

© 2024 Blog VRF NETSEC

bottom of page