Zarządzanie dziennikami przepływów sieciowych grup zabezpieczeń i analizowanie ich na platformie Azure przy użyciu usługi Network Watcher i Graylog

Uwaga

W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która zbliża się do stanu zakończenia życia (EOL). Rozważ odpowiednie użycie i planowanie. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.

Dzienniki przepływu sieciowej grupy zabezpieczeń zawierają informacje, których można użyć do zrozumienia ruchu przychodzącego i wychodzącego IP dla interfejsów sieciowych platformy Azure. Dzienniki przepływu pokazują przepływy wychodzące i przychodzące na podstawie reguły sieciowej grupy zabezpieczeń, interfejs sieciowy, którego dotyczy przepływ, informacje o krotce 5(źródłowy/docelowy adres IP, port źródłowy/docelowy, protokół) dotyczące przepływu, a jeśli ruch był dozwolony lub blokowany.

W sieci może być dostępnych wiele sieciowych grup zabezpieczeń z włączonym rejestrowaniem przepływu. Kilka sieciowych grup zabezpieczeń z włączonym rejestrowaniem przepływu może utrudnić analizowanie i uzyskiwanie szczegółowych informacji z dzienników. Ten artykuł zawiera rozwiązanie do centralnego zarządzania dziennikami przepływów sieciowych grup zabezpieczeń przy użyciu usługi Graylog, narzędzia do zarządzania dziennikami typu open source i narzędzia do analizy oraz usługi Logstash, potoku przetwarzania danych po stronie serwera typu open source.

Ostrzeżenie

Poniższe kroki działają z dziennikami przepływu w wersji 1. Aby uzyskać szczegółowe informacje, zobacz Wprowadzenie do rejestrowania przepływów dla sieciowych grup zabezpieczeń. Poniższe instrukcje nie będą działać z wersją 2 plików dziennika bez modyfikacji.

Scenariusz

Dzienniki przepływów sieciowych grup zabezpieczeń są włączone przy użyciu usługi Network Watcher. Przepływ dzienników przepływu w usłudze Azure Blob Storage. Wtyczka logstash służy do łączenia i przetwarzania dzienników przepływu z magazynu obiektów blob i wysyłania ich do usługi Graylog. Gdy dzienniki przepływu są przechowywane w usłudze Graylog, można je analizować i wizualizować w dostosowanych pulpitach nawigacyjnych.

Przepływ pracy graylogu

Etapy instalacji

Włączanie rejestrowania przepływu sieciowej grupy zabezpieczeń

W tym scenariuszu należy włączyć rejestrowanie przepływu sieciowej grupy zabezpieczeń w co najmniej jednej sieciowej grupie zabezpieczeń na koncie. Aby uzyskać instrukcje dotyczące włączania dzienników przepływu sieciowej grupy zabezpieczeń, zapoznaj się z następującym artykułem Wprowadzenie do rejestrowania przepływów dla sieciowych grup zabezpieczeń.

Konfigurowanie usługi Graylog

W tym przykładzie zarówno narzędzie Graylog, jak i usługa Logstash są konfigurowane na serwerze Ubuntu Server wdrożonym na platformie Azure.

  • Zapoznaj się z dokumentacją narzędzia Graylog, aby uzyskać instrukcje krok po kroku dotyczące sposobu instalowania w systemie Ubuntu.
  • Pamiętaj również, aby skonfigurować interfejs sieci Web Graylog, postępując zgodnie z dokumentacją.

W tym przykładzie użyto minimalnej konfiguracji narzędzia Graylog (tj. pojedynczego wystąpienia usługi Graylog), ale narzędzie Graylog można zaprojektować tak, aby skalować zasoby w zależności od potrzeb systemowych i produkcyjnych. Aby uzyskać więcej informacji na temat zagadnień dotyczących architektury lub szczegółowego przewodnika dotyczącego architektury, zobacz dokumentację i przewodnik architektury grayloga.

Graylog można zainstalować na wiele sposobów, w zależności od platformy i preferencji. Pełną listę możliwych metod instalacji można znaleźć w oficjalnej dokumentacji grayloga. Aplikacja serwera Graylog działa w dystrybucjach systemu Linux i ma następujące wymagania wstępne:

Instalowanie usługi Logstash

