Partilhar via


Gerenciar e analisar logs de fluxo de grupo de segurança de rede no Azure usando o Network Watcher e o Graylog

Importante

Em 30 de setembro de 2027, os logs de fluxo do grupo de segurança de rede (NSG) serão desativados. Como parte dessa desativação, você não poderá mais criar novos logs de fluxo do NSG a partir de 30 de junho de 2025. Recomendamos migrar para logs de fluxo de rede virtual, que superam as limitações dos logs de fluxo NSG. Após a data de desativação, a análise de tráfego habilitada com logs de fluxo NSG não será mais suportada e os recursos existentes de logs de fluxo NSG em suas assinaturas serão excluídos. No entanto, os registros de logs de fluxo do NSG não serão excluídos e continuarão a seguir suas respetivas políticas de retenção. Para obter mais informações, veja o anúncio oficial.

Os logs de fluxo do grupo de segurança de rede fornecem informações que você pode usar para entender o tráfego IP de entrada e saída para interfaces de rede do Azure. Os logs de fluxo mostram os fluxos de entrada e saída por regra de grupo de segurança de rede, a interface de rede à qual o fluxo se aplica, informações de 5 tuplas (IP de origem/destino, porta de origem/destino, protocolo) sobre o fluxo e se o tráfego foi permitido ou negado.

Você pode ter muitos grupos de segurança de rede em sua rede com o log de fluxo habilitado. Vários grupos de segurança de rede com o log de fluxo habilitado podem tornar complicado analisar e obter informações de seus logs. Este artigo fornece uma solução para gerenciar centralmente esses logs de fluxo do grupo de segurança de rede usando o Graylog, uma ferramenta de gerenciamento e análise de logs de código aberto, e o Logstash, um pipeline de processamento de dados do lado do servidor de código aberto.

Aviso

As etapas a seguir funcionam com logs de fluxo versão 1. Para obter detalhes, consulte Introdução ao log de fluxo para grupos de segurança de rede. As instruções a seguir não funcionarão com a versão 2 dos arquivos de log, sem modificação.

Cenário

Os logs de fluxo do grupo de segurança de rede são habilitados usando o Inspetor de Rede. Os logs de fluxo fluem para o armazenamento de blob do Azure. Um plug-in Logstash é usado para conectar e processar logs de fluxo do armazenamento de blob e enviá-los para o Graylog. Uma vez que os logs de fluxo são armazenados no Graylog, eles podem ser analisados e visualizados em painéis personalizados.

Fluxo de trabalho Graylog

Passos de Instalação

Habilitar o log de fluxo do grupo de segurança de rede

Para esse cenário, você deve ter o log de fluxo de grupo de segurança de rede habilitado em pelo menos um grupo de segurança de rede em sua conta. Para obter instruções sobre como habilitar logs de fluxo de grupos de segurança de rede, consulte o seguinte artigo Introdução ao log de fluxo para grupos de segurança de rede.

Configurando o Graylog

Neste exemplo, o Graylog e o Logstash são configurados em um Ubuntu Server, implantado no Azure.

Este exemplo usa a configuração mínima do Graylog (ou seja, uma única instância de um Graylog), mas o Graylog pode ser arquitetado para ser dimensionado entre recursos, dependendo do seu sistema e das necessidades de produção. Para obter mais informações sobre considerações arquitetônicas ou um guia detalhado de arquitetura, consulte a documentação e o guia de arquitetura do Graylog.

O Graylog pode ser instalado de várias maneiras, dependendo da sua plataforma e preferências. Para obter uma lista completa dos possíveis métodos de instalação, consulte a documentação oficial do Graylog. O aplicativo de servidor Graylog é executado em distribuições Linux e tem os seguintes pré-requisitos:

Instalar o Logstash

