Açık kaynak araçları kullanarak Azure Ağ İzleyicisi NSG akış günlüklerini görselleştirme
Önemli
30 Eylül 2027'de ağ güvenlik grubu (NSG) akış günlükleri kullanımdan kaldırılacaktır. Bu kullanımdan kaldırmanın bir parçası olarak 30 Haziran 2025'den itibaren yeni NSG akış günlükleri oluşturamayacaksınız. NSG akış günlüklerinin sınırlamalarını aşan sanal ağ akış günlüklerine geçiş yapmanızı öneririz. Kullanımdan kaldırma tarihinden sonra NSG akış günlükleriyle etkinleştirilen trafik analizi artık desteklenmeyecektir ve aboneliklerinizdeki mevcut NSG akış günlükleri kaynakları silinir. Ancak NSG akış günlükleri kayıtları silinmez ve ilgili bekletme ilkelerini izlemeye devam eder. Daha fazla bilgi için resmi duyuruya bakın.
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.
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.
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.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
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.
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
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
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://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" } }
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.
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
Kibana'yı çalıştırmak için şu komutları kullanın:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Kibana web arabiriminizi görüntülemek için
http://localhost:5601
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.
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:
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:
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.
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.
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.
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.
İ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.
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.
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