Pular para conteúdo

Datadog via Fluentd/Logstash

Você pode configurar o Wallarm para enviar notificações de eventos detectados para o Datadog através do coletor de dados intermediário Fluentd ou Logstash.

O esquema de registro mais comum em sistemas complexos consiste nos seguintes componentes:

  • Coletor de dados: aceita logs de várias fontes e encaminha os logs para o sistema SIEM

  • Sistema SIEM ou sistemas de gerenciamento de logs: usados para analisar logs e monitorar o status do sistema

Enviando notificações do Wallarm para o Datadog via coletor de dados

Integração nativa com o Datadog

O Wallarm também suporta a integração nativa com o Datadog via API do Datadog. A integração nativa não requer que o coletor de dados intermediário seja utilizado.

Recursos utilizados

Endereços IP da Wallarm Cloud

Para fornecer acesso ao Wallarm Cloud para seu sistema, você pode precisar de uma lista de seus endereços IP públicos:

35.235.66.155
34.102.90.100
34.94.156.115
35.235.115.105
34.94.85.217
34.94.51.234
34.102.59.122
34.94.238.72
34.141.230.156
34.91.138.113
34.90.114.134
35.204.127.78

Requisitos

Como o Wallarm envia logs para o coletor de dados intermediário via webhooks, a configuração do Fluentd ou Logstash deve atender aos seguintes requisitos:

  • Aceitar as solicitações POST ou PUT

  • Aceitar solicitações HTTPS

  • Ter URL pública

  • Encaminhar logs para o Datadog via o plugin datadog_logs do Logstash ou o plugin fluent-plugin-datadog do Fluentd

  1. Instale o plugin datadog_logs para encaminhar logs para o Datadog.
  2. Configure o Logstash para ler solicitações de entrada e encaminhar logs para o Datadog.

Exemplo de arquivo de configuração logstash-sample.conf:

input {
  http { # plugin de entrada para tráfego HTTP e HTTPS
    port => 5044 # porta para solicitações de entrada
    ssl => true # processamento de tráfego HTTPS
    ssl_certificate => "/etc/server.crt" # certificado TLS do Logstash
    ssl_key => "/etc/server.key" # chave privada para certificado TLS
  }
}
filter {
  mutate {
    add_field => {
        "ddsource" => "wallarm" # filtro de mutação adicionando o campo fonte ao registro de log do Datadog para filtragem futura de logs do Wallarm
    }
  }
}
output {
  stdout {} # plugin de saída para imprimir logs do Logstash na linha de comando
  datadog_logs { # plugin de saída para encaminhar os logs do Logstash para o Datadog
      api_key => "XXXX" # chave API gerada para a organização no Datadog
      host => "http-intake.logs.datadoghq.eu" # endpoint do Datadog (depende da região de inscrição)
  }
}
  1. Instale o plugin fluent-plugin-datadog para encaminhar logs para o Datadog.
  2. Configure o Fluentd para ler solicitações de entrada e encaminhar logs para o Datadog.

Exemplo de arquivo de configuração td-agent.conf:

<source>
  @type http # plugin de entrada para tráfego HTTP e HTTPS
  port 9880 # porta para solicitações de entrada
  <transport tls> # configuração para tratamento de conexões
    cert_path /etc/ssl/certs/fluentd.crt
    private_key_path /etc/ssl/private/fluentd.key
  </transport>
</source>
<match datadog.**>
  @type datadog # plugin de saída para encaminhar logs do Fluentd para o Datadog
  @id awesome_agent
  api_key XXXX # chave API gerada para a organização no Datadog
  host 'http-intake.logs.datadoghq.eu' # endpoint do Datadog (depende da região de inscrição)

  # Opcional
  include_tag_key true
  tag_key 'tag'

  # Tags opcionais
  dd_source 'wallarm' # adicionando o campo fonte ao registro de log do Datadog para filtragem futura de logs do Wallarm
  dd_tags 'integration:fluentd'

  <buffer>
          @type memory
          flush_thread_count 4
          flush_interval 3s
          chunk_limit_size 5m
          chunk_limit_records 500
  </buffer>
