Dela via


Hantera och analysera flödesloggar för nätverkssäkerhetsgrupper i Azure med hjälp av Network Watcher och Graylog

Flödesloggar för nätverkssäkerhetsgrupper innehåller information som du kan använda för att förstå inkommande och utgående IP-trafik för Azure-nätverksgränssnitt. Flödesloggar visar utgående och inkommande flöden per regel för nätverkssäkerhetsgrupp, nätverksgränssnittet som flödet gäller för, 5-tupplarsinformation (käll-/mål-IP, käll-/målport, protokoll) om flödet och om trafiken tilläts eller nekades.

Du kan ha många nätverkssäkerhetsgrupper i nätverket med flödesloggning aktiverat. Flera nätverkssäkerhetsgrupper med flödesloggning aktiverat kan göra det besvärligt att parsa och få insikter från dina loggar. Den här artikeln innehåller en lösning för att centralt hantera dessa flödesloggar för nätverkssäkerhetsgrupper med hjälp av Graylog, ett öppen källkod logghanterings- och analysverktyg, och Logstash, en öppen källkod databearbetningspipeline på serversidan.

Varning

Följande steg fungerar med flödesloggar version 1. Mer information finns i Introduktion till flödesloggning för nätverkssäkerhetsgrupper. Följande instruktioner fungerar inte med version 2 av loggfilerna, utan ändringar.

Scenario

Flödesloggar för nätverkssäkerhetsgrupp aktiveras med Network Watcher. Flödesloggar flödar in till Azure Blob Storage. Ett Logstash-plugin-program används för att ansluta och bearbeta flödesloggar från Blob Storage och skicka dem till Graylog. När flödesloggarna har lagrats i Graylog kan de analyseras och visualiseras till anpassade instrumentpaneler.

Graylog-arbetsflöde

Installationssteg

Aktivera flödesloggning för nätverkssäkerhetsgrupp

I det här scenariot måste du ha nätverkssäkerhetsgruppens flödesloggning aktiverad på minst en nätverkssäkerhetsgrupp i ditt konto. Anvisningar om hur du aktiverar flödesloggar för nätverkssäkerhetsgrupper finns i följande artikel Introduktion till flödesloggning för nätverkssäkerhetsgrupper.

Konfigurera Graylog

I det här exemplet konfigureras både Graylog och Logstash på en Ubuntu-server som distribueras i Azure.

  • I dokumentationen från Graylog finns stegvisa instruktioner om hur du installerar på Ubuntu.
  • Se till att även konfigurera Graylog-webbgränssnittet genom att följa dokumentationen.

I det här exemplet används den minsta Graylog-konfigurationen (dvs. en enskild instans av en Graylog), men Graylog kan utformas för att skala över resurser beroende på system- och produktionsbehov. Mer information om arkitekturöverväganden eller en djup arkitekturguide finns i Graylogs dokumentation och arkitekturguide.

Graylog kan installeras på många sätt, beroende på din plattform och dina inställningar. En fullständig lista över möjliga installationsmetoder finns i Graylogs officiella dokumentation. Graylog-serverprogrammet körs på Linux-distributioner och har följande förutsättningar:

Installera Logstash

Logstash används för att platta ut JSON-formaterade flödesloggar till en flödestupplarnivå. Genom att platta ut flödesloggarna blir loggarna enklare att ordna och söka i Graylog. Följande instruktioner används för att installera Logstash i Ubuntu. Anvisningar om hur du installerar det här paketet i Red Hat Enterprise Linux finns i Installera från paketlagringsplatser – yum.

  1. Installera Logstash genom att köra följande kommandon:

    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
    
  2. Konfigurera Logstash för att parsa flödesloggarna och skicka dem till Graylog. Skapa en Logstash.conf-fil:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Lägg till följande innehåll i filen. storage_account_nameÄndra värdena , storage_access_keyoch container så att de återspeglar lagringskontots information:

     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
         }
     }
    

    Den angivna Logstash-konfigurationsfilen består av tre delar: indata, filter och utdata. Indataavsnittet anger indatakällan för loggarna som Logstash ska bearbeta – i det här fallet ska du använda ett Plugin-program för Azure-bloggindata (installeras i nästa steg) som gör att vi kan komma åt JSON-filerna för nätverkssäkerhetsgruppens flödeslogg som lagras i bloblagring.

Filteravsnittet plattar sedan ut varje flödesloggfil så att varje enskild flödestupplare och dess associerade egenskaper blir en separat Logstash-händelse.

Slutligen vidarebefordrar utdataavsnittet varje Logstash-händelse till Graylog-servern. För att passa dina specifika behov ändrar du Logstash-konfigurationsfilen efter behov.

Kommentar

Den tidigare konfigurationsfilen förutsätter att Graylog-servern har konfigurerats på ip-adressen 127.0.0.1 för den lokala värden. Om inte, se till att ändra värdparametern i utdataavsnittet till rätt IP-adress.

Mer information om hur du installerar Logstash finns i Logstash-dokumentationen.

Installera plugin-programmet logstash-indata för Azure Blob Storage

Med Logstash-plugin-programmet kan du komma åt flödesloggarna direkt från deras avsedda bloblagringskonto. Om du vill installera plugin-programmet från standardkatalogen för Logstash-installationen (i det här fallet /usr/share/logstash/bin) kör du följande kommando:

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

Mer information om det här plugin-programmet finns i dokumentationen.

Konfigurera anslutning från Logstash till Graylog