Logstash é usado para nivelar os logs de fluxo formatados JSON para um nível de tupla de fluxo. Nivelar os logs de fluxo torna os logs mais fáceis de organizar e pesquisar no Graylog. As instruções a seguir são usadas para instalar o Logstash no Ubuntu. Para obter instruções sobre como instalar este pacote no Red Hat Enterprise Linux, consulte Instalando a partir de repositórios de pacotes - yum.

  1. Para instalar o Logstash, execute os seguintes comandos:

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
    sudo apt-get install apt-transport-https
    echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
    sudo apt-get update && sudo apt-get install logstash
    
  2. Configure o Logstash para analisar os logs de fluxo e enviá-los para o Graylog. Crie um arquivo Logstash.conf:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Adicione o seguinte conteúdo ao arquivo. Altere os valores , storage_access_keye para container refletir os detalhes da storage_account_namesua conta de armazenamento:

     input {
         azureblob
         {
             storage_account_name => "mystorageaccount"
             storage_access_key => "NrUZmx7pJSKaRJzvQbeiZWi5nBRWOTr7Wwr9DrvK7YtDBrADYxT1y0oEExtSlkDnGRt7qcRiZzEBCCyRYND8SxSt"
             container => "insights-logs-networksecuritygroupflowevent"
             registry_create_policy => "start_over"
             codec => "json"
             file_head_bytes => 21
             file_tail_bytes => 9
             # Possible options: `do_not_break`, `with_head_tail`, `without_head_tail`
             break_json_down_policy  => 'with_head_tail'
             break_json_batch_count => 2
             interval => 5
         }
     }
    
     filter {
         split { field => "[records]" }
         split { field => "[records][properties][flows]"}
         split { field => "[records][properties][flows][flows]"}
         split { field => "[records][properties][flows][flows][flowTuples]"
     }
    
      mutate {
         split => { "[records][resourceId]" => "/"}
         add_field =>{
                     "Subscription" => "%{[records][resourceId][2]}"
                     "ResourceGroup" => "%{[records][resourceId][4]}"
                     "NetworkSecurityGroup" => "%{[records][resourceId][8]}"
         }
         convert => {"Subscription" => "string"}
         convert => {"ResourceGroup" => "string"}
         convert => {"NetworkSecurityGroup" => "string"}
         split => { "[records][properties][flows][flows][flowTuples]" => ","}
         add_field => {
                     "unixtimestamp" => "%{[records][properties][flows][flows][flowTuples][0]}"
                     "srcIp" => "%{[records][properties][flows][flows][flowTuples][1]}"
                     "destIp" => "%{[records][properties][flows][flows][flowTuples][2]}"
                     "srcPort" => "%{[records][properties][flows][flows][flowTuples][3]}"
                     "destPort" => "%{[records][properties][flows][flows][flowTuples][4]}"
                     "protocol" => "%{[records][properties][flows][flows][flowTuples][5]}"
                     "trafficflow" => "%{[records][properties][flows][flows][flowTuples][6]}"
                     "traffic" => "%{[records][properties][flows][flows][flowTuples][7]}"
         }
         add_field => {
                     "time" => "%{[records][time]}"
                     "systemId" => "%{[records][systemId]}"
                     "category" => "%{[records][category]}"
                     "resourceId" => "%{[records][resourceId]}"
                     "operationName" => "%{[records][operationName}}"
                     "Version" => "%{[records][properties][Version}}"
                     "rule" => "%{[records][properties][flows][rule]}"
                     "mac" => "%{[records][properties][flows][flows][mac]}"
         }
         convert => {"unixtimestamp" => "integer"}
         convert => {"srcPort" => "integer"}
         convert => {"destPort" => "integer"}
         add_field => { "message" => "%{Message}" }
     }
         date {
             match => ["unixtimestamp" , "UNIX"]
         }
     }
     output {
         stdout { codec => rubydebug }
         udp {
             host => "127.0.0.1"
             port => 12201
         }
     }
    

    O arquivo de configuração Logstash fornecido é composto por três partes: entrada, filtro e saída. A seção de entrada designa a fonte de entrada dos logs que o Logstash processará - neste caso, você usará um plug-in de entrada de blog do Azure (instalado nas próximas etapas) que nos permite acessar os arquivos JSON de log de fluxo do grupo de segurança de rede armazenados no armazenamento de blob.

Em seguida, a seção de filtro nivela cada arquivo de log de fluxo para que cada tupla de fluxo individual e suas propriedades associadas se tornem um evento Logstash separado.

Finalmente, a seção de saída encaminha cada evento Logstash para o servidor Graylog. Para atender às suas necessidades específicas, modifique o arquivo de configuração do Logstash, conforme necessário.

Nota

O arquivo de configuração anterior assume que o servidor Graylog foi configurado no endereço IP de loopback do host local 127.0.0.1. Caso contrário, certifique-se de alterar o parâmetro host na seção de saída para o endereço IP correto.

Para obter mais instruções sobre como instalar o Logstash, consulte a documentação do Logstash.

Instalar o plug-in de entrada Logstash para armazenamento de blobs do Azure

O plug-in Logstash permite que você acesse diretamente os logs de fluxo de sua conta de armazenamento de blob designada. Para instalar o plug-in, a partir do diretório de instalação padrão do Logstash (neste caso, /usr/share/logstash/bin), execute o seguinte comando:

cd /usr/share/logstash/bin
sudo ./logstash-plugin install logstash-input-azureblob

Para obter mais informações sobre esse plug-in, consulte a documentação.

Configurar a conexão do Logstash para o Graylog