</match>

Configurando a integração com Fluentd ou Logstash

  1. Prossiga para a configuração de integração do Datadog no Console Wallarm → IntegraçõesFluentd/Logstash.

  2. Insira o nome da integração.

  3. Especifique a URL do Fluentd ou Logstash de destino (URL do Webhook).

  4. Se necessário, configure as configurações avançadas:

    • Método de solicitação: POST ou PUT. Por padrão, solicitações POST são enviadas.
    • Cabeçalho da solicitação e seu valor se o servidor requer um cabeçalho não padrão para executar a solicitação. O número de cabeçalhos não é limitado.
    • Certificado CA: certificado da CA que assinou um certificado do servidor. Se a CA é de confiança pública, este campo é opcional. Se um certificado do servidor é autoassinado, este campo é obrigatório e deve conter um certificado de sua própria CA que assinou um certificado do servidor.
    • Verificar certificado TLS: esta configuração permite desativar a verificação do certificado do servidor especificado. Por padrão, a Wallarm verifica se um certificado do servidor é assinado por uma CA de confiança pública. Não recomendamos a desativação da verificação de certificados de servidor de produção. Se o seu servidor usa um certificado TLS autoassinado, você pode adicionar um certificado CA autoassinado para permitir o envio de solicitações a este servidor.
    • Tempo limite da solicitação, em segundos: se o servidor não responder à solicitação dentro do tempo especificado, a solicitação falha. Por padrão: 15 segundos.
    • Tempo limite da conexão, em segundos: se a conexão com o servidor não puder ser estabelecida durante o tempo especificado, a solicitação falha. Por padrão: 20 segundos.
  5. Escolha os tipos de evento para acionar o envio de notificações para a URL especificada. Se os eventos não forem escolhidos, as notificações não serão enviadas.

  6. Teste a integração e certifique-se de que as configurações estão corretas.

  7. Clique em Adicionar integração.

Exemplo de integração com o Fluentd:

Adicionando integração com o Fluentd

Testando a integração

Os testes de integração permitem verificar a correção da configuração, a disponibilidade do Wallarm Cloud e o formato de notificação. Para testar a integração, você pode usar o botão Testar integração ao criar ou editar a integração.

O teste de integração é realizado da seguinte maneira:

  • As notificações de teste com o prefixo [Mensagem de teste] são enviadas para o sistema selecionado.

  • As notificações de teste abrangem os seguintes eventos (cada um em um único registro):

    • Novo usuário na conta da empresa
    • Nova ocorrência detectada
    • Novo IP descoberto no escopo da empresa
    • Novo gatilho na conta da empresa
    • Nova vulnerabilidade de segurança descoberta
  • As notificações de teste incluem dados de teste.

O log de teste no coletor de dados intermediário Fluentd ou Logstash:

[
    {
        summary:"[Mensagem de teste] [Parceiro de teste (US)] Nova vulnerabilidade detectada",
        description:"Tipo de notificação: vuln

                    Uma nova vulnerabilidade foi detectada em seu sistema.

                    ID: 
                    Título: Teste
                    Domínio: example.com
                    Caminho: 
                    Método: 
                    Descoberto por: 
                    Parâmetro: 
                    Tipo: Info
                    Ameaça: Média

                    Mais detalhes: https://us1.my.wallarm.com/object/555


                    Cliente: TestCompany
                    Nuvem: US
                    ",
        details:{
            client_name:"TestCompany",
            cloud:"US",
            notification_type:"vuln",
            vuln_link:"https://us1.my.wallarm.com/object/555",
            vuln:{
                domain:"example.com",
                id:null,
                method:null,
                parameter:null,
                path:null,
                title:"Teste",
                discovered_by:null,
                threat:"Média",
                type:"Info"
            }
        }
    }
]

O log de teste no Datadog:

O log de teste no Datadog

Para encontrar os logs do Wallarm entre outros registros, você pode usar a tag de busca source:wallarm_cloud no serviço Datadog Logs.