Stroomlogboeken voor netwerkbeveiligingsgroepen in Azure beheren en analyseren met Behulp van Network Watcher en Graylog
Belangrijk
Op 30 september 2027 worden stroomlogboeken voor netwerkbeveiligingsgroepen (NSG) buiten gebruik gesteld. Als onderdeel van deze buitengebruikstelling kunt u vanaf 30 juni 2025 geen nieuwe NSG-stroomlogboeken meer maken. U wordt aangeraden te migreren naar stroomlogboeken van virtuele netwerken, waardoor de beperkingen van NSG-stroomlogboeken worden opgelost. Na de buitengebruikstellingsdatum worden verkeersanalyses die zijn ingeschakeld met NSG-stroomlogboeken niet meer ondersteund en worden bestaande resources voor NSG-stroomlogboeken in uw abonnementen verwijderd. NSG-stroomlogboekrecords worden echter niet verwijderd en blijven hun respectieve bewaarbeleid volgen. Zie de officiële aankondiging voor meer informatie.
Stroomlogboeken voor netwerkbeveiligingsgroepen bieden informatie die u kunt gebruiken om inzicht te hebben in inkomend en uitgaand IP-verkeer voor Azure-netwerkinterfaces. Stroomlogboeken tonen uitgaande en binnenkomende stromen per netwerkbeveiligingsgroepregel, de netwerkinterface waarop de stroom van toepassing is, informatie over 5 tuples (bron/doel-IP, bron-/doelpoort, protocol) over de stroom en of het verkeer is toegestaan of geweigerd.
U kunt veel netwerkbeveiligingsgroepen in uw netwerk hebben waarvoor stroomlogboekregistratie is ingeschakeld. Verschillende netwerkbeveiligingsgroepen waarvoor stroomlogboekregistratie is ingeschakeld, kunnen het lastig maken om uw logboeken te parseren en er inzicht in te krijgen. Dit artikel bevat een oplossing voor het centraal beheren van deze stroomlogboeken voor netwerkbeveiligingsgroepen met behulp van Graylog, een opensource-hulpprogramma voor logboekbeheer en analyse, en Logstash, een pijplijn voor gegevensverwerking aan de serverzijde.
Waarschuwing
De volgende stappen werken met stroomlogboeken versie 1. Zie Inleiding tot stroomlogboekregistratie voor netwerkbeveiligingsgroepen voor meer informatie. De volgende instructies werken niet met versie 2 van de logboekbestanden, zonder wijziging.
Scenario
Stroomlogboeken voor netwerkbeveiligingsgroepen worden ingeschakeld met Behulp van Network Watcher. Stroomlogboeken stromen naar Azure Blob Storage. Een Logstash-invoegtoepassing wordt gebruikt om logboeken van blobopslag te verbinden en te verwerken en naar Graylog te verzenden. Zodra de stroomlogboeken zijn opgeslagen in Graylog, kunnen ze worden geanalyseerd en gevisualiseerd in aangepaste dashboards.
Installatiestappen
Stroomlogboekregistratie van netwerkbeveiligingsgroepen inschakelen
Voor dit scenario moet logboekregistratie van netwerkbeveiligingsgroepen zijn ingeschakeld voor ten minste één netwerkbeveiligingsgroep in uw account. Raadpleeg het volgende artikel Inleiding tot stroomlogboeken voor stroomlogboeken voor netwerkbeveiligingsgroepen voor instructies over het inschakelen van stroomlogboeken voor netwerkbeveiligingsgroepen.
Graylog instellen
In dit voorbeeld worden zowel Graylog als Logstash geconfigureerd op een Ubuntu-server, geïmplementeerd in Azure.
- Raadpleeg de documentatie van Graylog voor stapsgewijze instructies voor het installeren op Ubuntu.
- Zorg ervoor dat u ook de Graylog-webinterface configureert door de documentatie te volgen.
In dit voorbeeld wordt gebruikgemaakt van de minimale Graylog-installatie (bijvoorbeeld één exemplaar van een Graylog), maar Graylog kan worden ontworpen voor het schalen van resources, afhankelijk van uw systeem- en productiebehoeften. Zie de documentatie en architectuurhandleiding van Graylog voor meer informatie over architectuuroverwegingen of een uitgebreide architectuurhandleiding.
Graylog kan op veel manieren worden geïnstalleerd, afhankelijk van uw platform en voorkeuren. Raadpleeg de officiële documentatie van Graylog voor een volledige lijst met mogelijke installatiemethoden. De Graylog-servertoepassing wordt uitgevoerd op Linux-distributies en heeft de volgende vereisten:
- Java SE 8 of hoger - JDK-installatiedocumentatie
- Elastic Search 2.x (2.1.0 of hoger) - Elasticsearch-installatiedocumentatie
- MongoDB 2.4 of hoger - Documentatie voor MongoDB-installatie
Logstash installeren
Logstash wordt gebruikt voor het platmaken van de JSON-stroomlogboeken naar een tuple-niveau van een stroom. Door de stroomlogboeken plat te maken, zijn de logboeken eenvoudiger te ordenen en te zoeken in Graylog. De volgende instructies worden gebruikt voor het installeren van Logstash in Ubuntu. Zie Installeren vanuit pakketopslagplaatsen - yum voor instructies over het installeren van dit pakket in Red Hat Enterprise Linux.
Voer de volgende opdrachten uit om Logstash te installeren:
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
Configureer Logstash om de stroomlogboeken te parseren en naar Graylog te verzenden. Maak een Logstash.conf-bestand:
sudo touch /etc/logstash/conf.d/logstash.conf
Voeg de volgende inhoud toe aan het bestand. Wijzig de
storage_account_name
,storage_access_key
encontainer
waarden zodat deze overeenkomen met de gegevens van uw opslagaccount: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 } }
Het opgegeven Logstash-configuratiebestand bestaat uit drie delen: de invoer, het filter en de uitvoer. De invoersectie wijst de invoerbron aan van de logboeken die Logstash gaat verwerken. In dit geval gebruikt u een Azure-bloginvoerinvoegtoepassing (geïnstalleerd in de volgende stappen) waarmee we toegang kunnen krijgen tot de JSON-bestanden van de netwerkbeveiligingsgroep die zijn opgeslagen in blobopslag.
De filtersectie platt vervolgens elk stroomlogboekbestand af, zodat elke afzonderlijke stroom-tuple en de bijbehorende eigenschappen een afzonderlijke Logstash-gebeurtenis worden.
Ten slotte stuurt de uitvoersectie elke Logstash-gebeurtenis door naar de Graylog-server. Wijzig het logstash-configuratiebestand, indien nodig, om aan uw specifieke behoeften te voldoen.
Notitie
In het vorige configuratiebestand wordt ervan uitgegaan dat de Graylog-server is geconfigureerd op het IP-adres van de lokale host loopback 127.0.0.1. Als dat niet het geval is, moet u de hostparameter in de uitvoersectie wijzigen in het juiste IP-adres.
Zie de Logstash-documentatie voor meer instructies over het installeren van Logstash.
De Logstash-invoerinvoegtoepassing voor Azure Blob Storage installeren
Met de Logstash-invoegtoepassing kunt u rechtstreeks toegang krijgen tot de stroomlogboeken vanuit hun aangewezen blobopslagaccount. Voer de volgende opdracht uit vanuit de standaardinstallatiemap van Logstash (in dit geval /usr/share/logstash/bin) om de invoegtoepassing te installeren:
cd /usr/share/logstash/bin
sudo ./logstash-plugin install logstash-input-azureblob
Zie de documentatie voor meer informatie over deze invoegtoepassing.
Verbinding van Logstash naar Graylog instellen
Nu u verbinding hebt gemaakt met de stroomlogboeken met behulp van Logstash en de Graylog-server hebt ingesteld, moet u Graylog configureren om de binnenkomende logboekbestanden te accepteren.
Navigeer naar de Graylog Server-webinterface met behulp van de URL die u hiervoor hebt geconfigureerd. U kunt toegang krijgen tot de interface door uw browser naar
http://<graylog-server-ip>:9000/
Als u naar de configuratiepagina wilt gaan, selecteert u het vervolgkeuzemenu Systeem in de bovenste navigatiebalk rechts en klikt u vervolgens op Invoer. U kunt ook naar
http://<graylog-server-ip>:9000/system/inputs
Als u de nieuwe invoer wilt starten, selecteert u GELF UDP in de vervolgkeuzelijst Invoer selecteren en vult u het formulier in. GELF staat voor Graylog Extended Log Format. De GELF-indeling is ontwikkeld door Graylog. Zie de Graylog-documentatie voor meer informatie over de voordelen ervan.
Zorg ervoor dat u de invoer verbindt met het IP-adres waarop u de Graylog-server hebt geconfigureerd. Het IP-adres moet overeenkomen met het hostveld van de UDP-uitvoer van het Logstash-configuratiebestand. De standaardpoort moet 12201 zijn. Zorg ervoor dat de poort overeenkomt met het poortveld in de UDP-uitvoer die is aangewezen in het logstash-configuratiebestand.
Zodra u de invoer hebt gestart, wordt deze weergegeven onder de sectie Lokale invoer , zoals wordt weergegeven in de volgende afbeelding:
Raadpleeg de documentatie voor meer informatie over graylog-berichtinvoer.
Zodra deze configuraties zijn gemaakt, kunt u Logstash starten om te beginnen met het lezen in stroomlogboeken met de volgende opdracht:
sudo systemctl start logstash.service
Zoeken in Graylog-berichten
Nadat u enige tijd hebt toegestaan voordat uw Graylog-server berichten verzamelt, kunt u de berichten doorzoeken. Als u wilt controleren welke berichten naar uw Graylog-server worden verzonden, klikt u op de pagina Invoerconfiguratie op de knop Ontvangen berichten weergeven van de GELF UDP-invoer die u hebt gemaakt. U wordt omgeleid naar een scherm dat lijkt op de volgende afbeelding:
Als u op de blauwe koppeling %{Message} klikt, wordt elk bericht uitgevouwen om de parameters van elke stroom-tuple weer te geven, zoals wordt weergegeven in de volgende afbeelding:
Standaard worden alle berichtvelden opgenomen in de zoekopdracht als u geen specifiek berichtveld selecteert waarnaar u wilt zoeken. Als u wilt zoeken naar specifieke berichten (d.w.w.: stroom tuples van een specifieke bron-IP) kunt u de Graylog-zoekquerytaal gebruiken zoals gedocumenteerd
Stroomlogboeken van netwerkbeveiligingsgroepen analyseren met Graylog
Nu Graylog het is ingesteld, kunt u een aantal van de functionaliteit ervan gebruiken om meer inzicht te krijgen in uw stroomlogboekgegevens. Een dergelijke manier is door dashboards te gebruiken om specifieke weergaven van uw gegevens te maken.
Een dashboard maken
Selecteer Dashboards in de bovenste navigatiebalk of navigeer naar
http://<graylog-server-ip>:9000/dashboards/
Klik hier op de groene knop Dashboard maken en vul het korte formulier in met de titel en beschrijving van uw dashboard. Druk op de knop Opslaan om het nieuwe dashboard te maken. U ziet een dashboard dat lijkt op de volgende afbeelding:
Widgets toevoegen
U kunt op de titel van het dashboard klikken om het te zien, maar op dit moment is het leeg, omdat we geen widgets hebben toegevoegd. Een eenvoudig en nuttig typewidget die u aan het dashboard kunt toevoegen, zijn grafieken met snelle waarden , waarin een lijst met waarden van het geselecteerde veld en de bijbehorende verdeling wordt weergegeven.
Ga terug naar de zoekresultaten van de UDP-invoer die stroomlogboeken ontvangt door Zoeken te selecteren in de bovenste navigatiebalk.
Zoek onder het deelvenster Zoekresultaten links van het scherm het tabblad Velden , waarin de verschillende velden van elk binnenkomende stroom-tuplebericht worden weergegeven.
Selecteer een gewenste parameter waarin u wilt visualiseren (in dit voorbeeld is de IP-bron geselecteerd). Als u de lijst met mogelijke widgets wilt weergeven, klikt u op de blauwe vervolgkeuzepijl links van het veld en selecteert u Snelle waarden om de widget te genereren. U ziet iets vergelijkbaars met de volgende afbeelding:
Hier kunt u de knop Toevoegen aan dashboard selecteren in de rechterbovenhoek van de widget en het bijbehorende dashboard selecteren dat u wilt toevoegen.
Ga terug naar het dashboard om de widget te zien die u zojuist hebt toegevoegd.
U kunt verschillende andere widgets, zoals histogrammen en tellingen, toevoegen aan uw dashboard om belangrijke metrische gegevens bij te houden, zoals het voorbeelddashboard dat in de volgende afbeelding wordt weergegeven:
Raadpleeg de documentatie van Graylog voor meer informatie over dashboards en de andere typen widgets.
Door Network Watcher te integreren met Graylog, hebt u nu een handige en gecentraliseerde manier om stroomlogboeken van netwerkbeveiligingsgroepen te beheren en visualiseren. Graylog heeft een aantal andere krachtige functies, zoals streams en waarschuwingen die ook kunnen worden gebruikt om stroomlogboeken verder te beheren en uw netwerkverkeer beter te begrijpen. Nu u Graylog hebt ingesteld en verbonden met Azure, kunt u doorgaan met het verkennen van de andere functionaliteit die het biedt.
Volgende stappen
Meer informatie over het visualiseren van stroomlogboeken van uw netwerkbeveiligingsgroep met Power BI door naar Logboeken van netwerkbeveiligingsgroepstromen visualiseren met Power BI te gaan.