Agora que você estabeleceu uma conexão com os logs de fluxo usando o Logstash e configurou o servidor Graylog, você precisa configurar o Graylog para aceitar os arquivos de log de entrada.

  1. Navegue até a interface da Web do Graylog Server usando a URL que você configurou para ela. Você pode acessar a interface direcionando seu navegador para http://<graylog-server-ip>:9000/

  2. Para navegar até a página de configuração, selecione o menu suspenso Sistema na barra de navegação superior à direita e clique em Entradas. Como alternativa, navegue até http://<graylog-server-ip>:9000/system/inputs

    Introdução

  3. Para iniciar a nova entrada, selecione GELF UDP na lista suspensa Selecionar entrada e preencha o formulário. GELF significa Graylog Extended Log Format. O formato GELF é desenvolvido pela Graylog. Para saber mais sobre suas vantagens, consulte a documentação do Graylog.

    Certifique-se de vincular a entrada ao IP no qual você configurou seu servidor Graylog. O endereço IP deve corresponder ao campo host da saída UDP do arquivo de configuração Logstash. A porta padrão deve ser 12201. Verifique se a porta corresponde ao campo de porta na saída UDP designada no arquivo de configuração do Logstash.

    A captura de tela mostra as entradas Graylog, com opções para iniciar e localizar entradas.

    Depois de iniciar a entrada, você deve vê-la aparecer na seção Entradas locais , conforme mostrado na imagem a seguir:

    Captura de tela que mostra a seção Entradas locais que contém a entrada que você iniciou.

    Para saber mais sobre as entradas de mensagens do Graylog, consulte a documentação.

  4. Depois que essas configurações forem feitas, você poderá iniciar o Logstash para começar a ler nos logs de fluxo com o seguinte comando: sudo systemctl start logstash.service.

Pesquisar através de mensagens Graylog

Depois de permitir algum tempo para o seu servidor Graylog coletar mensagens, você é capaz de pesquisar através das mensagens. Para verificar as mensagens que estão sendo enviadas para o seu servidor Graylog, na página Configuração de entradas, clique no botão "Mostrar mensagens recebidas" da entrada UDP GELF que você criou. Você é direcionado para uma tela semelhante à imagem a seguir:

A captura de tela mostra o servidor Graylog que exibe o resultado da pesquisa, o histograma e as mensagens.

Clicar no link azul "%{Message}" expande cada mensagem para mostrar os parâmetros de cada tupla de fluxo, como mostra a imagem a seguir:

A captura de tela mostra os detalhes da mensagem do servidor Graylog.

Por padrão, todos os campos de mensagem são incluídos na pesquisa se você não selecionar um campo de mensagem específico para pesquisar. Se você quiser pesquisar mensagens específicas (ou seja, tuplas de fluxo de um IP de origem específico), você pode usar a linguagem de consulta de pesquisa Graylog conforme documentado

Analise os logs de fluxo do grupo de segurança de rede usando o Graylog

Agora que o Graylog está em execução, você pode usar algumas de suas funcionalidades para entender melhor seus dados de log de fluxo. Uma dessas maneiras é usando painéis para criar visualizações específicas de seus dados.

Criar um dashboard

  1. Na barra de navegação superior, selecione Painéis ou navegue até http://<graylog-server-ip>:9000/dashboards/

  2. A partir daí, clique no botão verde Criar painel e preencha o pequeno formulário com o título e a descrição do seu painel. Pressione o botão Salvar para criar o novo painel. Você verá um painel semelhante à imagem a seguir:

    A captura de tela mostra os painéis do servidor Graylog, com as opções para criar e editar painéis.

Adicionar widgets

Você pode clicar no título do painel para vê-lo, mas agora ele está vazio, já que não adicionamos nenhum widget. Um widget de tipo fácil e útil para adicionar ao painel são os gráficos de Valores Rápidos , que exibem uma lista de valores do campo selecionado e sua distribuição.

  1. Navegue de volta para os resultados da pesquisa da entrada UDP que está recebendo logs de fluxo selecionando Pesquisar na barra de navegação superior.

  2. No painel Resultados da pesquisa, no lado esquerdo da tela, localize a guia Campos, que lista os vários campos de cada mensagem de tupla de fluxo de entrada.

  3. Selecione qualquer parâmetro desejado no qual visualizar (neste exemplo, a fonte IP é selecionada). Para mostrar a lista de widgets possíveis, clique na seta suspensa azul à esquerda do campo e selecione Valores rápidos para gerar o widget. Você deve ver algo semelhante à seguinte imagem:

    IP de origem

  4. A partir daí, você pode selecionar o botão Adicionar ao painel no canto superior direito do widget e selecionar o painel correspondente para adicionar.

  5. Navegue de volta ao painel para ver o widget que você acabou de adicionar.

    Você pode adicionar uma variedade de outros widgets, como histogramas e contagens, ao seu painel para acompanhar métricas importantes, como o painel de exemplo mostrado na imagem a seguir:

    Painel Flowlogs

    Para obter mais explicações sobre painéis e outros tipos de widgets, consulte a documentação do Graylog.

Ao integrar o Network Watcher com o Graylog, você agora tem uma maneira conveniente e centralizada de gerenciar e visualizar os logs de fluxo do grupo de segurança de rede. O Graylog tem uma série de outros recursos poderosos, como fluxos e alertas, que também podem ser usados para gerenciar ainda mais os logs de fluxo e entender melhor o tráfego da sua rede. Agora que você tem o Graylog configurado e conectado ao Azure, sinta-se à vontade para continuar a explorar as outras funcionalidades que ele oferece.

Próximos passos

Saiba como visualizar seus logs de fluxo de grupo de segurança de rede com o Power BI visitando Visualizar logs de fluxos de grupo de segurança de rede com o Power BI.