Açık kaynak araçları kullanarak Azure Ağ İzleyicisi NSG akış günlüklerini görselleştirme

Ağ güvenlik grubu akış günlükleri, ağ güvenlik gruplarında giriş ve çıkış IP trafiğini anlamak için kullanılabilecek bilgiler sağlar. Bu akış günlükleri kural temelinde giden ve gelen akışları, akışın uygulandığı NIC'yi, akış hakkındaki 5 tanımlama grubu bilgilerini (Kaynak/Hedef IP, Kaynak/Hedef Bağlantı Noktası, Protokol) ve trafiğe izin verilip verilmediğini gösterir.

Bu akış günlüklerini el ile ayrıştırmak ve içgörü elde etmek zor olabilir. Ancak, bu verileri görselleştirmeye yardımcı olabilecek birkaç açık kaynak aracı vardır. Bu makale, Elastik Yığın kullanarak bu günlükleri görselleştirmek için bir çözüm sağlar. Bu çözüm, akış günlüklerinizi bir Kibana panosunda hızlı bir şekilde dizinlemenizi ve görselleştirmenizi sağlar.

Senaryo

Bu makalede, Elastik Yığın kullanarak ağ güvenlik grubu akış günlüklerini görselleştirmenize olanak tanıyan bir çözüm ayarlayacağız. Logstash giriş eklentisi, akış günlüklerini doğrudan akış günlüklerini içerecek şekilde yapılandırılmış depolama blobundan alır. Daha sonra Elastik Yığın kullanılarak akış günlükleri dizinlenir ve bilgileri görselleştirmek üzere bir Kibana panosu oluşturmak için kullanılır.

Diyagram, Elastik Yığın kullanarak ağ güvenlik grubu akış günlüklerini görselleştirmenize olanak tanıyan bir senaryoyu gösterir.

Adımlar

Ağ güvenlik grubu akış günlüğünü etkinleştirme

Bu senaryo için, hesabınızdaki en az bir ağ güvenlik grubunda etkinleştirilmiş ağ güvenlik grubu Akış Günlüğü'ne sahip olmanız gerekir. Ağ Güvenliği Akış Günlüklerini etkinleştirme yönergeleri için aşağıdaki Ağ güvenlik grupları için akış günlüğüne giriş makalesine bakın.

Elastik Yığını Ayarlama

NSG akış günlüklerini Elastik Yığın'a bağlayarak günlüklerimizde arama yapmamıza, grafik oluşturmamıza, analiz etmemize ve türetebileceğimiz bir Kibana panosu oluşturabiliriz.

Elasticsearch'i yükleme

Ubuntu Azure VM'lerinde Elasticsearch'i yüklemek için aşağıdaki yönergeler kullanılır. Red Hat Enterprise Linux'ta elastik arama yükleme yönergeleri için bkz . RPM ile Elasticsearch'i yükleme.

  1. Sürüm 5.0 ve üzeri sürümlerdeki Elastik Yığın java 8 gerektirir. Sürümünüzü denetlemek için komutunu java -version çalıştırın. Java yüklü değilse Azure tarafından sağlanan JDK'ler hakkındaki belgelere bakın.

  2. Sisteminiz için doğru ikili paketi indirin:

    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
    

    Diğer yükleme yöntemleri Elasticsearch Yüklemesi'nde bulunabilir

  3. Elasticsearch'in şu komutla çalıştığını doğrulayın:

    curl http://127.0.0.1:9200
    

    Aşağıdakine benzer bir yanıt görmeniz gerekir:

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

Elastik arama yükleme hakkında daha fazla yönerge için bkz . Yükleme yönergeleri.

Logstash'ı yükleme

Aşağıdaki yönergeler Logstash'ı Ubuntu'ya yüklemek için kullanılır. Bu paketi Red Hat Enterprise Linux'a yükleme yönergeleri için Paket Depolarından Yükleme - yum makalesine bakın.

  1. Logstash'ı yüklemek için aşağıdaki komutları çalıştırın:

    curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb
    sudo dpkg -i logstash-5.2.0.deb
    
  2. Ardından Logstash'i akış günlüklerine erişecek ve akış günlüklerini ayrıştıracak şekilde yapılandırmamız gerekir. Aşağıdakini kullanarak logstash.conf dosyası oluşturun:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Dosyaya aşağıdaki içeriği ekleyin:

    input {
       azureblob
         {
             storage_account_name => "mystorageaccount"
             storage_access_key => "VGhpcyBpcyBhIGZha2Uga2V5Lg=="
             container => "insights-logs-networksecuritygroupflowevent"
             codec => "json"
             # Refer https://video2.skills-academy.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"
      }
    }
    

Logstash'ı yükleme hakkında daha fazla yönerge için resmi belgelere bakın.

Azure blob depolama için Logstash giriş eklentisini yükleme

Bu Logstash eklentisi, akış günlüklerine belirlenen depolama hesaplarından doğrudan erişmenizi sağlar. Bu eklentiyi yüklemek için, varsayılan Logstash yükleme dizininden komutunu çalıştırın:

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

Logstash'ı başlatmak için komutunu çalıştırın:

sudo /etc/init.d/logstash start

Bu eklenti hakkında daha fazla bilgi için belgelere bakın.

Kibana'yı yükleme

Red Hat Enterprise Linux'ta Kibana'yı yükleme yönergeleri için bkz . Kibana'yı RPM ile yükleme. Depo paketi kullanarak Ubuntu/Debian sistemlerine Kibana yükleme hakkında yönergeler için bkz . APT deposundan Kibana'yı yükleme.

