Udostępnij za pośrednictwem


Wykrywanie nieautoryzowanego dostępu do sieci przy użyciu usługi Azure Network Watcher i narzędzi typu open source

Przechwytywanie pakietów jest kluczowym składnikiem do implementowania systemów wykrywania włamań sieci (IDS) i przeprowadzania monitorowania zabezpieczeń sieci. Kilka narzędzi typu open source IDS przetwarza przechwytywanie pakietów i wyszukuje podpisy możliwych włamań sieciowych i złośliwych działań. Korzystając z przechwytywania pakietów zapewnianych przez usługę Azure Network Watcher, możesz analizować sieć pod kątem szkodliwych włamań lub luk w zabezpieczeniach.

Jednym z takich narzędzi typu open source jest Suricata, aparat IDS, który używa zestawów reguł do monitorowania ruchu sieciowego i wyzwala alerty za każdym razem, gdy wystąpią podejrzane zdarzenia. Suricata oferuje wielowątkowy aparat do przeprowadzania analizy ruchu sieciowego ze zwiększoną szybkością i wydajnością. Aby uzyskać więcej informacji na temat suricata i jego możliwości, przejdź do witryny internetowej Suricata.

Scenariusz

W tym artykule wyjaśniono, jak skonfigurować środowisko do wykrywania nieautoryzowanego dostępu do sieci przy użyciu usługi Network Watcher, Suricata i elastycznego stosu.

Usługa Network Watcher zapewnia przechwytywanie pakietów na potrzeby wykrywania nieautoryzowanego dostępu do sieci. Suricata przetwarza pakiety przechwytywane i wyzwala alerty na podstawie pakietów pasujących do zestawu reguł zagrożeń. Suricata przechowuje te alerty w pliku dziennika na komputerze lokalnym.

Za pomocą elastycznego stosu można indeksować dzienniki generowane przez usługę Suricata, a następnie użyć ich do utworzenia pulpitu nawigacyjnego Kibana. Pulpit nawigacyjny zawiera wizualną reprezentację dzienników i sposób szybkiego uzyskiwania szczegółowych informacji na temat potencjalnych luk w zabezpieczeniach sieci.

Diagram przedstawiający prosty scenariusz aplikacji internetowej.

Możesz skonfigurować zarówno narzędzia typu open source na maszynie wirtualnej platformy Azure, jak i w ramach własnego środowiska sieciowego platformy Azure.

Instalowanie narzędzia Suricata

  1. W terminalu wiersza polecenia maszyny wirtualnej uruchom następujące polecenia:

    sudo add-apt-repository ppa:oisf/suricata-stable
    sudo apt-get update
    sudo apt-get install suricata
    
  2. Aby zweryfikować instalację, uruchom polecenie suricata -h , aby wyświetlić pełną listę poleceń.

Inne metody instalacji można znaleźć w przewodniku Szybki start dotyczącym instalacji suricata.

Pobieranie zestawu reguł pojawiających się zagrożeń

Na tym etapie nie masz żadnych reguł do uruchomienia Suricata. Możesz utworzyć własne reguły, jeśli chcesz wykryć określone zagrożenia w sieci. Możesz również użyć opracowanych zestawów reguł od różnych dostawców, takich jak nowe zagrożenia lub reguły Talos z programu Snort. W tym artykule użyjesz bezpłatnego zestawu reguł Pojawiających się zagrożeń.

Pobierz zestaw reguł i skopiuj go do katalogu:

wget https://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
tar zxf emerging.rules.tar.gz
sudo cp -r rules /etc/suricata/

Przetwarzanie przechwytywania pakietów przy użyciu narzędzia Suricata

Aby przetworzyć przechwytywanie pakietów przy użyciu narzędzia Suricata, uruchom następujące polecenie:

sudo suricata -c /etc/suricata/suricata.yaml -r <location_of_pcapfile>

Aby sprawdzić wynikowe alerty, przeczytaj plik fast.log :

tail -f /var/log/suricata/fast.log

Konfigurowanie elastycznego stosu

Dzienniki, które tworzy Suricata, zawierają cenne informacje o tym, co dzieje się w sieci, ale te pliki dziennika nie są najłatwiejsze do odczytania i zrozumienia. Łącząc suricata z usługą Elastic Stack, możesz utworzyć pulpit nawigacyjny Kibana w celu wyszukiwania, grafu, analizowania i uzyskiwania szczegółowych informacji z dzienników.

