Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
30 września 2027 r. dzienniki przepływów Network Security Group (NSG) przestaną być wykorzystywane. W ramach tego zaprzestania nie będzie można już tworzyć nowych dzienników przepływów NSG po 30 czerwca 2025 r. Zalecamy migrację do dzienników przepływów sieci wirtualnej, które pozwalają wyeliminować ograniczenia dzienników przepływów NSG. Po dacie wycofania analiza ruchu wykorzystująca dzienniki przepływów NSG nie będzie już obsługiwana, a istniejące zasoby dzienników przepływów NSG w Twoich subskrypcjach zostaną usunięte. Jednak zapisy dzienników przepływu NSG nie zostaną usunięte i będą nadal kontynuować przestrzeganie ich odpowiednich zasad przechowywania. Więcej informacji znajdziesz w oficjalnym ogłoszeniu.
Dzienniki przepływu Sieciowej Grupy Zabezpieczeń (NSG) zawierają informacje, których można użyć do zrozumienia ruchu przychodzącego i wychodzącego IP w interfejsach sieciowych. Te dzienniki przepływu pokazują przepływy wychodzące i przychodzące na podstawie reguły sieciowej grupy zabezpieczeń, oraz kartę sieciową, której dotyczy przepływ, informacje dotyczące 5-tuple przepływu (źródłowy/docelowy adres IP, port źródłowy/docelowy, protokół) i czy ruch był dozwolony czy zablokowany.
Możesz mieć wiele różnych sieciowych grup zabezpieczeń w swojej sieci z włączoną funkcją rejestrowania przepływu. Ta ilość danych rejestrowania sprawia, że kłopotliwe jest analizowanie i uzyskiwanie szczegółowych informacji z dzienników. Ten artykuł zawiera rozwiązanie do centralnego zarządzania dziennikami przepływów sieciowej grupy zabezpieczeń przy użyciu narzędzia Grafana, narzędzia do tworzenia grafów typu open source, elasticsearch, rozproszonego aparatu wyszukiwania i analizy oraz usługi Logstash, który jest potokiem przetwarzania danych po stronie serwera typu open source.
Scenariusz
Dzienniki przepływu sieciowej grupy zabezpieczeń są aktywowane za pomocą usługi Network Watcher i przechowywane w Azure blob storage. Wtyczka Logstash jest używana do łączenia się oraz przetwarzania dzienników przepływu z magazynu obiektów Blob i wysyłania ich do Elasticsearch. Gdy dzienniki przepływu są przechowywane w Elasticsearch, można je analizować i wizualizować na dostosowanych pulpitach nawigacyjnych w narzędziu Grafana.
Kroki instalacji
Włączanie rejestrowania przepływu sieciowej grupy zabezpieczeń
W tym scenariuszu na koncie musi być włączone rejestrowanie przepływu w co najmniej jednej Grupie Zabezpieczeń Sieciowych. Aby uzyskać instrukcje dotyczące włączania dzienników przepływu zabezpieczeń sieci, zapoznaj się z następującym artykułem Wprowadzenie do rejestrowania przepływów dla grup zabezpieczeń sieciowych.
Zagadnienia dotyczące konfiguracji
W tym przykładzie narzędzie Grafana, Elasticsearch i Logstash są konfigurowane na serwerze Ubuntu LTS Wdrożonym na platformie Azure. Ta minimalna konfiguracja jest używana do uruchamiania wszystkich trzech składników — wszystkie są uruchomione na tej samej maszynie wirtualnej. Ta konfiguracja powinna być używana tylko do testowania i niekrytycznych obciążeń. Logstash, Elasticsearch i Grafana mogą być zaprojektowane tak, aby skalowały się niezależnie na wiele instancji. Aby uzyskać więcej informacji, zobacz dokumentację dla każdego z tych składników.
Instalowanie usługi Logstash
Korzystasz z Logstash, aby spłaszczyć dzienniki przepływu sformatowane w JSON do poziomu krotki przepływu.
Poniższe instrukcje służą do instalowania usługi Logstash w systemie Ubuntu. Aby uzyskać instrukcje dotyczące sposobu instalowania tego pakietu w systemie Red Hat Enterprise Linux, zobacz Instalowanie z repozytoriów pakietów — yum.
Aby zainstalować usługę Logstash, uruchom następujące polecenia:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.debSkonfiguruj usługę Logstash, aby przeanalizować dzienniki przepływu i wysłać je do usługi Elasticsearch. Utwórz plik Logstash.conf przy użyciu:
sudo touch /etc/logstash/conf.d/logstash.confDodaj następującą zawartość do pliku. Zmień nazwę konta magazynu i klucz dostępu, aby odzwierciedlić szczegóły konta magazynu:
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]}" } 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 } elasticsearch { hosts => "localhost" index => "nsg-flow-logs" } }
Podany plik konfiguracji usługi Logstash składa się z trzech części: danych wejściowych, filtru i danych wyjściowych. Sekcja wejściowa wyznacza źródło dzienników wejściowych, które będą przetwarzane przez usługę Logstash — w tym przypadku skorzystamy z wtyczki wejściowej "azureblob" (zainstalowanej w następnych krokach), która umożliwi nam dostęp do plików JSON dzienników przepływu NSG przechowywanych w magazynie obiektów blob.
Następnie sekcja filtru spłaszcza każdy plik dziennika przepływu, tak aby każda pojedyncza krotka przepływu i skojarzone z nią właściwości stały się oddzielnym zdarzeniem usługi Logstash.
Na koniec sekcja danych wyjściowych przekazuje każde zdarzenie usługi Logstash do serwera Elasticsearch. Możesz zmodyfikować plik konfiguracji usługi Logstash zgodnie z twoimi potrzebami.
Instalowanie wtyczki wejściowej usługi Logstash dla usługi Azure Blob Storage
Wtyczka Logstash umożliwia bezpośredni dostęp do dzienników przepływu z wyznaczonego konta magazynu obiektów blob. Aby zainstalować tę wtyczkę, uruchom polecenie z domyślnego katalogu instalacyjnego logstash (w tym przypadku /usr/share/logstash/bin):
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Aby uzyskać więcej informacji na temat tej wtyczki, zobacz Logstash input plugin for Azure Storage Blobs (Wtyczka wejściowa usługi Logstash dla obiektów blob usługi Azure Storage).
Instalowanie programu Elasticsearch
Aby zainstalować usługę Elasticsearch, możesz użyć następującego skryptu. Aby uzyskać informacje na temat instalowania programu Elasticsearch, zobacz Elastic Stack.
sudo apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen -y
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://packages.elastic.co/elasticsearch/5.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-5.x.list
sudo apt-get update && apt-get install elasticsearch
sudo sed -i s/#cluster.name:.*/cluster.name:\ grafana/ /etc/elasticsearch/elasticsearch.yml
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
Instalowanie narzędzia Grafana
Aby zainstalować i uruchomić aplikację Grafana, uruchom następujące polecenia:
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.5.1_amd64.deb
sudo apt-get install -y adduser libfontconfig
sudo dpkg -i grafana_4.5.1_amd64.deb
sudo service grafana-server start
Aby uzyskać dodatkowe informacje o instalacji, zobacz Instalowanie w systemie Debian/Ubuntu.
Dodawanie serwera Elasticsearch jako źródła danych
Następnie należy dodać indeks Elasticsearch zawierający dzienniki przepływu jako źródło danych. Źródło danych można dodać, wybierając pozycję Dodaj źródło danych i wypełniając formularz odpowiednimi informacjami.
Tworzenie pulpitu nawigacyjnego
Po pomyślnym skonfigurowaniu narzędzia Grafana do odczytu z indeksu Elasticsearch zawierającego dzienniki przepływów sieciowej grupy zabezpieczeń możesz tworzyć i personalizować pulpity nawigacyjne. Aby utworzyć nowy pulpit nawigacyjny, wybierz pozycję Utwórz pierwszy pulpit nawigacyjny. Poniższa przykładowa konfiguracja grafu przedstawia przepływy podzielone według reguły NSG.
Podsumowanie
Dzięki integracji Network Watcher z Elasticsearch i Grafana masz teraz wygodny i scentralizowany sposób na zarządzanie dziennikami przepływu NSG oraz wizualizację tych i innych danych. Narzędzie Grafana oferuje wiele innych zaawansowanych funkcji grafu, które mogą być również używane do dalszego zarządzania dziennikami przepływów i lepszego zrozumienia ruchu sieciowego. Teraz, gdy masz już skonfigurowane wystąpienie narzędzia Grafana i nawiązane połączenie z platformą Azure, możesz kontynuować eksplorowanie innych funkcji, które oferuje.
Następny krok
- Dowiedz się więcej o korzystaniu z usługi Network Watcher.