Ardından aşağıdaki yönergeler Ubuntu'da test edilmiştir ve Ubuntu'ya özgü olmadığından farklı Linux dağıtımlarında kullanılabilir.

  1. Kibana'yı yüklemek için aşağıdaki komutları çalıştırın:

    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. Kibana'yı çalıştırmak için şu komutları kullanın:

    cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana
    
  3. Kibana web arabiriminizi görüntülemek için http://localhost:5601

  4. Bu senaryoda, akış günlükleri için kullanılan dizin deseni "nsg-flow-logs" şeklindedir. Logstash.conf dosyanızın "output" bölümünde dizin desenini değiştirebilirsiniz.

  5. Kibana panosunu uzaktan görüntülemek istiyorsanız 5601 numaralı bağlantı noktasına erişime izin veren bir gelen NSG kuralı oluşturun.

Kibana panosu oluşturma

Uyarılarınızdaki eğilimleri ve ayrıntıları görüntülemek için örnek bir pano aşağıdaki resimde gösterilmiştir:

Şekil 1

Pano dosyasını, görselleştirme dosyasını ve kaydedilen arama dosyasını indirin.

Kibana'nın Yönetim sekmesinde Kayıtlı Nesneler'e gidin ve üç dosyayı da içeri aktarın. Ardından Pano sekmesinden örnek panoyu açıp yükleyebilirsiniz.

Ayrıca kendi ilgilendiğiniz ölçümlere göre uyarlanmış kendi görselleştirmelerinizi ve panolarınızı oluşturabilirsiniz. Kibana'nın resmi belgelerinden Kibana görselleştirmeleri oluşturma hakkında daha fazla bilgi edinin.

NSG akış günlüklerini görselleştirme

Örnek pano, akış günlüklerinin çeşitli görselleştirmelerini sağlar:

  1. Karara/Zamana Göre Akışlar - zaman aralığı içindeki akış sayısını gösteren zaman serisi grafikleri. Bu görselleştirmelerin zaman ve yayılma birimini düzenleyebilirsiniz. Karara Göre Akışlar verilen izin verme veya reddetme kararlarının oranını gösterirken, Yöne Göre Akışlar gelen ve giden trafiğin oranını gösterir. Bu görsellerle zaman içindeki trafik eğilimlerini inceleyebilir ve ani artışları veya olağan dışı desenleri arayabilirsiniz.

    Zaman içinde karara ve yöne göre akışlar içeren örnek bir panoyu gösteren ekran görüntüsü.

  2. Hedefe/Kaynak Bağlantı Noktasına Göre Akışlar – akışların ilgili bağlantı noktalarına dökümünü gösteren pasta grafikler. Bu görünümle, en yaygın kullanılan bağlantı noktalarınızı görebilirsiniz. Pasta grafiğin içindeki belirli bir bağlantı noktasına tıklarsanız, panonun geri kalanı bu bağlantı noktasının akışlarına göre filtrelenir.

    Hedefe ve kaynak bağlantı noktasına göre akışların yer aldığı örnek bir panoyu gösteren ekran görüntüsü.

  3. Akış Sayısı ve En Erken Günlük Süresi – kaydedilen akış sayısını ve yakalanan en erken günlüğün tarihini gösteren ölçümler.

    Akış sayısını ve en erken günlük süresini içeren örnek bir panoyu gösteren ekran görüntüsü.

  4. NSG ve Kurala göre akışlar – her NSG içindeki akışların dağılımını ve her NSG içindeki kuralların dağılımını gösteren bir çubuk grafik. en çok trafiği oluşturan NSG'yi ve kuralları görebilirsiniz.

    N S G ve kuralına göre akışların yer aldığı örnek panoyu gösteren ekran görüntüsü.

  5. İlk 10 Kaynak/Hedef IP – ilk 10 kaynak ve hedef IP'yi gösteren çubuk grafikler. Bu grafikleri en çok veya daha az üst IP'yi gösterecek şekilde ayarlayabilirsiniz. Buradan, en sık gerçekleşen IP'leri ve her IP'ye yönelik trafik kararının (izin verme veya reddetme) yapıldığını görebilirsiniz.

    İlk on kaynak ve hedef I P adresine göre akışların yer aldığı örnek bir panoyu gösteren ekran görüntüsü.

  6. Akış Demetleri – Bu tablo, her akış tanımlama grubu içinde yer alan bilgileri ve buna karşılık gelen NGS ve kuralı gösterir.

    Tablodaki akış demetlerini gösteren ekran görüntüsü.

Panonun en üstündeki sorgu çubuğunu kullanarak abonelik kimliği, kaynak grupları, kural veya diğer ilgi çekici değişken gibi akışların herhangi bir parametresine göre panoyu filtreleyebilirsiniz. Kibana'nın sorguları ve filtreleri hakkında daha fazla bilgi için resmi belgelere bakın

Sonuç

Ağ güvenlik grubu akış günlüklerini Elastic Stack ile birleştirerek ağ trafiğimizi görselleştirmenin güçlü ve özelleştirilebilir bir yolunu bulduk. Bu panolar, ağ trafiğiniz hakkında hızla içgörüler edinmenize ve paylaşmanıza, olası anomalileri filtrelemenize ve araştırmanıza olanak tanır. Kibana'yı kullanarak bu panoları uyarlayabilir ve güvenlik, denetim ve uyumluluk gereksinimlerini karşılayacak belirli görselleştirmeler oluşturabilirsiniz.

Sonraki adımlar

Power BI ile NSG akış günlüklerinizi görselleştirme sayfasını ziyaret ederek NSG akış günlüklerinizi Power BI ile görselleştirmeyi öğrenin