Usługa Logstash służy do spłaszczania dzienników przepływu sformatowanego w formacie JSON na poziomie krotki przepływu. Spłaszczanie dzienników przepływu ułatwia organizowanie i wyszukiwanie dzienników w narzędziu Graylog. Poniższe instrukcje służą do instalowania usługi Logstash w systemie Ubuntu. Aby uzyskać instrukcje dotyczące sposobu instalowania tego pakietu w systemie RHEL/CentOS, zapoznaj się z artykułem Instalowanie z repozytoriów pakietów — yum .

  1. Aby zainstalować usługę Logstash, uruchom następujące polecenia:

    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. Skonfiguruj usługę Logstash, aby przeanalizować dzienniki przepływu i wysłać je do usługi Graylog. Utwórz plik Logstash.conf:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Dodaj następującą zawartość do pliku. storage_account_nameZmień wartości , icontainer, storage_access_keyaby odzwierciedlały szczegóły konta magazynu:

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

    Podany plik konfiguracji usługi Logstash składa się z trzech części: danych wejściowych, filtru i danych wyjściowych. Sekcja danych wejściowych wyznacza źródło wejściowe dzienników, które będą przetwarzane przez usługę Logstash — w tym przypadku użyjesz wtyczki wejściowej w blogu platformy Azure (zainstalowanej w następnych krokach), która umożliwia dostęp do plików JSON dziennika przepływu sieciowej grupy zabezpieczeń 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 Graylog. Aby dopasować się do konkretnych potrzeb, zmodyfikuj plik konfiguracji usługi Logstash zgodnie z potrzebami.

Uwaga

Poprzedni plik konfiguracji zakłada, że serwer Graylog został skonfigurowany na lokalnym adresie IP sprzężenia zwrotnego hosta 127.0.0.1. Jeśli nie, pamiętaj, aby zmienić parametr hosta w sekcji danych wyjściowych na poprawny adres IP.

Aby uzyskać dalsze instrukcje dotyczące instalowania usługi Logstash, zobacz dokumentację usługi Logstash.

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ć wtyczkę, uruchom następujące polecenie z domyślnego katalogu instalacyjnego usługi Logstash (w tym przypadku /usr/share/logstash/bin):

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

Aby uzyskać więcej informacji na temat tej wtyczki, zobacz dokumentację.

Konfigurowanie połączenia z usługi Logstash do usługi Graylog

Po nawiązaniu połączenia z dziennikami przepływu przy użyciu usługi Logstash i skonfigurowaniu serwera Graylog należy skonfigurować narzędzie Graylog tak, aby akceptował przychodzące pliki dziennika.

  1. Przejdź do interfejsu internetowego serwera Graylog przy użyciu skonfigurowanego dla niego adresu URL. Dostęp do interfejsu można uzyskać, kierując przeglądarkę do http://<graylog-server-ip>:9000/

  2. Aby przejść do strony konfiguracji, wybierz menu rozwijane System na górnym pasku nawigacyjnym po prawej stronie, a następnie kliknij pozycję Dane wejściowe. Możesz też przejść do adresu http://<graylog-server-ip>:9000/system/inputs

    Wprowadzenie

  3. Aby uruchomić nowe dane wejściowe, wybierz pozycję GELF UDP z listy rozwijanej Wybierz dane wejściowe , a następnie wypełnij formularz. GELF to skrót od Graylog Extended Log Format. Format GELF jest opracowany przez Graylog. Aby dowiedzieć się więcej o jej zaletach, zobacz dokumentację usługi Graylog.

    Pamiętaj, aby powiązać dane wejściowe z adresem IP skonfigurowanym na serwerze Graylog. Adres IP powinien być zgodny z polem hosta danych wyjściowych UDP pliku konfiguracji logstash. Domyślny port powinien mieć wartość 12201. Upewnij się, że port jest zgodny z polem portu w danych wyjściowych UDP wyznaczonych w pliku konfiguracji usługi Logstash.

    Zrzut ekranu przedstawia dane wejściowe graylogu z opcjami uruchamiania i znajdowania danych wejściowych.

    Po uruchomieniu danych wejściowych powinny zostać wyświetlone w sekcji Dane wejściowe lokalne, jak pokazano na poniższej ilustracji:

    Zrzut ekranu przedstawiający sekcję Lokalne dane wejściowe zawierające uruchomione dane wejściowe.

    Aby dowiedzieć się więcej na temat danych wejściowych komunikatów graylog, zapoznaj się z dokumentacją.

  4. Po utworzeniu tych konfiguracji można uruchomić narzędzie Logstash, aby rozpocząć odczytywanie w dziennikach przepływu za pomocą następującego polecenia: sudo systemctl start logstash.service.

Przeszukiwanie komunikatów graylogu

Po pewnym czasie na zbieranie komunikatów przez serwer Graylog można przeszukiwać komunikaty. Aby sprawdzić komunikaty wysyłane do serwera Graylog, na stronie Konfiguracja danych wejściowych kliknij przycisk "Pokaż odebrane komunikaty" utworzonego danych wejściowych GELF UDP. Zostanie skierowany do ekranu, który wygląda podobnie do poniższego obrazu:

Zrzut ekranu przedstawia serwer Graylog z wyświetlonymi wynikami wyszukiwania, histogramem i komunikatami.

