Visualiser les journaux de flux NSG d’Azure Network Watcher à l’aide d’outils open source
Les journaux d’activité des flux de groupe de sécurité réseau fournissent des informations permettant de comprendre le trafic IP entrant et sortant sur les groupes de sécurité réseau. Ces journaux de flux affichent les flux entrants et sortants en fonction de la règle, de la carte réseau à laquelle le flux s’applique, des informations à 5 tuples sur le flux (adresse IP source/de destination, port source/de destination, protocole), et de l’autorisation ou du refus du trafic.
Ces journaux de flux peuvent être difficiles à analyser et à exploiter manuellement. Toutefois, il existe de nombreux outils open source qui peuvent aider à visualiser ces données. Cet article propose une solution pour visualiser ces journaux d’activité à l’aide d’Elastic Stack, qui vous permet d’indexer et de visualiser rapidement vos journaux de flux dans un tableau de bord Kibana.
Scénario
Dans cet article, nous configurons une solution qui vous permet de visualiser les journaux de flux de groupe de sécurité réseau à l’aide d’Elastic Stack. Un plug-in d’entrée Logstash collecte les journaux de flux directement à partir de l’objet blob de stockage configuré pour contenir les journaux de flux. Ensuite, à l’aide d’Elastic Stack, les journaux de flux sont indexés et utilisés pour créer un tableau de bord Kibana permettant de visualiser les informations.
Étapes
Activer les journaux de flux des groupes de sécurité réseau
Pour ce scénario, la journalisation des flux de groupe de sécurité réseau doit être activée sur au moins un groupe de sécurité réseau dans votre compte. Pour obtenir des instructions sur l’activation des journaux d’activité des flux de groupe de sécurité réseau, consultez l’article suivant Introduction à la journalisation des flux pour les groupes de sécurité réseau.
Configurer la Suite Elastic
En connectant les journaux de flux NSG à la Suite Elastic, nous pouvons générer un tableau de bord Kibana qui nous permet d’effectuer des recherches, de créer des graphiques, d’analyser et d’obtenir des informations à partir de nos journaux d’activité.
Installer Elasticsearch
Les instructions suivantes sont utilisées pour installer Elasticsearch sur des machines virtuelles Ubuntu Azure. Pour obtenir des instructions sur l’installation de la recherche élastique dans Red Hat Enterprise Linux, consultez Installer Elasticsearch avec RPM.
La Suite Elastic à partir de la version 5.0 et pour les versions ultérieures requiert Java 8. Exécutez la commande
java -version
pour vérifier la version que vous utilisez. Si Java n’est pas installé sur votre ordinateur, consultez la documentation relative aux JDK pris en charge dans Azure.Téléchargez le package binaire approprié pour votre système :
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
D’autres méthodes d’installation se trouvent sur la page Elasticsearch Installation (Installation d’Elasticsearch).
Vérifiez qu’Elasticsearch est en cours d’exécution avec la commande :
curl http://127.0.0.1:9200
Vous devriez voir une réponse similaire à ce qui suit :
{ "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" }
Pour plus d’informations sur l’installation d’Elasticsearch, consultez les instructions d’installation.
Installer Logstash
Les instructions suivantes permettent d’installer Logstash dans Ubuntu. Pour obtenir des instructions sur l’installation de ce package dans Red Hat Enterprise Linux, consultez l’article Installation à partir de dépôts de packages – yum.
Exécutez les commandes suivantes pour installer Logstash :
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Ensuite, nous devons configurer Logstash pour accéder aux journaux de flux et les analyser. Créez un fichier logstash.conf à l’aide de :
sudo touch /etc/logstash/conf.d/logstash.conf
Ajoutez le contenu suivant au fichier :
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" } }
Pour plus d’informations sur l’installation de Logstash, consultez la documentation officielle.
Installer le plug-in d’entrée Logstash pour le stockage Blob Azure
Ce plug-in Logstash vous permet d’accéder directement aux journaux de flux, à partir de leur compte de stockage désigné. Pour installer ce plug-in, exécutez la commande suivante à partir du répertoire d’installation par défaut de Logstash :
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Pour démarrer Logstash, exécutez la commande :
sudo /etc/init.d/logstash start
Pour plus d’informations à propos de ce plug-in, consultez la documentation.
Installer Kibana
Pour obtenir des instructions sur l’installation de Kibana dans Red Hat Enterprise Linux, consultez Installer Kibana avec RPM. Pour obtenir des instructions sur l’installation de Kibana dans des systèmes Ubuntu/Debian à l’aide d’un package de référentiel, consultez Installer Kibana à partir d’un référentiel APT.
Ensuite, les instructions suivantes ont été testées dans Ubuntu et peuvent être utilisées dans différentes distributions Linux, car elles ne sont pas spécifiques à Ubuntu.
Exécutez les commandes suivantes pour installer 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
Pour exécuter Kibana, exécutez les commandes ci-dessous :
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Pour afficher votre interface web Kibana, accédez à
http://localhost:5601
Dans ce scénario, le modèle d’index utilisé pour les journaux de flux est « nsg-flow-logs ». Vous pouvez modifier le modèle d’index dans la section « sortie » de votre fichier logstash.conf.
Si vous souhaitez afficher le tableau de bord Kibana à distance, créez une règle de groupe de sécurité réseau entrante autorisant l’accès au port 5601.
Créer un tableau de bord Kibana
L’image suivante montre un exemple de tableau de bord où sont affichés les tendances et les détails de vos alertes :
Téléchargez le fichier du tableau de bord, le fichier de visualisation et le fichier des recherches sauvegardées.
Dans l’onglet Gestion de Kibana, accédez à Saved Objects (Objets enregistrés) et importez les trois fichiers. Puis, à partir de l’onglet Tableau de bord, vous pouvez ouvrir et charger l’exemple de tableau de bord.
Vous avez également la possibilité de créer vos propres visualisations et tableaux de bord en fonction des mesures qui vous intéressent. Reportez-vous à la documentation officielle de Kibana pour en savoir plus sur la création de visualisation Kibana.
Visualiser les journaux de flux NSG
L’exemple de tableau de bord fournit plusieurs visualisations des journaux de flux :
Flux par décision/direction dans le temps : graphiques chronologiques indiquant le nombre de flux sur une période de temps. Vous pouvez modifier l’unité de temps et l’étendue de ces deux visualisations. Le graphique de flux par décision affiche la proportion de décisions d’autorisation ou de refus, tandis que celui du flux par direction affiche la proportion du trafic entrant et sortant. Grâce à ces éléments visuels, vous pouvez examiner les tendances du trafic au fil du temps et identifier les pics ou les modèles inhabituels.
Flux par port source/de destination : graphiques à secteurs montrant la répartition des flux en fonction de leurs ports respectifs. Grâce à cet affichage, vous pouvez visualiser les ports les plus fréquemment utilisés. Si vous cliquez sur un port spécifique dans le graphique à secteurs, le reste du tableau de bord filtre les flux selon ce port.
Nombre de flux et date du premier journal : mesures indiquant le nombre de flux enregistrés et la date du plus ancien journal capturé.
Flux par groupe de sécurité réseau et par règle : graphique à barres montrant la répartition des flux au sein de chaque groupe de sécurité réseau, et la répartition des règles au sein de ces derniers. , vous pouvez identifier le groupe de sécurité réseau et les règles qui ont généré le plus de trafic.
10 principales adresses IP source/de destination : graphiques à barres indiquant les 10 principales adresses IP source et de destination. Vous pouvez ajuster ces graphiques pour afficher un nombre plus ou moins important d’adresses IP. À partir de ces données, vous pouvez identifier les adresses IP les plus fréquemment utilisées, et la décision de trafic (autorisation ou refus) prise par rapport à chacune d’entre elles.
Tuples de flux : ce tableau affiche les informations contenues dans chaque tuple du flux, ses groupes de sécurité réseau et ses règles correspondants.
À l’aide de la barre de requête située en haut du tableau de bord, vous pouvez filtrer le tableau de bord en fonction de n’importe quel paramètre des flux, tel que l’ID d’abonnement, les groupes de ressources, la règle ou toute autre variable d’intérêt. Pour plus d’informations sur les requêtes et les filtres de Kibana, consultez la documentation officielle
Conclusion
En combinant les journaux d’activité des flux de groupe de sécurité réseau avec la Suite Elastic, nous bénéficions d’une solution puissante et personnalisable permettant de visualiser le trafic de notre réseau. Ces tableaux de bord vous permettent d’obtenir et de partager rapidement des analyses sur le trafic de votre réseau, mais aussi de filtrer et d’examiner toute anomalie potentielle. Grâce à Kibana, vous pouvez adapter ces tableaux de bord et créer des visualisations spécifiques pour répondre à tous vos besoins en matière de sécurité, d’audit et de conformité.
Étapes suivantes
Découvrez comment visualiser vos journaux de flux de groupe de sécurité réseau avec Power BI en consultant la page Visualizing Network Security Group flow logs with Power BI (Visualisation des journaux de flux de groupe de sécurité réseau avec Power BI).