Partilhar via


Visualizar registos do fluxo do NSG do Observador de Rede do Azure com ferramentas open-source

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 podem ser usadas para entender o tráfego IP de entrada e saída em grupos de segurança de rede. Esses logs de fluxo mostram os fluxos de entrada e saída por regra, a NIC à qual o fluxo se aplica, informações de 5 tuplas sobre o fluxo (IP de origem/destino, porta de origem/destino, protocolo) e se o tráfego foi permitido ou negado.

Esses logs de fluxo podem ser difíceis de analisar manualmente e obter informações. No entanto, existem várias ferramentas de código aberto que podem ajudar a visualizar esses dados. Este artigo fornece uma solução para visualizar esses logs usando o Elastic Stack, que permite indexar e visualizar rapidamente seus logs de fluxo em um painel do Kibana.

Cenário

Neste artigo, configuramos uma solução que permite visualizar logs de fluxo do grupo de segurança de rede usando o Elastic Stack. Um plug-in de entrada Logstash obtém os logs de fluxo diretamente do blob de armazenamento configurado para conter os logs de fluxo. Em seguida, usando o Elastic Stack, os logs de fluxo são indexados e usados para criar um painel do Kibana para visualizar as informações.

O diagrama mostra um cenário que permite visualizar logs de fluxo do grupo de segurança de rede usando o Elastic Stack.

Passos

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

Para esse cenário, você deve ter o Log de Fluxo do 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 segurança de rede, consulte o seguinte artigo Introdução ao log de fluxo para grupos de segurança de rede.

Configurar o Elastic Stack

Ao conectar os logs de fluxo do NSG com o Elastic Stack, podemos criar um painel do Kibana que nos permite pesquisar, representar graficamente, analisar e obter insights de nossos logs.

Instalar o Elasticsearch

As instruções a seguir são usadas para instalar o Elasticsearch em VMs do Ubuntu Azure. Para obter instruções sobre como instalar a pesquisa elástica no Red Hat Enterprise Linux, consulte Instalar o Elasticsearch com RPM.

  1. O Elastic Stack da versão 5.0 e superior requer Java 8. Execute o comando java -version para verificar sua versão. Se você não tiver o Java instalado, consulte a documentação sobre os JDKs suportados pelo Azure.

  2. Faça o download do pacote binário correto para o seu sistema:

    curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.deb
    sudo dpkg -i elasticsearch-5.2.0.deb
    sudo /etc/init.d/elasticsearch start
    

    Outros métodos de instalação podem ser encontrados em Instalação do Elasticsearch

  3. Verifique se o Elasticsearch está sendo executado com o comando:

    curl http://127.0.0.1:9200
    

    Você verá uma resposta semelhante à seguinte:

    {
    "name" : "Angela Del Toro",
    "cluster_name" : "elasticsearch",
    "version" : {
        "number" : "5.2.0",
        "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe",
        "build_timestamp" : "2016-01-27T13:32:39Z",
        "build_snapshot" : false,
        "lucene_version" : "6.1.0"
    },
    "tagline" : "You Know, for Search"
    }
    

Para obter mais instruções sobre como instalar a pesquisa elástica, consulte Instruções de instalação.

Instalar o Logstash

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 o artigo Instalando a partir de repositórios de pacotes - yum .

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

    curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb
    sudo dpkg -i logstash-5.2.0.deb
    
  2. Em seguida, precisamos configurar o Logstash para acessar e analisar os logs de fluxo. Crie um arquivo logstash.conf usando:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Adicione o seguinte conteúdo ao ficheiro:

    input {
       azureblob
         {
             storage_account_name => "mystorageaccount"
             storage_access_key => "VGhpcyBpcyBhIGZha2Uga2V5Lg=="
             container => "insights-logs-networksecuritygroupflowevent"
             codec => "json"
             # Refer https://learn.microsoft.com/azure/network-watcher/network-watcher-read-nsg-flow-logs
             # Typical numbers could be 21/9 or 12/2 depends on the nsg log file types
             file_head_bytes => 12
             file_tail_bytes => 2
             # Enable / tweak these settings when event is too big for codec to handle.
             # break_json_down_policy => "with_head_tail"
             # break_json_batch_count => 2
         }
       }
    
       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]}"
                   "flowstate" => "%{[records][properties][flows][flows][flowTuples][8]}"
                    "packetsSourceToDest" => "%{[records][properties][flows][flows][flowTuples][9]}"
                    "bytesSentSourceToDest" => "%{[records][properties][flows][flows][flowTuples][10]}"
                    "packetsDestToSource" => "%{[records][properties][flows][flows][flowTuples][11]}"
                    "bytesSentDestToSource" => "%{[records][properties][flows][flows][flowTuples][12]}"
                    }
       convert => {"unixtimestamp" => "integer"}
       convert => {"srcPort" => "integer"}
       convert => {"destPort" => "integer"}
      }
    
      date{
        match => ["unixtimestamp" , "UNIX"]
      }
     }
    output {
      stdout { codec => rubydebug }
      elasticsearch {
        hosts => "localhost"
        index => "nsg-flow-logs"
      }
    }
    

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

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