Kliknięcie niebieskiego linku "%{Message}" rozszerza każdy komunikat, aby wyświetlić parametry każdej krotki przepływu, jak pokazano na poniższej ilustracji:

Zrzut ekranu przedstawiający szczegóły komunikatu z serwera Graylog.

Domyślnie wszystkie pola komunikatów są uwzględniane w wyszukiwaniu, jeśli nie wybierzesz określonego pola wiadomości do wyszukania. Jeśli chcesz wyszukać określone komunikaty (tj. krotki przepływu z określonego źródłowego adresu IP), możesz użyć języka zapytań wyszukiwania Graylog zgodnie z dokumentacją

Analizowanie dzienników przepływów sieciowych grup zabezpieczeń przy użyciu narzędzia Graylog

Teraz, gdy aplikacja Graylog została skonfigurowana, możesz użyć niektórych jej funkcji, aby lepiej zrozumieć dane dziennika przepływu. Jednym z takich sposobów jest użycie pulpitów nawigacyjnych do tworzenia określonych widoków danych.

Tworzenie pulpitu nawigacyjnego

  1. Na górnym pasku nawigacyjnym wybierz pozycję Pulpity nawigacyjne lub przejdź do http://<graylog-server-ip>:9000/dashboards/

  2. W tym miejscu kliknij zielony przycisk Utwórz pulpit nawigacyjny i wypełnij krótki formularz tytułem i opisem pulpitu nawigacyjnego. Naciśnij przycisk Zapisz, aby utworzyć nowy pulpit nawigacyjny. Zostanie wyświetlony pulpit nawigacyjny podobny do poniższego:

    Zrzut ekranu przedstawiający pulpity nawigacyjne serwera Graylog z opcjami tworzenia i edytowania pulpitów nawigacyjnych.

Dodawanie widżetów

Możesz kliknąć tytuł pulpitu nawigacyjnego, aby go wyświetlić, ale teraz jest on pusty, ponieważ nie dodaliśmy żadnych widżetów. Łatwy i przydatny widżet typu do dodania do pulpitu nawigacyjnego to wykresy Szybkie wartości , które wyświetlają listę wartości wybranego pola i ich rozkład.

  1. Wróć do wyników wyszukiwania danych wejściowych UDP odbierających dzienniki przepływu, wybierając pozycję Wyszukaj na górnym pasku nawigacyjnym.

  2. W panelu Wyniki wyszukiwania po lewej stronie ekranu znajdź kartę Pola, która zawiera listę różnych pól każdego przychodzącego komunikatu krotki przepływu.

  3. Wybierz dowolny żądany parametr, w którym chcesz zwizualizować (w tym przykładzie wybrano źródło adresu IP). Aby wyświetlić listę możliwych widżetów, kliknij niebieską strzałkę listy rozwijanej po lewej stronie pola, a następnie wybierz pozycję Szybkie wartości , aby wygenerować widżet. Powinna zostać wyświetlona zawartość podobna do poniższej:

    Źródłowy adres IP

  4. W tym miejscu możesz wybrać przycisk Dodaj do pulpitu nawigacyjnego w prawym górnym rogu widżetu i wybrać odpowiedni pulpit nawigacyjny do dodania.

  5. Wróć do pulpitu nawigacyjnego, aby zobaczyć właśnie dodany widżet.

    Do pulpitu nawigacyjnego można dodać różne inne widżety, takie jak histogramy i liczby, aby śledzić ważne metryki, takie jak przykładowy pulpit nawigacyjny pokazany na poniższej ilustracji:

    Pulpit nawigacyjny dzienników przepływu

    Aby uzyskać więcej informacji na temat pulpitów nawigacyjnych i innych typów widżetów, zapoznaj się z dokumentacją usługi Graylog.

Dzięki integracji usługi Network Watcher z usługą Graylog masz teraz wygodny i scentralizowany sposób zarządzania dziennikami przepływów sieciowych grup zabezpieczeń i wizualizowania ich. Narzędzie Graylog ma wiele innych zaawansowanych funkcji, takich jak strumienie i alerty, które mogą być również używane do dalszego zarządzania dziennikami przepływów i lepszego zrozumienia ruchu sieciowego. Po skonfigurowaniu usługi Graylog i nawiązaniu połączenia z platformą Azure możesz kontynuować eksplorowanie innych funkcji, które oferuje.

Następne kroki

Dowiedz się, jak wizualizować dzienniki przepływu sieciowej grupy zabezpieczeń za pomocą usługi Power BI, odwiedzając stronę Visualize network security group flows logs with Power BI (Wizualizowanie dzienników przepływów sieciowych grup zabezpieczeń za pomocą usługi Power BI).