Aracılığıyla paylaş


Ağ İzleyicisi ve Graylog kullanarak Azure'da ağ güvenlik grubu akış günlüklerini yönetme ve analiz etme

Ağ güvenlik grubu akış günlükleri , Azure ağ arabirimleri için giriş ve çıkış IP trafiğini anlamak için kullanabileceğiniz bilgiler sağlar. Akış günlükleri ağ güvenlik grubu başına kural temelinde giden ve gelen akışları, akışın uygulandığı ağ arabirimini, akışla ilgili 5 tanımlama grubu bilgilerini (Kaynak/Hedef IP, Kaynak/Hedef Bağlantı Noktası, Protokol) ve trafiğe izin verilip verilmediğini gösterir.

Akış günlüğü etkinken ağınızda birçok ağ güvenlik grubu olabilir. Akış günlüğünün etkinleştirildiği birkaç ağ güvenlik grubu, günlüklerinizi ayrıştırmanızı ve günlüklerinizden içgörüler elde etmenizi zahmetli hale getirir. Bu makalede, bir açık kaynak günlük yönetimi ve çözümleme aracı olan Graylog ve açık kaynak sunucu tarafı veri işleme işlem hattı Logstash kullanılarak bu ağ güvenlik grubu akış günlüklerini merkezi olarak yönetmeye yönelik bir çözüm sağlanır.

Uyarı

Aşağıdaki adımlar akış günlükleri sürüm 1 ile çalışır. Ayrıntılar için bkz . Ağ güvenlik grupları için akış günlüğüne giriş. Aşağıdaki yönergeler değişiklik yapılmadan günlük dosyalarının 2. sürümüyle çalışmaz.

Senaryo

Ağ güvenlik grubu akış günlükleri Ağ İzleyicisi kullanılarak etkinleştirilir. Akış günlükleri Azure blob depolama alanına akar. Blob depolamadan akış günlüklerine bağlanmak ve bunları Graylog'a göndermek için logstash eklentisi kullanılır. Akış günlükleri Graylog'da depolandıktan sonra analiz edilebilir ve özelleştirilmiş panolar halinde görselleştirilebilir.

Graylog iş akışı

Yükleme 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 ağ güvenlik grubu akış günlüğünü etkinleştirmiş olmanız gerekir. Ağ güvenlik grubu 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.

Graylog'un ayarlanması

Bu örnekte hem Graylog hem de Logstash, Azure'da dağıtılan bir Ubuntu Sunucusunda yapılandırılır.

