Visualizar logs de fluxo NSG do Observador de Rede do Azure usando ferramentas de código aberto
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 aposentadoria, você não poderá mais criar novos registros 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 registros de fluxo do NSG. Após a data de aposentadoria, a análise de tráfego habilitada com logs de fluxo NSG não será mais suportada, e os recursos de logs de fluxo NSG existentes em suas assinaturas serão excluídos. No entanto, os registros de fluxo do NSG não serão excluídos e continuarão seguindo suas respectivas políticas de retenção. Para saber mais, confira o anúncio oficial.
Os logs de fluxo do grupo de segurança de rede fornecem informações que podem ser usadas para entender a entrada e a saída de tráfego IP em grupos de segurança de rede. Esses logs de fluxo exibem os fluxos de entrada e saída baseados por regras. A NIC de fluxo se aplica às informações de 5 tuplas sobre o fluxo (IP de origem/destino, porta de origem/destino e protocolo) e se o tráfego foi permitido ou negado.
Esses logs de fluxo podem ser difíceis de serem analisados e de obter ideias de forma manual. No entanto, há várias ferramentas de código livre 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 os logs de fluxo do grupo de segurança de rede usando o Elastic Stack. Um plug-in de entrada do 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.
Etapas
Habilite os registros em logs do fluxo do grupo de segurança de rede
Nessa situação, você deve habilitar o registro em log do fluxo do grupo de segurança de rede em um ou mais grupos de segurança de rede em sua conta. Para obter instruções sobre como habilitar os logs de fluxo da 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 NSG ao Elastic Stack, podemos criar um painel Kibana que nos permitirá pesquisar, criar grafos, analisar e derivar informações de nossos logs.
Instalar Elasticsearch
As seguintes instruções são usadas para instalar o Elasticsearch em VMs do Ubuntu no Azure. Para obter instruções sobre como instalar a pesquisa elástica no Red Hat Enterprise Linux, consulte Instalar o Elasticsearch com RPM.
O Elastic Stack da versão 5.0 e superior exige o 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 com suporte do Azure.Baixe o pacote de binários correto para 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
Verifique se o Elasticsearch está sendo executado com o comando:
curl http://127.0.0.1:9200
Você deverá 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 a instalação da Pesquisa elástica, consulte as Instruções de instalação.
Instalar Logstash
As seguintes instruções são usadas para instalar o Logstash no Ubuntu. Para obter instruções sobre como instalar esse pacote no Red Hat Enterprise Linux, consulte o artigo Instalando a partir de repositórios de pacotes - yum.
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
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
Adicione o seguinte conteúdo ao arquivo:
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 informações sobre a instalação do Logstash, consulte a documentação oficial.
Instalar o plugin de entrada do Logstash para o armazenamento de blobs do Azure
Este plug-in do Logstash permite que você acesse diretamente os logs do fluxo da conta de armazenamento designada. Para instalar esse plug-in, no 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 esse plug-in, consulte a documentação.
Instalar 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.
As instruções a seguir foram testadas no Ubuntu e podem ser usadas em diferentes distribuições do Linux, pois não são específicas do Ubuntu.
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
Para executar o Kibana, use os comandos:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Para exibir a interface da Web do Kibana, navegue até
http://localhost:5601
Para esse cenário, o padrão de índice usado para os logs do fluxo é "nsg-flow-logs". Você pode alterar o padrão de índice na seção "saída" do arquivo logstash.conf.
Se você quiser exibir o painel Kibana remotamente, crie uma regra NSG de entrada permitindo o acesso à porta 5601.
Criar um painel Kibana
Um painel de exemplo para exibir detalhes e tendências em seus alertas é mostrado na imagem a seguir:
Baixe o arquivo do painel, o arquivo de visualizaçãoe o arquivo de pesquisa salva.
Na guia Management (Gerenciamento) do Kibana, navegue até Saved Objects (Objetos Salvos) e importe todos 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 personalizados 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 logs de fluxo NSG
O painel de exemplo fornece várias visualizações dos logs de fluxo:
Fluxos por Decisão/Direção ao Longo do Tempo - grafos da série de tempo mostrando o número de fluxos durante o período de tempo. Você pode editar a unidade de tempo e o alcance das duas visualizações. Os Fluxos por Decisão mostram a proporção de permitir ou negar decisões tomadas, enquanto os Fluxos por Direção mostram a proporção do tráfego de entrada e de saída. Com estes elementos visuais, você pode examinar as tendências de tráfego ao longo do tempo e procure por picos ou padrões incomuns.
Fluxos por Porta de Origem/Destino - gráficos de pizza mostrando a divisão dos fluxos pelas respectivas portas. Com esta exibição, você pode ver as portas usadas com mais frequência. Se você clicar em uma porta específica no gráfico de pizza, o restante do painel será filtrado para os fluxos dessa porta.
Número de Fluxos e Hora do Primeiro Log - métricas mostrando o número de fluxos registrados e a data do primeiro log capturado.
Fluxos por NSG e Regra - um grafo de barras que mostra a distribuição de fluxos em cada NSG, e a distribuição de regras em cada NSG. , você pode ver quais NSGs e regras geraram mais tráfego.
Os 10 Principais IPs de Origem/Destino - gráficos de barras mostrando os 10 principais IPs de origem e de destino. Você pode ajustar esses gráficos para mostrar mais ou menos IPs principais. A partir daí, você pode ver os IPs que ocorrem com mais frequência e a decisão de tráfego (permitir ou negar) que está sendo tomada em relação a cada IP.
Flow Tuples – uma tabela que mostra as informações contidas em cada tupla de fluxo e o NGS e a regra correspondente.
Usando a barra de consulta na parte superior do painel, você pode filtrar o conteúdo do painel com base nos parâmetros dos fluxos, como a ID da assinatura, grupos de recursos, regra ou qualquer outra variável de interesse. Para saber mais sobre as consultas e os filtros do Kibana, consulte a documentação oficial
Conclusão
Combinando os logs de fluxo do grupo de segurança de rede com o Elastic Stack, podemos encontrar uma maneira poderosa e personalizável para visualizar o tráfego de rede. Esses painéis permitem que você obtenha e compartilhe rapidamente insights sobre o tráfego da rede, filtre e investigue quaisquer anomalias em potencial. Com o Kibana, você pode personalizar esses painéis e criar visualizações específicas para atender às necessidades de segurança, auditoria e conformidade.
Próxima etapa
Para saber como visualizar os logs de fluxo NSG com o Power BI, veja Como visualizar logs de fluxos NSG com Power BI