Visualizzare i log dei flussi dei gruppi di sicurezza di rete di Azure Network Watcher con strumenti open source
Importante
Il 30 settembre 2027 i log dei flussi del gruppo di sicurezza di rete (NSG) verranno ritirati. Come parte di questo ritiro, non sarà più possibile creare nuovi log dei flussi del gruppo di sicurezza di rete a partire dal 30 giugno 2025. È consigliabile la migrazione ai log dei flussi della rete virtuale, che superano le limitazioni dei log dei flussi del gruppo di sicurezza di rete. Dopo la data di ritiro, l'analisi del traffico abilitata con i log dei flussi del gruppo di sicurezza di rete non sarà più supportata e le risorse dei log dei flussi del gruppo di sicurezza di rete esistenti nelle sottoscrizioni verranno eliminate. Tuttavia, i record dei log dei flussi del gruppo di sicurezza di rete non verranno eliminati e continueranno a seguire i rispettivi criteri di conservazione. Per altre informazioni, consultare l'annuncio ufficiale.
I log dei flussi dei gruppi di sicurezza di rete contengono informazioni utili per comprendere il traffico IP in ingresso e in uscita nei gruppi di sicurezza di rete. Questi log mostrano i flussi in ingresso e in uscita in base a regole, la scheda di rete a cui si applica il flusso, informazioni a 5 tuple sul flusso, ad esempio l'indirizzo IP di origine/destinazione, la porta di origine/destinazione o il protocollo, e se il traffico è stato consentito o negato.
Analizzare manualmente i log dei flussi e ottenerne informazioni significative può essere difficile. Esistono tuttavia diversi strumenti open source che possono semplificare la visualizzazione di questi dati. Questo articolo presenta una soluzione per visualizzare questi log con Elastic Stack, che consentirà di indicizzare e visualizzare rapidamente i log dei flussi in un dashboard Kibana.
Scenario
In questo articolo delineiamo una soluzione che consente di visualizzare i log dei flussi dei gruppi di sicurezza di rete con Elastic Stack. Un plug-in di input Logstash ottiene i log dei flussi direttamente dal BLOB del servizio di archiviazione configurato per contenerli. Successivamente, con Elastic Stack, i log dei flussi verranno indicizzati e usati per creare un dashboard Kibana per visualizzare le informazioni.
Passaggi
Abilitare la registrazione dei flussi dei gruppi di sicurezza di rete
Per questo scenario, è necessario abilitare la registrazione dei flussi dei gruppi di sicurezza di rete in almeno un gruppo di sicurezza di rete nel proprio account. Per istruzioni in proposito, vedere Introduzione alla registrazione dei flussi per i gruppi di sicurezza di rete.
Configurare Elastic Stack
Connettendo i log dei flussi dei gruppi di sicurezza di rete con Elastic Stack, è possibile creare un dashboard Kibana che consente di eseguire ricerche e analisi, creare grafici e ottenere informazioni significative dai log.
Installare Elasticsearch
Le istruzioni seguenti vengono usate per installare Elasticsearch in macchine virtuali Ubuntu di Azure. Per istruzioni su come installare la ricerca elastica in Red Hat Enterprise Linux, vedere Installare Elasticsearch con RPM.
Elastic Stack versione 5.0 e successive richiede Java 8. Eseguire il comando
java -version
per controllare la versione in uso. Se Java non è installato, vedere la documentazione sui JDK supportati da Azure.Scaricare il pacchetto binario corretto per il proprio 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
Per altri metodi di installazione, vedere Elasticsearch Installation (Installazione di Elasticsearch)
Verificare che Elasticsearch sia in esecuzione con questo comando:
curl http://127.0.0.1:9200
La risposta dovrebbe essere simile alla seguente:
{ "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" }
Per altre istruzioni sull'installazione di Elasticsearch, vedere Istruzioni di installazione.
Installare Logstash
Le istruzioni seguenti vengono usate per installare Logstash in Ubuntu. Per istruzioni su come installare questo pacchetto in Red Hat Enterprise Linux, vedere l'articolo Installazione da repository di pacchetti - yum.
Per installare Logstash, eseguire questi comandi:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Successivamente è necessario configurare Logstash per accedere ai log dei flussi e analizzarli. Creare un file logstash.conf usando:
sudo touch /etc/logstash/conf.d/logstash.conf
Aggiungere il seguente contenuto nel file:
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" } }
Per altre istruzioni sull'installazione di Logstash, vedere la documentazione ufficiale.
Installare il plug-in di input Logstash per l'archiviazione BLOB di Azure
Questo plug-in Logstash consente di accedere direttamente ai log di flusso dall'account di archiviazione designato. Per installare questo plug-in, dalla directory di installazione predefinita Logstash eseguire il comando:
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Per avviare Logstash, eseguire questo comando:
sudo /etc/init.d/logstash start
Per altre informazioni su questo plug-in, vedere la documentazione.
Installare Kibana
Per istruzioni su come installare Kibana in Red Hat Enterprise Linux, vedere Installare Kibana con RPM. Per istruzioni su come installare Kibana nei sistemi Ubuntu/Debian usando un pacchetto di repository, vedere Installare Kibana dal repository APT.
Le istruzioni seguenti sono state quindi testate in Ubuntu e possono essere usate in distribuzioni Linux diverse perché non sono specifiche di Ubuntu.
Eseguire questi comandi per installare 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
Per eseguire Kibana, usare questi comandi:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Per visualizzare l'interfaccia Web di Kibana, passare a
http://localhost:5601
Per questo scenario, il modello di indice usato per i log dei flussi è "nsg-flow-logs". È possibile modificare il modello di indice nella sezione "output" del file logstash.conf.
Per visualizzare il dashboard Kibana in remoto, creare una regola dei gruppi di sicurezza di rete in ingresso che consenta l'accesso alla porta 5601.
Creare un dashboard Kibana
Un dashboard di esempio per visualizzare le tendenze e i dettagli degli avvisi è illustrato nell'immagine seguente:
Scaricare il file del dashboard, il file delle visualizzazioni e il file della ricerca salvata.
Nella scheda Management (Gestione) di Kibana passare a Saved Objects (Oggetti salvati) e importare tutti e tre i file. Dalla scheda Dashboard è quindi possibile aprire e caricare il dashboard di esempio.
È anche possibile creare visualizzazioni e dashboard personalizzati per le metriche a cui si è interessati. Per altre informazioni sulla creazione di visualizzazioni Kibana, vedere la documentazione ufficiale di Kibana.
Visualizzare i log dei flussi dei gruppi di sicurezza di rete
Il dashboard di esempio offre diverse visualizzazioni dei log dei flussi.
Flussi per decisione/direzione nel tempo: grafici di serie temporali che mostrano il numero dei flussi nel periodo di tempo specificato. È possibile modificare l'unità di tempo e l'intervallo di entrambe queste visualizzazioni. Il grafico dei flussi per decisione mostra la proporzione tra le decisioni di consentire e di rifiutare il traffico che sono state prese, mentre quello dei flussi per direzione mostra la proporzione tra traffico in ingresso e in uscita. Questi oggetti visivi consentono di esaminare le tendenze del traffico nel tempo e individuare eventuali picchi o modelli insoliti.
Flussi per porta di origine/destinazione: grafici a torta che mostrano la suddivisione dei flussi sulle rispettive porte. Questa visualizzazione consente di verificare le porte più usate. Facendo clic su una porta specifica nel grafico a torta, il resto della dashboard viene filtrato in modo da visualizzare i flussi di tale porta.
Numero di flussi e data e ora del primo log: metriche che mostrano il numero di flussi registrato e la data del primo log acquisito.
Flussi per gruppo di sicurezza di rete e regola: grafico a barre che mostra la distribuzione dei flussi in ogni gruppo di sicurezza di rete e la distribuzione delle regole all'interno di ogni gruppo. Questo grafico consente di determinare il gruppo di sicurezza di rete e le regole che hanno generato la maggiore quantità di traffico.
10 principali IP di origine/destinazione: grafici a barre che mostrano i 10 principali indirizzi IP di origine e di destinazione. È possibile modificare i grafici in modo da visualizzare un numero maggiore o minore di indirizzi IP principali. Questi grafici consentono di rilevare gli indirizzi IP più ricorrenti e le decisioni di consentire o rifiutare il traffico prese nei confronti di ogni IP.
Tuple di flusso: una tabella che mostra le informazioni contenute all'interno di ogni tupla del flusso e la corrispondente regola e NGS.
Usando la barra per le query nella parte superiore è possibile filtrare il dashboard in base a qualsiasi parametro dei flussi, come ID sottoscrizione, gruppi di risorse, regola o qualsiasi altra variabile a cui si è interessati. Per altre informazioni su query e filtri di Kibana, vedere la documentazione ufficiale
Conclusione
Combinando i log dei flussi dei gruppi di sicurezza di rete con Elastic Stack, si è ottenuto uno strumento personalizzabile ed efficace per visualizzare il traffico di rete. Queste dashboard consentono di ottenere e condividere rapidamente informazioni significative sul traffico di rete, nonché di applicare filtri e ricercare potenziali anomalie. Usando Kibana, è possibile personalizzare i dashboard e creare visualizzazioni specifiche per soddisfare qualsiasi esigenza in termini di sicurezza, controllo e conformità.
Passaggio successivo
Per informazioni su come visualizzare i log dei flussi dei gruppi di sicurezza di rete con Power BI, vedere Visualizzare i log dei flussi dei gruppi di sicurezza di rete con Power BI