Dela via


Visualisera NSG-flödesloggar från Azure Network Watcher med hjälp av verktyg med öppen källkod

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

Dessa flödesloggar kan vara svåra att parsa manuellt och få insikter från. Det finns dock flera öppen källkod verktyg som kan hjälpa dig att visualisera dessa data. Den här artikeln innehåller en lösning för att visualisera dessa loggar med elastic stack, vilket gör att du snabbt kan indexera och visualisera dina flödesloggar på en Kibana-instrumentpanel.

Scenario

I den här artikeln konfigurerar vi en lösning som gör att du kan visualisera flödesloggar för nätverkssäkerhetsgrupp med hjälp av Elastic Stack. Ett Plugin-program för Logstash-indata hämtar flödesloggarna direkt från lagringsbloben som konfigurerats för att innehålla flödesloggarna. Med elastic stack indexeras flödesloggarna och används sedan för att skapa en Kibana-instrumentpanel för att visualisera informationen.

Diagram visar ett scenario där du kan visualisera flödesloggar för nätverkssäkerhetsgrupp med hjälp av Elastic Stack.

Steg

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

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

Konfigurera Elastic Stack

Genom att ansluta NSG-flödesloggar till Elastic Stack kan vi skapa en Kibana-instrumentpanel som gör att vi kan söka, diagram, analysera och härleda insikter från våra loggar.

Installera Elasticsearch

Följande instruktioner används för att installera Elasticsearch på virtuella Ubuntu Azure-datorer. Anvisningar om hur du installerar elastisk sökning i Red Hat Enterprise Linux finns i Installera Elasticsearch med RPM.

  1. Elastic Stack från version 5.0 och senare kräver Java 8. Kör kommandot java -version för att kontrollera din version. Om du inte har Java installerat kan du läsa dokumentationen på de Azure-supporerade JDK:erna.

  2. Ladda ned rätt binärpaket för systemet:

    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
    

    Andra installationsmetoder finns på Elasticsearch Installation

  3. Kontrollera att Elasticsearch körs med kommandot:

    curl http://127.0.0.1:9200
    

    Du bör se ett svar som liknar följande:

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

Mer information om hur du installerar elastisk sökning finns i Installationsanvisningar.

Installera Logstash

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 artikeln Installera från paketlagringsplatser – yum .

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

    curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb
    sudo dpkg -i logstash-5.2.0.deb
    
  2. Därefter måste vi konfigurera Logstash för att komma åt och parsa flödesloggarna. Skapa en logstash.conf-fil med hjälp av:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Lägg till följande innehåll i filen:

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

Mer information om hur du installerar Logstash finns i den officiella dokumentationen.

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

Med det här Logstash-plugin-programmet kan du komma åt flödesloggarna direkt från deras avsedda lagringskonto. Om du vill installera det här plugin-programmet kör du kommandot från standardkatalogen för Logstash-installationen:

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

Starta Logstash genom att köra kommandot:

sudo /etc/init.d/logstash start

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

Installera Kibana

Anvisningar om hur du installerar Kibana i Red Hat Enterprise Linux finns i Installera Kibana med RPM. Anvisningar om hur du installerar Kibana i Ubuntu/Debian-system med hjälp av ett lagringsplatspaket finns i Installera Kibana från APT-lagringsplatsen.

Sedan testades följande instruktioner i Ubuntu och kunde användas i olika Linux-distributioner eftersom de inte är Ubuntu-specifika.

  1. Kör följande kommandon för att installera 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
    
  2. Om du vill köra Kibana använder du kommandona:

    cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana
    
  3. Om du vill visa ditt Kibana-webbgränssnitt går du till http://localhost:5601

  4. I det här scenariot är indexmönstret som används för flödesloggarna "nsg-flow-logs". Du kan ändra indexmönstret i avsnittet "output" i filen logstash.conf.

  5. Om du vill visa Kibana-instrumentpanelen via en fjärranslutning skapar du en inkommande NSG-regel som tillåter åtkomst till port 5601.