Bu örnekte en düşük Graylog kurulumu (graylog'un tek bir örneği) kullanılır, ancak Graylog, sisteminize ve üretim gereksinimlerinize bağlı olarak kaynaklar arasında ölçeklendirilecek şekilde tasarlanabilir. Mimari konuları veya derin mimari kılavuzu hakkında daha fazla bilgi için Graylog belgelerine ve mimari kılavuzuna bakın.

Graylog, platformunuza ve tercihlerinize bağlı olarak birçok şekilde yüklenebilir. Olası yükleme yöntemlerinin tam listesi için Graylog'un resmi belgelerine bakın. Graylog sunucu uygulaması Linux dağıtımlarında çalışır ve aşağıdaki önkoşullara sahiptir:

Logstash'ı yükleme

Logstash, JSON biçimli akış günlüklerini akış tanımlama grubu düzeyine düzleştirme amacıyla kullanılır. Akış günlüklerini düzleştirme, günlüklerin Graylog'da düzenlenmesini ve aranmasını kolaylaştırır. 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 bkz . Paket Depolarından Yükleme - yum.

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

    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. Logstash'i akış günlüklerini ayrıştıracak ve Graylog'a gönderecek şekilde yapılandırın. Logstash.conf dosyası oluşturma:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Dosyaya aşağıdaki içeriği ekleyin. storage_account_name, storage_access_keyve container değerlerini depolama hesabı ayrıntılarınızı yansıtacak şekilde değiştirin:

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

    Sağlanan Logstash yapılandırma dosyası üç bölümden oluşur: giriş, filtre ve çıkış. Giriş bölümünde Logstash'in işleyecekleri günlüklerin giriş kaynağı gösterilir. Bu durumda, blob depolamada depolanan ağ güvenlik grubu akış günlüğü JSON dosyalarına erişmemizi sağlayan bir Azure blog giriş eklentisi (sonraki adımlarda yüklü) kullanacaksınız.

Filtre bölümü daha sonra her akış günlüğü dosyasını düzleştirerek her akış tanımlama grubu ve ilişkili özellikleri ayrı bir Logstash olayına dönüşür.

Son olarak, çıkış bölümü her Logstash olayını Graylog sunucusuna iletir. Özel gereksinimlerinize uyacak şekilde Logstash yapılandırma dosyasını gerektiği gibi değiştirin.

Not

Önceki yapılandırma dosyası, Graylog sunucusunun yerel ana bilgisayar geri döngü IP adresi 127.0.0.1 üzerinde yapılandırıldığını varsayar. Aksi takdirde, çıkış bölümündeki konak parametresini doğru IP adresiyle değiştirdiğinizden emin olun.

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

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

Logstash eklentisi, akış günlüklerine belirlenen blob depolama hesabından doğrudan erişmenizi sağlar. Eklentiyi yüklemek için varsayılan Logstash yükleme dizininden (bu örnekte /usr/share/logstash/bin) aşağıdaki komutu çalıştırın:

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

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

Logstash'ten Graylog'a bağlantıyı ayarlama

Logstash kullanarak akış günlüklerine bağlantı kurduğunuza ve Graylog sunucusunu ayarladığınıza göre, gelen günlük dosyalarını kabul etmek için Graylog'ı yapılandırmanız gerekir.

  1. Yapılandırdığınız URL'yi kullanarak Graylog Server web arabiriminize gidin. Tarayıcınızı şu şekilde yönlendirerek arabirime erişebilirsiniz: http://<graylog-server-ip>:9000/

  2. Yapılandırma sayfasına gitmek için, sağ üst gezinti çubuğunda Sistem açılan menüsünü seçin ve girişler'e tıklayın. Alternatif olarak, http://<graylog-server-ip>:9000/system/inputs

    Başlarken

  3. Yeni girişi başlatmak için Giriş seçin açılan listesinde GELF UDP'yi seçin ve formu doldurun. GELF, Graylog Genişletilmiş Günlük Biçimi anlamına gelir. GELF biçimi Graylog tarafından geliştirilmiştir. Avantajları hakkında daha fazla bilgi edinmek için Graylog belgelerine bakın.

    Girişi Graylog sunucunuzu yapılandırdığınız IP'ye bağladığınızdan emin olun. IP adresi, Logstash yapılandırma dosyasının UDP çıkışının konak alanıyla eşleşmelidir. Varsayılan bağlantı noktası 12201 olmalıdır. Bağlantı noktasının Logstash yapılandırma dosyasında belirlenen UDP çıkışındaki bağlantı noktası alanıyla eşleştiğinden emin olun.

    Giriş başlatma ve bulma seçeneklerini içeren Graylog Girişlerini gösteren ekran görüntüsü.

    Girişi başlattıktan sonra, aşağıdaki resimde gösterildiği gibi Yerel girişler bölümünün altında gösterildiğini görmeniz gerekir:

    Başlattığınız girişi içeren Yerel girişler bölümünü gösteren ekran görüntüsü.

    Graylog ileti girişleri hakkında daha fazla bilgi edinmek için belgelere bakın.

  4. Bu yapılandırmalar yapıldıktan sonra Logstash'i başlatarak akış günlüklerinde okumaya başlamak için şu komutu kullanabilirsiniz: sudo systemctl start logstash.service.

Graylog iletileri arasında arama

Graylog sunucunuzun iletileri toplaması için biraz zaman verdikten sonra, iletilerde arama yapabiliyorsunuz. Graylog sunucunuza gönderilen iletileri denetlemek için, Girişler yapılandırma sayfasında oluşturduğunuz GELF UDP girişinin "Alınan iletileri göster" düğmesine tıklayın. Aşağıdaki resme benzer bir ekrana yönlendirilirsiniz:

Arama sonucu, Histogram ve İletiler'i görüntüleyen Graylog sunucusunu gösteren ekran görüntüsü.

Mavi "%{Message}" bağlantısına tıklanması, aşağıdaki resimde gösterildiği gibi her bir iletinin her akış tanımlama grubunun parametrelerini gösterecek şekilde genişletir:

Graylog sunucusundan ileti ayrıntılarını gösteren ekran görüntüsü.

Varsayılan olarak, aranacak belirli bir ileti alanını seçmezseniz tüm ileti alanları aramaya eklenir. Belirli iletileri (belirli bir kaynak IP'den akış demetleri) aramak istiyorsanız, Graylog arama sorgu dilini belgelendiği gibi kullanabilirsiniz

Graylog kullanarak ağ güvenlik grubu akış günlüklerini analiz etme

Artık Graylog'un çalıştığına göre, akış günlüğü verilerinizi daha iyi anlamak için bazı işlevlerini kullanabilirsiniz. Bunun bir yolu, verilerinizin belirli görünümlerini oluşturmak için panoları kullanmaktır.

Pano oluşturma

  1. Üst gezinti çubuğunda Panolar'ı seçin veyahttp://<graylog-server-ip>:9000/dashboards/

  2. Buradan yeşil Pano oluştur düğmesine tıklayın ve kısa formu panonuzun başlığı ve açıklamasıyla doldurun. Yeni panoyu oluşturmak için Kaydet düğmesine basın. Aşağıdaki resme benzer bir pano görürsünüz:

    Pano oluşturma ve düzenleme seçeneklerini içeren Graylog sunucusu Panoları'nı gösteren ekran görüntüsü.

Pencere öğeleri ekleme

Panonun başlığına tıklayarak panoyu görebilirsiniz, ancak şu anda hiçbir pencere öğesi eklemediğimiz için boş. Panoya eklemek için kolay ve kullanışlı bir pencere öğesi, seçilen alanın değerlerinin listesini ve bunların dağıtımını görüntüleyen Hızlı Değerler grafikleridir.

  1. Üst gezinti çubuğundan Ara'yı seçerek akış günlüklerini alan UDP girişinin arama sonuçlarına geri dönün.

  2. Ekranın sol tarafındaki Arama sonucu panelinin altında, gelen her akış tanımlama grubu iletisinin çeşitli alanlarını listeleyen Alanlar sekmesini bulun.

  3. Görselleştirilecek istediğiniz parametreyi seçin (bu örnekte, IP kaynağı seçilidir). Olası pencere öğelerinin listesini göstermek için, alanın sol kısmındaki mavi açılan oka tıklayın ve ardından Pencere öğesini oluşturmak için Hızlı değerler'i seçin. Aşağıdaki resme benzer bir şey görmeniz gerekir:

    Kaynak IP

  4. Buradan, pencere öğesinin sağ üst köşesindeki Panoya ekle düğmesini ve eklenecek ilgili panoyu seçebilirsiniz.

  5. Yeni eklediğiniz pencere öğesini görmek için panoya geri dönün.

    Aşağıdaki resimde gösterilen örnek pano gibi önemli ölçümleri izlemek için panonuza histogramlar ve sayımlar gibi çeşitli diğer pencere öğeleri ekleyebilirsiniz:

    Flowlogs panosu

    Panolar ve diğer pencere öğesi türleri hakkında daha fazla açıklama için Graylog'un belgelerine bakın.

Ağ İzleyicisi Graylog ile tümleştirerek artık ağ güvenlik grubu akış günlüklerini yönetmek ve görselleştirmek için kullanışlı ve merkezi bir yönteme sahip olursunuz. Graylog, akış günlüklerini daha fazla yönetmek ve ağ trafiğinizi daha iyi anlamak için de kullanılabilecek akışlar ve uyarılar gibi başka güçlü özelliklere sahiptir. Graylog'u ayarladığınıza ve Azure'a bağlandığınıza göre, sunduğu diğer işlevleri keşfetmeye devam edebilirsiniz.

Sonraki adımlar

Power BI ile ağ güvenlik grubu akış günlüklerini görselleştirme sayfasını ziyaret ederek Power BI ile ağ güvenlik grubu akış günlüklerinizi görselleştirmeyi öğrenin.