Instalowanie programu Elasticsearch

  1. Usługa Elastic Stack w 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 Java Development Kit obsługiwanych przez platformę Azure.

  2. 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źć na stronie internetowej Elastic na potrzeby instalowania programu Elasticsearch.

  3. Sprawdź, czy program Elasticsearch jest uruchomiony przy użyciu tego polecenia:

    curl http://127.0.0.1:9200
    

    Powinna zostać wyświetlona odpowiedź podobna do tego przykładu:

    {
    "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ć więcej instrukcji dotyczących instalowania programu Elasticsearch, zobacz stronę internetową Elastic dotyczącą instalacji.

Instalowanie usługi Logstash

  1. Zainstaluj usługę Logstash, uruchamiając 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
    
  2. Skonfiguruj usługę Logstash do odczytu z danych wyjściowych pliku eve.json . Utwórz plik logstash.conf przy użyciu tego polecenia:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Dodaj następującą zawartość do pliku. Upewnij się, że ścieżka do pliku eve.json jest poprawna.

    input {
    file {
        path => ["/var/log/suricata/eve.json"]
        codec =>  "json"
        type => "SuricataIDPS"
    }
    
    }
    
    filter {
    if [type] == "SuricataIDPS" {
        date {
        match => [ "timestamp", "ISO8601" ]
        }
        ruby {
        code => "
            if event.get('[event_type]') == 'fileinfo'
            event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0])
            end
        "
        }
    
        ruby{
        code => "
            if event.get('[event_type]') == 'alert'
            sp = event.get('[alert][signature]').to_s.split(' group ')
            if (sp.length == 2) and /\A\d+\z/.match(sp[1])
                event.set('[alert][signature]', sp[0])
            end
            end
            "
        }
    }
    
    if [src_ip]  {
        geoip {
        source => "src_ip"
        target => "geoip"
        #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat"
        add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
        add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
        }
        mutate {
        convert => [ "[geoip][coordinates]", "float" ]
        }
        if ![geoip.ip] {
        if [dest_ip]  {
            geoip {
            source => "dest_ip"
            target => "geoip"
            #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat"
            add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
            add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
            }
            mutate {
            convert => [ "[geoip][coordinates]", "float" ]
            }
        }
        }
    }
    }
    
    output {
    elasticsearch {
        hosts => "localhost"
    }
    }
    
  4. Nadaj poprawne uprawnienia do pliku eve.json , aby usługa Logstash mogła pozyskać plik:

    sudo chmod 775 /var/log/suricata/eve.json
    
  5. Uruchom usługę Logstash, uruchamiając następujące polecenie:

    sudo /etc/init.d/logstash start
    

Aby uzyskać więcej instrukcji dotyczących instalowania usługi Logstash, zapoznaj się z oficjalną dokumentacją elastyczną.

Instalowanie narzędzia Kibana

  1. 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
    
  2. Uruchom program Kibana przy użyciu następujących poleceń:

    cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana
    
  3. Wyświetl interfejs internetowy Kibana, przechodząc do strony http://localhost:5601.

    W tym scenariuszu wzorzec indeksu używany dla dzienników Suricata to logstash-*.

  4. Jeśli chcesz zdalnie wyświetlić pulpit nawigacyjny Kibana, utwórz regułę sieciowej grupy zabezpieczeń dla ruchu przychodzącego, która umożliwia dostęp do portu 5601.

Tworzenie pulpitu nawigacyjnego Kibana

Ten artykuł zawiera przykładowy pulpit nawigacyjny umożliwiający wyświetlanie trendów i szczegółów w alertach. Aby go użyć:

  1. Pobierz plik pulpitu nawigacyjnego, plik wizualizacji i zapisany plik wyszukiwania.

  2. 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 potrzeb. Przeczytaj więcej na temat tworzenia wizualizacji Kibana z oficjalnej dokumentacji Kibany.

Zrzut ekranu przedstawiający pulpit nawigacyjny Kibana.

Wizualizowanie dzienników alertów usługi IDS

Przykładowy pulpit nawigacyjny zawiera kilka wizualizacji dzienników alertów Suricata:

  • Alert według geoIP: mapa przedstawiająca dystrybucję alertów według ich kraju/regionu pochodzenia na podstawie lokalizacji geograficznej (określonej przez adres IP).

    Zrzut ekranu przedstawia mapę alertów geograficznych adresów IP.

  • 10 najważniejszych alertów: podsumowanie 10 najczęściej wyzwalanych alertów i ich opisów. Wybranie pojedynczego alertu filtruje pulpit nawigacyjny do informacji odnoszących się do tego konkretnego alertu.

    Zrzut ekranu przedstawiający najczęściej wyzwalane alerty.

  • Liczba alertów: łączna liczba alertów wyzwalanych przez zestaw reguł.

    Zrzut ekranu przedstawia liczbę alertów.

  • 20 najlepszych scrIP — alerty, top 20 DestIP — Alerts, Top 20 SrcPort — Alerts, Top 20 DestPort — Alerts: Pie charts that show the sources and destinations for the top 20 IP and ports that alerts that were triggered on (Najważniejsze 20 destPort — alerty: wykresy kołowe pokazujące źródła i miejsca docelowe dla 20 pierwszych adresów IP i portów wyzwalanych przez alerty). Możesz filtrować określone adresy IP lub porty, aby zobaczyć, ile i jakiego rodzaju alerty są wyzwalane.

    Zrzut ekranu przedstawiający wykresy kołowe 20 pierwszych adresów IP i portów wyzwalanych przez alerty.

  • Podsumowanie alertów: tabela zawierająca podsumowanie szczegółowych informacji o każdym alercie. Możesz dostosować tę tabelę, aby wyświetlić inne interesujące parametry dla każdego alertu.

    Zrzut ekranu przedstawia tabelę podsumowania ze szczegółami dotyczącymi poszczególnych alertów.

Aby uzyskać więcej informacji na temat tworzenia niestandardowych wizualizacji i pulpitów nawigacyjnych, zobacz oficjalną dokumentację kibany.

Podsumowanie

Łącząc przechwytywanie pakietów z usługi Network Watcher i narzędzi typu open source IDS, takich jak Suricata, można przeprowadzić wykrywanie włamań sieci dla szerokiego zakresu zagrożeń.

Pulpity nawigacyjne ułatwiają szybkie wykrywanie trendów i anomalii w sieci. Możesz również użyć pulpitów nawigacyjnych, aby zbadać dane w celu odnalezienia głównych przyczyn alertów, takich jak złośliwi agenci użytkowników lub porty podatne na zagrożenia. Dzięki tym wyodrębnionym danym możesz podejmować świadome decyzje dotyczące wykonywania następujących czynności:

  • Reagowanie i ochrona sieci przed szkodliwymi próbami włamania.
  • Utwórz reguły, aby zapobiec przyszłym włamaniom do sieci.

Następny krok

Dowiedz się, jak wyzwalać przechwytywanie pakietów na podstawie alertów: