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.
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
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
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
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.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.
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
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
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
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" } }
Nadaj poprawne uprawnienia do pliku eve.json , aby usługa Logstash mogła pozyskać plik:
sudo chmod 775 /var/log/suricata/eve.json
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
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
Uruchom program Kibana przy użyciu następujących poleceń:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
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-*
.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ć:
Pobierz plik pulpitu nawigacyjnego, plik wizualizacji i zapisany plik 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 potrzeb. Przeczytaj więcej na temat tworzenia wizualizacji Kibana z oficjalnej dokumentacji Kibany.
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).
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.
Liczba alertów: łączna liczba alertów wyzwalanych przez zestaw reguł.
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.
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.
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: