Wizualizowanie dzienników przepływu grup zabezpieczeń sieciowych w Azure Network Watcher przy użyciu narzędzi open source
Ważne
30 września 2027 r. dzienniki przepływów sieciowej grupy zabezpieczeń zostaną wycofane. W ramach tego wycofania nie będzie można tworzyć nowych dzienników przepływów NSG od 30 czerwca 2025 r. Zalecamy migrację do dzienników przepływów sieci wirtualnej, które przezwyciężają ograniczenia dzienników przepływów NSG. Po dacie wycofania analiza ruchu włączona z dziennikami przepływów sieciowej grupy zabezpieczeń nie będzie już obsługiwana, a istniejące zasoby przepływów sieciowej grupy zabezpieczeń w subskrypcjach zostaną usunięte. Jednak rekordy dzienników przepływu sieciowej grupy zabezpieczeń nie zostaną usunięte i będą nadal przestrzegać odpowiednich zasad przechowywania. Więcej informacji znajdziesz w oficjalnym ogłoszeniu.
Dzienniki przepływu sieciowej grupy zabezpieczeń zawierają informacje, których można użyć do zrozumienia ruchu przychodzącego i wychodzącego IP w sieciowych grupach zabezpieczeń. Te dzienniki ruchu sieciowego pokazują przepływy wychodzące i przychodzące dla każdej reguły, interfejs sieciowy, do którego ma zastosowanie przepływ, pięciokrotka informacji o przepływie (adres źródłowy/docelowy IP, port źródłowy/docelowy, protokół) oraz informacja, czy ruch był dozwolony czy odrzucony.
Te dzienniki przepływu mogą być trudne do ręcznego analizowania i uzyskiwania szczegółowych informacji. Istnieje jednak kilka narzędzi typu open source, które mogą ułatwić wizualizowanie tych danych. Ten artykuł zawiera rozwiązanie do wizualizacji tych dzienników przy użyciu usługi Elastic Stack, która umożliwia szybkie indeksowanie i wizualizowanie dzienników przepływu na pulpicie nawigacyjnym kibana.
Scenariusz
W tym artykule konfigurujemy rozwiązanie, które umożliwia wizualizowanie dzienników przepływu sieciowej grupy zabezpieczeń przy użyciu Elastic Stack. Wtyczka wejściowa Logstash uzyskuje dzienniki przepływów bezpośrednio z blobu magazynowego skonfigurowanego do przechowywania dzienników przepływów. Następnie przy użyciu elastycznego stosu dzienniki przepływu są indeksowane i używane do tworzenia pulpitu nawigacyjnego Kibana w celu wizualizacji informacji.
Kroki
Włącz rejestrowanie przepływu dla grupy zabezpieczeń sieci
W tym scenariuszu musisz mieć włączone Rejestrowanie przepływu dla co najmniej jednej grupy zabezpieczeń sieciowych na twoim koncie. Aby uzyskać instrukcje dotyczące włączania dzienników przepływu zabezpieczeń sieci, zobacz poniższy artykuł Wprowadzenie do rejestrowania przepływów dla grup zabezpieczeń sieci.
Konfigurowanie elastycznego stosu
Łącząc dzienniki przepływów sieciowej grupy zabezpieczeń z usługą Elastic Stack, możemy utworzyć pulpit nawigacyjny Kibana, który umożliwia nam wyszukiwanie, tworzenie wykresów, analizowanie i wyciąganie wniosków z naszych dzienników.
Instalowanie programu Elasticsearch
Poniższe instrukcje służą do instalowania programu Elasticsearch na maszynach wirtualnych platformy Azure z systemem Ubuntu. Aby uzyskać instrukcje dotyczące sposobu instalowania wyszukiwania elastycznego w systemie Red Hat Enterprise Linux, zobacz Instalowanie programu Elasticsearch przy użyciu funkcji RPM.
Elastic Stack od wersji 5.0 lub nowszej wymaga środowiska Java 8. Uruchom polecenie
java -version
, aby sprawdzić wersję. Jeśli nie masz zainstalowanego języka Java, zapoznaj się z dokumentacją dotyczącą zestawów JDKs obsługiwanych przez platformę Azure.Pobierz prawidłowy pakiet binarny dla systemu:
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
Inne metody instalacji można znaleźć w artykule Elasticsearch Installation (Instalacja programu Elasticsearch)
Sprawdź, czy usługa Elasticsearch jest uruchomiona za pomocą polecenia :
curl http://127.0.0.1:9200
Powinna zostać wyświetlona odpowiedź podobna do następującej:
{ "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" }
Aby uzyskać dalsze instrukcje dotyczące instalowania funkcji Elastic Search, zobacz Instrukcje instalacji.
Instalowanie usługi Logstash
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 artykuł 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.deb
Następnie należy skonfigurować usługę Logstash, aby uzyskiwać dostęp do dzienników przepływu i analizować je. Utwórz plik logstash.conf przy użyciu:
sudo touch /etc/logstash/conf.d/logstash.conf
Dodaj następującą zawartość do pliku:
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" } }
Aby uzyskać dalsze instrukcje dotyczące instalowania usługi Logstash, zobacz oficjalną dokumentację.
Instalowanie wtyczki wejściowej Logstash dla Azure Blob Storage
Ta wtyczka usługi Logstash umożliwia bezpośredni dostęp do dzienników przepływu z wyznaczonego konta magazynu. Aby zainstalować tę wtyczkę, w domyślnym katalogu instalacyjnym usługi Logstash uruchom polecenie:
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Aby uruchomić usługę Logstash, uruchom polecenie:
sudo /etc/init.d/logstash start
Aby uzyskać więcej informacji na temat tej wtyczki, zobacz dokumentację.
Instalowanie narzędzia Kibana
Aby uzyskać instrukcje dotyczące sposobu instalowania rozwiązania Kibana w systemie Red Hat Enterprise Linux, zobacz Instalowanie narzędzia Kibana z funkcją RPM. Aby uzyskać instrukcje dotyczące sposobu instalowania narzędzia Kibana w systemach Ubuntu/Debian przy użyciu pakietu repozytorium, zobacz Instalowanie narzędzia Kibana z repozytorium APT.
Następnie poniższe instrukcje zostały przetestowane w systemie Ubuntu i mogą być używane w różnych dystrybucjach systemu Linux, ponieważ nie są specyficzne dla systemu Ubuntu.
Uruchom następujące polecenia, aby zainstalować oprogramowanie 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
Aby uruchomić program Kibana, użyj poleceń:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Aby wyświetlić interfejs internetowy Kibana, przejdź do strony
http://localhost:5601
W tym scenariuszu wzorzec indeksu używany dla dzienników przepływu to "nsg-flow-logs". Wzorzec indeksu można zmienić w sekcji "output" pliku logstash.conf.
Jeśli chcesz zdalnie wyświetlić pulpit nawigacyjny Kibana, utwórz regułę NSG dla ruchu przychodzącego przez port 5601 zezwalającą na dostęp.
Tworzenie pulpitu nawigacyjnego Kibana
Przykładowy pulpit nawigacyjny do wyświetlania trendów i szczegółów w alertach jest pokazany na poniższej ilustracji:
Pobierz plik pulpitu nawigacyjnego, plik wizualizacji i plik zapisanego wyszukiwania.
Na karcie Zarządzanie narzędzia Kibana przejdź do pozycji Zapisane obiekty i zaimportuj wszystkie trzy pliki. Następnie na karcie Pulpit nawigacyjny możesz otworzyć i załadować przykładowy pulpit nawigacyjny.
Możesz również utworzyć własne wizualizacje i pulpity nawigacyjne dostosowane do własnych metryk. Przeczytaj więcej na temat tworzenia wizualizacji Kibana z oficjalnej dokumentacji Kibany.
Wizualizacja dzienników przepływu NSG
Przykładowy pulpit nawigacyjny zawiera kilka wizualizacji dzienników przepływu:
Przepływy według decyzji/kierunku w czasie — wykresy szeregów czasowych pokazujące liczbę przepływów w danym okresie. Możesz edytować jednostkę czasu i zakres obu tych wizualizacji. Przepływy według decyzji pokazują proporcję podejmowanych decyzji dotyczących zezwalania lub odmowy, natomiast przepływy według kierunku pokazują proporcję ruchu przychodzącego i wychodzącego. Dzięki tym wizualizacjom można badać trendy ruchu w czasie i szukać wszelkich skoków lub nietypowych wzorców.
Przepływy według portu docelowego/źródłowego — wykresy kołowe przedstawiające podział przepływów na odpowiednie porty. Ten widok umożliwia wyświetlenie najczęściej używanych portów. Jeśli klikniesz określony port na wykresie kołowym, reszta pulpitu ulega filtrowaniu według przepływów tego portu.
Liczba przepływów i najwcześniejszy czas dziennika — metryki przedstawiające liczbę zarejestrowanych przepływów i datę najwcześniejszego przechwycenia dziennika.
Przepływy według sieciowej grupy zabezpieczeń i reguły — wykres słupkowy przedstawiający rozkład przepływów w każdej sieciowej grupie zabezpieczeń oraz rozkład reguł w każdej sieciowej grupie zabezpieczeń. , można zobaczyć, która sieciowa grupa zabezpieczeń i reguły wygenerowały najwięcej ruchu.
10 pierwszych źródłowych/docelowych adresów IP — wykresy słupkowe przedstawiające 10 pierwszych źródłowych i docelowych adresów IP. Możesz dostosować te wykresy, aby pokazać więcej lub mniej najważniejszych adresów IP. W tym miejscu można zobaczyć najczęściej występujące adresy IP i decyzje dotyczące ruchu (zezwalanie lub odmawianie) podejmowane względem każdego adresu IP.
Krotka przepływu — tabela pokazująca informacje zawarte w każdej krotce przepływu oraz odpowiadające jej NGS i reguły.
Za pomocą paska zapytania w górnej części pulpitu nawigacyjnego można filtrować pulpit nawigacyjny na podstawie dowolnego parametru przepływów, takich jak identyfikator subskrypcji, grupy zasobów, reguła lub dowolna inna zmienna zainteresowania. Aby uzyskać więcej informacji na temat zapytań i filtrów Kibana, zobacz oficjalną dokumentację
Podsumowanie
Łącząc dzienniki przepływu sieciowej grupy zabezpieczeń z usługą Elastic Stack, utworzyliśmy zaawansowany i dostosowywalny sposób wizualizacji ruchu sieciowego. Te pulpity nawigacyjne umożliwiają szybkie uzyskiwanie i udostępnianie szczegółowych informacji na temat ruchu sieciowego oraz filtrowanie i badanie wszelkich potencjalnych anomalii. Za pomocą narzędzia Kibana można dostosować te pulpity nawigacyjne i utworzyć określone wizualizacje, aby spełnić wszelkie potrzeby dotyczące zabezpieczeń, inspekcji i zgodności.
Następny krok
Dowiedz się, jak wizualizować dzienniki przepływu sieciowej grupy zabezpieczeń za pomocą usługi Power BI, odwiedzając stronę Visualize NSG flows logs with Power BI (Wizualizowanie dzienników przepływów sieciowej grupy zabezpieczeń za pomocą usługi Power BI)