Este plugin Logstash permite que você acesse diretamente os logs de fluxo de sua conta de armazenamento designada. Para instalar este plugin, a partir do diretório de instalação padrão do Logstash, execute o comando:

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

Para iniciar o Logstash, execute o comando:

sudo /etc/init.d/logstash start

Para obter mais informações sobre este plugin, consulte a documentação.

Instalar o Kibana

Para obter instruções sobre como instalar o Kibana no Red Hat Enterprise Linux, consulte Instalar o Kibana com RPM. Para obter instruções sobre como instalar o Kibana em sistemas Ubuntu/Debian usando um pacote de repositório, consulte Instalar o Kibana a partir do repositório APT.

Em seguida, as instruções seguintes foram testadas no Ubuntu e podem ser usadas em diferentes distribuições Linux, pois não são específicas do Ubuntu.

  1. Execute os seguintes comandos para instalar o Kibana:

    curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-linux-x86_64.tar.gz
    tar xzvf kibana-5.2.0-linux-x86_64.tar.gz
    
  2. Para executar o Kibana use os comandos:

    cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana
    
  3. Para ver a sua interface web do Kibana, navegue até http://localhost:5601

  4. Para esse cenário, o padrão de índice usado para os logs de fluxo é "nsg-flow-logs". Você pode alterar o padrão de índice na seção "saída" do seu arquivo logstash.conf.

  5. Se você quiser visualizar o painel do Kibana remotamente, crie uma regra NSG de entrada que permita o acesso à porta 5601.

Criar um painel do Kibana

Um painel de exemplo para exibir tendências e detalhes em seus alertas é mostrado na imagem a seguir:

figura 1

Baixe o arquivo do painel, o arquivo de visualização e o arquivo de pesquisa salvo.

Na guia Gerenciamento do Kibana, navegue até Objetos Salvos e importe os três arquivos. Em seguida, na guia Painel , você pode abrir e carregar o painel de exemplo.

Você também pode criar suas próprias visualizações e painéis adaptados para métricas de seu próprio interesse. Leia mais sobre como criar visualizações do Kibana a partir da documentação oficial do Kibana.

Visualizar os registos de fluxos do NSG

O painel de exemplo fornece várias visualizações dos logs de fluxo:

  1. Fluxos por Decisão/Direção ao longo do tempo - gráficos de séries temporais que mostram o número de fluxos ao longo do período de tempo. Você pode editar a unidade de tempo e a extensão de ambas as visualizações. Fluxos por Decisão mostra a proporção de decisões de permissão ou negação tomadas, enquanto Fluxos por Direção mostra a proporção de tráfego de entrada e saída. Com esses elementos visuais, você pode examinar as tendências de tráfego ao longo do tempo e procurar por picos ou padrões incomuns.

    A captura de tela mostra um painel de exemplo com fluxos por decisão e direção ao longo do tempo.

  2. Fluxos por Destino/Porta de Origem – gráficos circulares que mostram a desagregação dos fluxos para as respetivas portas. Com essa visualização, você pode ver suas portas mais usadas. Se você clicar em uma porta específica dentro do gráfico de pizza, o restante do painel filtrará os fluxos dessa porta.

    A captura de tela mostra um painel de exemplo com fluxos por destino e porta de origem.

  3. Número de fluxos e hora de log mais antiga – métricas que mostram o número de fluxos registrados e a data do primeiro log capturado.

    A captura de tela mostra um painel de exemplo com o número de fluxos e a hora de log mais antiga.

  4. Fluxos por NSG e Regra – um gráfico de barras mostrando a distribuição de fluxos dentro de cada NSG e a distribuição de regras dentro de cada NSG. , você pode ver qual NSG e regras geraram mais tráfego.

    A captura de tela mostra um painel de exemplo com fluxos por N S G e regra.

  5. Top 10 IPs de origem/destino – gráficos de barras mostrando os 10 principais IPs de origem e destino. Você pode ajustar esses gráficos para mostrar mais ou menos os principais IPs. A partir daqui, você pode ver os IPs mais comuns e a decisão de tráfego (permitir ou negar) que está sendo tomada em relação a cada IP.

  6. Tuplas de fluxo – uma tabela que mostra as informações contidas em cada tupla de fluxo, e seu NGS e regra correspondentes.

Usando a barra de consulta na parte superior do painel, você pode filtrar o painel com base em qualquer parâmetro dos fluxos, como ID de assinatura, grupos de recursos, regra ou qualquer outra variável de interesse. Para mais informações sobre as consultas e filtros do Kibana, consulte a documentação oficial

Conclusão

Ao combinar os logs de fluxo do grupo de segurança de rede com o Elastic Stack, criamos uma maneira poderosa e personalizável de visualizar nosso tráfego de rede. Esses painéis permitem que você obtenha e compartilhe rapidamente informações sobre seu tráfego de rede, além de filtrar e investigar possíveis anomalias. Usando o Kibana, você pode personalizar esses painéis e criar visualizações específicas para atender a quaisquer necessidades de segurança, auditoria e conformidade.

Próximo passo

Saiba como visualizar seus logs de fluxo do NSG com o Power BI visitando Visualizar logs de fluxos do NSG com o Power BI