Skapa en Kibana-instrumentpanel

En exempelinstrumentpanel för att visa trender och information i dina aviseringar visas i följande bild:

bild 1

Ladda ned instrumentpanelsfilen, visualiseringsfilen och den sparade sökfilen.

Under fliken Hantering i Kibana navigerar du till Sparade objekt och importerar alla tre filerna. På fliken Instrumentpanel kan du öppna och läsa in exempelinstrumentpanelen.

Du kan också skapa egna visualiseringar och instrumentpaneler som är skräddarsydda för mått av eget intresse. Läs mer om att skapa Kibana-visualiseringar från Kibanas officiella dokumentation.

Visualisera NSG-flödesloggar

Exempelinstrumentpanelen innehåller flera visualiseringar av flödesloggarna:

  1. Flöden efter beslut/riktning över tid – tidsseriediagram som visar antalet flöden under tidsperioden. Du kan redigera tidsenheten och intervallet för båda dessa visualiseringar. Flöden efter beslut visar andelen beslut som fattats om att tillåta eller neka, medan Flöden efter riktning visar andelen inkommande och utgående trafik. Med dessa visuella objekt kan du undersöka trafiktrender över tid och leta efter toppar eller ovanliga mönster.

    Skärmbild som visar en exempelinstrumentpanel med flöden efter beslut och riktning över tid.

  2. Flöden efter mål-/källport – cirkeldiagram som visar uppdelningen av flöden till respektive port. Med den här vyn kan du se dina vanligaste portar. Om du klickar på en specifik port i cirkeldiagrammet filtrerar resten av instrumentpanelen ned till flöden i den porten.

    Skärmbild som visar en exempelinstrumentpanel med flöden efter mål och källport.

  3. Antal flöden och tidigaste loggtid – mått som visar antalet flöden som registrerats och datumet för den tidigaste loggen som registrerats.

    Skärmbild som visar en exempelinstrumentpanel med antalet flöden och den tidigaste loggtiden.

  4. Flöden efter NSG och regel – ett stapeldiagram som visar fördelningen av flöden inom varje NSG och fördelningen av regler inom varje NSG. kan du se vilka NSG och regler som genererade mest trafik.

    Skärmbild som visar en exempelinstrumentpanel med flöden efter N S G och regel.

  5. De 10 främsta käll-/mål-IP-adresserna – stapeldiagram som visar de 10 främsta käll- och mål-IP-adresserna. Du kan justera dessa diagram för att visa fler eller mindre ip-adresser. Härifrån kan du se de vanligaste IP-adresserna och trafikbeslutet (tillåt eller neka) som fattas mot varje IP-adress.

    Skärmbild som visar en exempelinstrumentpanel med flöden efter de tio främsta käll- och mål-I P-adresserna.

  6. Flow Tuples – den här tabellen visar information som finns i varje flödestupplare och motsvarande NGS och regel.

    Skärmbild som visar flödestupplar i en tabell.

Med hjälp av frågefältet överst på instrumentpanelen kan du filtrera ned instrumentpanelen baserat på valfri parameter i flödena, till exempel prenumerations-ID, resursgrupper, regel eller någon annan variabel av intresse. Mer information om Kibanas frågor och filter finns i den officiella dokumentationen

Slutsats

Genom att kombinera nätverkssäkerhetsgruppens flödesloggar med Elastic Stack har vi kommit på ett kraftfullt och anpassningsbart sätt att visualisera vår nätverkstrafik. Med de här instrumentpanelerna kan du snabbt få och dela insikter om nätverkstrafiken och filtrera ned och undersöka eventuella avvikelser. Med Kibana kan du skräddarsy dessa instrumentpaneler och skapa specifika visualiseringar för att uppfylla alla säkerhets-, gransknings- och efterlevnadsbehov.

Nästa steg

Lär dig hur du visualiserar NSG-flödesloggar med Power BI genom att gå till Visualisera NSG-flödesloggar med Power BI