Nu när du har upprättat en anslutning till flödesloggarna med Logstash och konfigurerat Graylog-servern måste du konfigurera Graylog för att acceptera inkommande loggfiler.

  1. Gå till webbgränssnittet för Graylog Server med hjälp av den URL som du har konfigurerat för den. Du kan komma åt gränssnittet genom att dirigera webbläsaren till http://<graylog-server-ip>:9000/

  2. Om du vill navigera till konfigurationssidan väljer du den nedrullningsbara menyn System i det övre navigeringsfältet till höger och klickar sedan på Indata. Du kan också navigera till http://<graylog-server-ip>:9000/system/inputs

    Komma igång

  3. Starta de nya indata genom att välja GELF UDP i listrutan Välj indata och sedan fylla i formuläret. GELF står för Graylog Extended Log Format. GELF-formatet har utvecklats av Graylog. Mer information om dess fördelar finns i Graylog-dokumentationen.

    Se till att binda indata till den IP-adress som du konfigurerade Graylog-servern på. IP-adressen ska matcha värdfältet i UDP-utdata för Logstash-konfigurationsfilen. Standardporten ska vara 12201. Kontrollera att porten matchar portfältet i UDP-utdata som anges i Logstash-konfigurationsfilen.

    Skärmbild som visar Graylog-indata med alternativ för att starta och hitta indata.

    När du startar indata bör du se det under avsnittet Lokala indata , som du ser i följande bild:

    Skärmbild som visar avsnittet Lokala indata som innehåller de indata som du startade.

    Mer information om indata för Graylog-meddelanden finns i dokumentationen.

  4. När dessa konfigurationer har gjorts kan du starta Logstash för att börja läsa i flödesloggar med följande kommando: sudo systemctl start logstash.service.

Sök igenom Graylog-meddelanden

När du har tillåtit en viss tid för Graylog-servern att samla in meddelanden kan du söka igenom meddelandena. Om du vill kontrollera meddelandena som skickas till Graylog-servern klickar du på knappen Visa mottagna meddelanden i GELF UDP-indata som du skapade från konfigurationssidan Indata. Du dirigeras till en skärm som liknar följande bild:

Skärmbild som visar Graylog-servern som visar sökresultat, histogram och meddelanden.

Om du klickar på den blå länken %{Message} expanderas varje meddelande för att visa parametrarna för varje flödestupplar, enligt följande bild:

Skärmbild som visar meddelandeinformation från Graylog-servern.

Som standard inkluderas alla meddelandefält i sökningen om du inte väljer ett specifikt meddelandefält att söka efter. Om du vill söka efter specifika meddelanden (t.ex. flödestupplar från en specifik käll-IP) kan du använda frågespråket för Graylog-sökning som dokumenterat

Analysera flödesloggar för nätverkssäkerhetsgrupp med hjälp av Graylog

Nu när Graylog har konfigurerats kan du använda några av dess funktioner för att bättre förstå dina flödesloggdata. Ett sådant sätt är att använda instrumentpaneler för att skapa specifika vyer av dina data.

Skapa en instrumentpanel

  1. I det övre navigeringsfältet väljer du Instrumentpaneler eller navigerar till http://<graylog-server-ip>:9000/dashboards/

  2. Därifrån klickar du på den gröna knappen Skapa instrumentpanel och fyller i det korta formuläret med instrumentpanelens rubrik och beskrivning. Tryck på knappen Spara för att skapa den nya instrumentpanelen. Du ser en instrumentpanel som liknar följande bild:

    Skärmbild som visar Graylog-serverinstrumentpaneler med alternativ för att skapa och redigera instrumentpaneler.

Lägga till widgetar

Du kan klicka på instrumentpanelens rubrik för att se den, men just nu är den tom eftersom vi inte har lagt till några widgetar. En enkel och användbar typwidget att lägga till på instrumentpanelen är Snabbvärden-diagram , som visar en lista med värden för det valda fältet och deras distribution.

  1. Gå tillbaka till sökresultaten för UDP-indata som tar emot flödesloggar genom att välja Sök i det övre navigeringsfältet.

  2. Under panelen Sökresultat till vänster på skärmen letar du upp fliken Fält, som visar de olika fälten i varje inkommande flödestupppelmeddelande.

  3. Välj valfri önskad parameter som du vill visualisera (i det här exemplet är IP-källan markerad). Om du vill visa listan över möjliga widgetar klickar du på den blå listrutepilen till vänster om fältet och väljer sedan Snabbvärden för att generera widgeten. Du bör se något som liknar följande bild:

    Käll-IP-adress

  4. Därifrån kan du välja knappen Lägg till på instrumentpanelen i det övre högra hörnet av widgeten och välja motsvarande instrumentpanel att lägga till.

  5. Gå tillbaka till instrumentpanelen för att se widgeten som du precis har lagt till.

    Du kan lägga till en mängd andra widgetar som histogram och antal till instrumentpanelen för att hålla reda på viktiga mått, till exempel exempel instrumentpanelen som visas i följande bild:

    Instrumentpanel för flödesloggar

    Mer information om instrumentpaneler och andra typer av widgetar finns i Graylogs dokumentation.

Genom att integrera Network Watcher med Graylog har du nu ett bekvämt och centraliserat sätt att hantera och visualisera flödesloggar för nätverkssäkerhetsgrupper. Graylog har ett antal andra kraftfulla funktioner som strömmar och aviseringar som också kan användas för att ytterligare hantera flödesloggar och bättre förstå nätverkstrafiken. Nu när du har konfigurerat och anslutit Graylog till Azure kan du fortsätta utforska de andra funktionerna som den erbjuder.

Nästa steg

Lär dig hur du visualiserar dina flödesloggar för nätverkssäkerhetsgrupper med Power BI genom att gå till Visualisera loggar för nätverkssäkerhetsgruppflöden med Power BI.