Create the VPC network

Fortschritt prüfen

/ 20

Set up the test application

Fortschritt prüfen

/ 10

Set up the Cloud load balancer component- instance group

Fortschritt prüfen

/ 20

Set up the Cloud load balancer component- health check

Fortschritt prüfen

/ 30

Create the Cloud Armor security policy

Fortschritt prüfen

/ 20

Dieses Lab kann KI-Tools enthalten, die den Lernprozess unterstützen.

GSP879

Google Cloud-Labs zum selbstbestimmten Lernen

Übersicht

Google Cloud Armor ist die Netzwerksicherheitslösung von Google für Unternehmen, die Schutz vor DDoS-Angriffen, die Durchsetzung von WAF-Regeln und eine umfassende adaptive Verwaltbarkeit bietet.

Cloud Armor hat die vorkonfigurierten WAF-Regelsätze erweitert, um besseren Schutz vor den OWASP-Top-10-Sicherheitslückenin Webanwendungen zu bieten. Die Regelsätze basieren auf dem OWASP-Modsecurity-Kernregelsatz Version 3.0.2 und schützen vor einigen der häufigsten Sicherheitsrisiken für Webanwendungen, darunter Local File Inclusion (LFI), Remote File Inclusion (RFI), Remote Code Execution (RCE) und viele mehr.

In diesem Lab erfahren Sie, wie Sie sich mithilfe der WAF-Regeln von Google Cloud Armor vor einigen der häufigsten Sicherheitslücken schützen.

Lerninhalte

Aufgaben in diesem Lab:

  • Instanzgruppe und globalen Load Balancer zur Unterstützung eines Dienstes einrichten
  • Cloud Armor-Sicherheitsrichtlinien mit vorkonfigurierten WAF-Regeln konfigurieren, um sich vor LFI, RCE, Scannern, Protokollangriffen und Session Fixation zu schützen
  • Anhand von Logs prüfen, ob Cloud Armor einen Angriff abgewehrt hat.

Topologie von WAF-Regeln in Cloud Armor

Die OWASP Juice Shop-Anwendung hilft beim Sicherheitstraining und schärft das Bewusstsein, da sie standardmäßig Beispiele für jede der OWASP-Top-10-Sicherheitslücken enthält. Angreifende können sie zu Testzwecken ausnutzen. In diesem Lab wird sie verwendet, um einige Anwendungsangriffe zu demonstrieren und die Anwendung anschließend mit Cloud Armor-WAF-Regeln zu schützen. Der Anwendung wird ein Google Cloud-Load Balancer vorgeschaltet, auf den die Cloud Armor-Sicherheitsrichtlinie und ‑regeln angewendet werden. Sie wird im öffentlichen Internet bereitgestellt und ist daher von fast überall aus erreichbar. Außerdem wird sie mit Cloud Armor- und VPC-Firewallregeln geschützt.

Einrichtung und Anforderungen

Vor dem Klick auf „Start Lab“ (Lab starten)

Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.

In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.

Für dieses Lab benötigen Sie Folgendes:

  • Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
  • Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.

Lab starten und bei der Google Cloud Console anmelden

  1. Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich „Details zum Lab“ mit diesen Informationen:

    • Schaltfläche „Google Cloud Console öffnen“
    • Restzeit
    • Temporäre Anmeldedaten für das Lab
    • Ggf. weitere Informationen für dieses Lab
  2. Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).

    Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.

    Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.

    Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
  3. Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.

    {{{user_0.username | "Username"}}}

    Sie finden den Nutzernamen auch im Bereich „Details zum Lab“.

  4. Klicken Sie auf Weiter.

  5. Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.

    {{{user_0.password | "Password"}}}

    Sie finden das Passwort auch im Bereich „Details zum Lab“.

  6. Klicken Sie auf Weiter.

    Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
  7. Klicken Sie sich durch die nachfolgenden Seiten:

    • Akzeptieren Sie die Nutzungsbedingungen.
    • Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
    • Melden Sie sich nicht für kostenlose Testversionen an.

Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.

Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein. Symbol für das Navigationsmenü und Suchfeld

Cloud Shell aktivieren

Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.

  1. Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren Symbol für Cloud Shell-Aktivierung.

  2. Klicken Sie sich durch die folgenden Fenster:

    • Fahren Sie mit dem Informationsfenster zu Cloud Shell fort.
    • Autorisieren Sie Cloud Shell, Ihre Anmeldedaten für Google Cloud API-Aufrufe zu verwenden.

Wenn eine Verbindung besteht, sind Sie bereits authentifiziert und das Projekt ist auf Project_ID, eingestellt. Die Ausgabe enthält eine Zeile, in der die Project_ID für diese Sitzung angegeben ist:

Ihr Cloud-Projekt in dieser Sitzung ist festgelegt als {{{project_0.project_id | "PROJECT_ID"}}}

gcloud ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.

  1. (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
  1. Klicken Sie auf Autorisieren.

Ausgabe:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Um das aktive Konto festzulegen, führen Sie diesen Befehl aus: $ gcloud config set account `ACCOUNT`
  1. (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
gcloud config list project

Ausgabe:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Hinweis: Die vollständige Dokumentation für gcloud finden Sie in Google Cloud in der Übersicht zur gcloud CLI.

Hinweis

  • Legen Sie in der Cloud Shell Ihre Projekt-ID fest:
gcloud config list project export PROJECT_ID=$(gcloud config get-value project) echo $PROJECT_ID gcloud config set project $PROJECT_ID

Aufgabe 1: VPC‑Netzwerk erstellen

  • Geben Sie in der Cloud Shell den folgenden Befehl ein, um ein VPC-Netzwerk zu erstellen:
gcloud compute networks create {{{project_0.startup_script.network_name| Network Name}}} --subnet-mode custom Created NAME SUBNET_MODE BGP_ROUTING_MODE {{{project_0.startup_script.network_name| Network Name}}} CUSTOM REGIONAL

Subnetz erstellen

  • Geben Sie in der Cloud Shell den folgenden Befehl ein, um ein Subnetz zu erstellen:
gcloud compute networks subnets create {{{project_0.startup_script.subnet_name| Subnet Name}}} \ --network {{{project_0.startup_script.network_name| Network Name}}} --range 10.0.0.0/24 --region {{{project_0.startup_script.region_1| Region}}} Created NAME REGION NETWORK RANGE {{{project_0.startup_script.subnet_name| Subnet Name}}} {{{project_0.startup_script.region_1| Region}}} {{{project_0.startup_script.network_name| Network Name}}} 10.0.0.0/24

VPC-Firewallregeln erstellen

Nachdem Sie die VPC und das Subnetz erstellt haben, richten Sie einige Firewallregeln ein.

  • Die erste Firewallregel mit dem Namen allow-js-site ermöglicht allen IP-Adressen den Zugriff auf die externe IP-Adresse der Website der Testanwendung über Port 3000.
  • Die zweite Firewallregel mit dem Namen allow-health-check erlaubt Systemdiagnosen von der Quell-IP-Adresse der Load Balancer.
  1. Geben Sie in der Cloud Shell den folgenden Befehl ein, um eine Firewallregel zu erstellen, die allen IP-Adressen den Zugriff auf die Anwendung erlaubt:
gcloud compute firewall-rules create {{{project_0.startup_script.firewall_rule| Firewall Name}}} --allow tcp:3000 --network {{{project_0.startup_script.network_name| Network Name}}}

Ausgabe:

Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED {{{project_0.startup_script.firewall_rule| Firewall Name}}} {{{project_0.startup_script.network_name| Network Name}}} INGRESS 1000 tcp:3000 False
  1. Geben Sie in der Cloud Shell den folgenden Befehl ein, um eine Firewallregel zu erstellen, die Systemdiagnosen aus den Google-Systemdiagnosebereichen zulässt:
gcloud compute firewall-rules create {{{project_0.startup_script.firewall_rule1| Firewall Name1}}} \ --network={{{project_0.startup_script.network_name| Network Name}}} \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-healthcheck \ --rules=tcp

Ausgabe:

Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED {{{project_0.startup_script.firewall_rule1| Firewall_Name1}}} {{{project_0.startup_script.network_name| Network Name}}} INGRESS 1000 tcp False

Klicken Sie auf Fortschritt prüfen. VPC‑Netzwerk erstellen

Aufgabe 2: Testanwendung einrichten

Erstellen Sie die Testanwendung, in diesem Fall den OWASP Juice Shop-Webserver. Beim Erstellen der Compute-Instanz verwenden Sie ein Container-Image. So wird sichergestellt, dass der Server die entsprechenden Dienste hat. Sie stellen diesen Server in bereit. Er hat ein Netzwerk-Tag, das Systemdiagnosen zulässt.

OWASP Juice Shop-Anwendung erstellen

  • Verwenden Sie die bekannte Open-Source-Anwendung OWASP Juice Shop als anfällige Anwendung. Mithilfe dieser Anwendung können Sie auch OWASP-Sicherheitsherausforderungen über die OWASP-Website bewältigen.
gcloud compute instances create-with-container {{{project_0.startup_script.vm_instance| vm_instance}}} --container-image bkimminich/juice-shop \ --network {{{project_0.startup_script.network_name| Network Name}}} \ --subnet {{{project_0.startup_script.subnet_name| Subnet Name}}} \ --private-network-ip=10.0.0.3 \ --machine-type n1-standard-2 \ --zone {{{project_0.startup_script.zone| Zone}}} \ --tags allow-healthcheck

Ausgabe:

NAME ZONE MACHINE_TYPE PREEMPTIBLE {{{project_0.startup_script.vm_instance| vm_instance}}} {{{project_0.startup_script.zone| Zone}}} n1-standard-2 INTERNAL_IP EXTERNAL_IP STATUS 10.0.0.3 RUNNING

Klicken Sie auf Fortschritt prüfen. Testanwendung einrichten

Cloud Load Balancer-Komponente einrichten: Instanzgruppe

  1. Geben Sie in der Cloud Shell den folgenden Befehl ein, um die nicht verwaltete Instanzgruppe zu erstellen:
gcloud compute instance-groups unmanaged create {{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --zone={{{project_0.startup_script.zone| Zone}}}

Ausgabe:

NAME LOCATION SCOPE NETWORK MANAGED INSTANCES {{{project_0.startup_script.vm_instance_group| Instance Group}}} {{{project_0.startup_script.zone| Zone}}} zone 0
  1. Fügen Sie die Juice Shop-Instanz der Google Compute Engine (GCE) der nicht verwalteten Instanzgruppe hinzu:
gcloud compute instance-groups unmanaged add-instances {{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --zone={{{project_0.startup_script.zone| Zone}}} \ --instances={{{project_0.startup_script.vm_instance| VM Instance}}}

Ausgabe:

Updated [https://www.googleapis.com/compute/v1/projects//zones/{{{project_0.startup_script.zone| Zone}}}/instanceGroups/{{{project_0.startup_script.vm_instance_group| Instance_Group}}}].
  1. Geben Sie für den benannten Port den Port der Juice Shop-Anwendung an:
gcloud compute instance-groups unmanaged set-named-ports \ {{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --named-ports=http:3000 \ --zone={{{project_0.startup_script.zone| Zone}}}

Ausgabe:

Updated [https://www.googleapis.com/compute/v1/projects//zones/{{{project_0.startup_script.zone| Zone}}}/instanceGroups/{{{project_0.startup_script.vm_instance_group| Instance Group}}}].

Klicken Sie auf Fortschritt prüfen. Cloud Load Balancer-Komponente einrichten: Instanzgruppe

Cloud Load Balancer-Komponente einrichten: Systemdiagnose

Nachdem Sie die nicht verwaltete Instanzgruppe erstellt haben, erstellen Sie eine Systemdiagnose, einen Backend-Dienst, eine URL-Zuordnung, einen Ziel-Proxy und eine Weiterleitungsregel.

  • Geben Sie in der Cloud Shell den folgenden Befehl ein, um die Systemdiagnose für den Dienstport von Juice Shop zu erstellen:
gcloud compute health-checks create tcp tcp-port-3000 \ --port 3000

Ausgabe:

Created NAME PROTOCOL tcp-port-3000 TCP

Cloud Load Balancer-Komponente einrichten: Backend-Dienst

  1. Geben Sie in der Cloud Shell den folgenden Befehl ein, um die Parameter für den Backend-Dienst zu erstellen:
gcloud compute backend-services create juice-shop-backend \ --protocol HTTP \ --port-name http \ --health-checks tcp-port-3000 \ --enable-logging \ --global

Ausgabe:

NAME BACKENDS PROTOCOL juice-shop-backend HTTP
  1. Fügen Sie dem Backend-Dienst die Juice Shop-Instanzgruppe hinzu:
gcloud compute backend-services add-backend juice-shop-backend \ --instance-group={{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --instance-group-zone={{{project_0.startup_script.zone| Zone}}} \ --global

Ausgabe:

Updated [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/backendServices/juice-shop-backend].

Cloud Load Balancer-Komponente einrichten: URL-Zuordnung

  • Geben Sie in der Cloud Shell den folgenden Befehl ein, um die URL-Zuordnung zu erstellen, mit der eingehende Anfragen an das Backend gesendet werden:
gcloud compute url-maps create juice-shop-loadbalancer \ --default-service juice-shop-backend

Ausgabe:

NAME DEFAULT_SERVICE juice-shop-loadbalancer backendServices/juice-shop-backend

Cloud Load Balancer-Komponente einrichten: Ziel-Proxy

  • Geben Sie in der Cloud Shell den folgenden Befehl ein, um den Ziel-Proxy zu erstellen, der eingehende Anfragen an die URL-Zuordnung weiterleitet:
gcloud compute target-http-proxies create juice-shop-proxy \ --url-map juice-shop-loadbalancer

Ausgabe:

NAME URL_MAP juice-shop-proxy juice-shop-loadbalancer

Cloud Load Balancer-Komponente einrichten: Weiterleitungsregel

  • Geben Sie in der Cloud Shell den folgenden Befehl ein, um die Weiterleitungsregel für den Load Balancer zu erstellen:
gcloud compute forwarding-rules create juice-shop-rule \ --global \ --target-http-proxy=juice-shop-proxy \ --ports=80

Ausgabe:

Created [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/forwardingRules/juice-shop-rule].

Prüfen, ob der Juice Shop-Dienst online ist

  1. In der Cloud Shell:
PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule --global --format="value(IPAddress)")" echo $PUBLIC_SVC_IP

Ausgabe:

<öffentliche virtuelle IP-Adresse des Dienstes>

Warten Sie einige Minuten, bevor Sie fortfahren, da Sie sonst möglicherweise den Fehler HTTP/1.1 404 Nicht gefunden erhalten.

  1. In der Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP

Ausgabe:

HTTP/1.1 200 OK <...>

Sie können Juice Shop auch im Browser aufrufen.

Die Seite „Willkommen bei OWASP Juice Shop“

Sie können sich jetzt die Sicherheitslücken von Juice Shop ansehen und sich mit Cloud Armor-WAF-Regelsätzen vor ihnen schützen.

Klicken Sie auf Fortschritt prüfen. Cloud Load Balancer-Komponente einrichten – Systemdiagnose

Aufgabe 3: Bekannte Sicherheitslücken demonstrieren

In diesem Lab demonstrieren Sie die Zustände vor und nach der Weitergabe der Cloud Armor-WAF-Regeln in grundlegenden Schritten.

LFI-Sicherheitslücke beobachten: Path Traversal

Bei der Local File Inclusion werden Dateien auf dem Server aufgerufen, indem die fehlende Eingabevalidierung in der Anfrage ausgenutzt wird. Dadurch werden möglicherweise sensible Daten offengelegt. Das folgende Beispiel zeigt, dass ein Path Traversal möglich ist. Sehen Sie sich in Ihrem Browser oder mit curl einen vorhandenen Pfad an, der von der Anwendung bereitgestellt wird.

  1. In der Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP/ftp

Ausgabe:

HTTP/1.1 200 OK <...>

Sie werden feststellen, dass auch Path Traversal funktioniert.

  1. In der Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP/ftp/../

Ausgabe:

HTTP/1.1 200 OK <...>

RCE-Sicherheitslücke beobachten

Die Remote-Codeausführung umfasst verschiedene UNIX- und Windows-Befehlseinschleusungsszenarien, mit denen Angreifende Betriebssystembefehle ausführen können, die normalerweise privilegierten Nutzerinnen und Nutzern vorbehalten sind. Das folgende Beispiel zeigt die Ausführung eines einfachen ls-Befehls, der übergeben wurde.

  • In der Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

Ausgabe:

HTTP/1.1 200 OK <...>

Entfernen Sie die curl-Flags, um die vollständige Ausgabe zu sehen.

Zugriff eines bekannten Scanners beobachten

Es gibt sowohl kommerzielle als auch Open-Source-Scan-Anwendungen, die für verschiedene Zwecke genutzt werden, zum Beispiel, um Sicherheitslücken zu finden. Diese Tools verwenden bekannte User-Agent- und andere Header. Sie werden feststellen, dass „curl“ mit einem bekannten User-Agent-Header funktioniert.

  • In der Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

Ausgabe:

HTTP/1.1 200 OK <...>

Protokollangriff beobachten: HTTP-Splitting

Einige Webanwendungen generieren Header in den Antworten anhand von Nutzereingaben. Wenn die Anwendung die Eingabe nicht richtig filtert, können Angreifende den Eingabeparameter mit der Sequenz %0d%0a manipulieren (die CRLF-Sequenz, mit der unterschiedliche Zeilen getrennt werden).

Die Antwort könnte dann von allem, was sie parst, wie einem zwischengeschalteten Proxyserver, als zwei Antworten interpretiert werden. Dadurch werden bei nachfolgenden Anfragen möglicherweise falsche Inhalte bereitgestellt. Fügen Sie die Sequenz %0d%0a in den Eingabeparameter ein. Dadurch wird unter Umständen eine irreführende Seite bereitgestellt.

  • In der Cloud Shell:
curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"

Ausgabe:

HTTP/1.1 200 OK <...>

Session Fixation beobachten

  • In der Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP -H session_id=X

Ausgabe:

HTTP/1.1 200 OK <...>

Aufgabe 4: Cloud Armor-WAF-Regeln definieren

  1. Listen Sie die vorkonfigurierten WAF-Regeln mit dem folgenden Befehl in der Cloud Shell auf:
gcloud compute security-policies list-preconfigured-expression-sets EXPRESSION_SET Sqli-canary RULE_ID owasp-crs-v030001-id942110-sqli owasp-crs-v030001-id942120-sqli <...>
  1. Erstellen Sie mit dem folgenden Befehl in der Cloud Shell die Cloud Armor-Sicherheitsrichtlinie:
gcloud compute security-policies create {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "Block with OWASP ModSecurity CRS"
  1. Aktualisieren Sie in der Cloud Shell die Standardregel der Sicherheitsrichtlinie.
Hinweis: Die Priorität der Standardregel hat den numerischen Wert 2147483647. gcloud compute security-policies rules update 2147483647 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --action "deny-403"
  1. Da die Standardregel mit der Aktion „Ablehnen“ konfiguriert ist, müssen Sie den Zugriff von Ihrer IP-Adresse aus zulassen. Bestimmen Sie Ihre öffentliche IP-Adresse (curl, ipmonkey, whatismyip usw.):
MY_IP=$(curl ifconfig.me)
  1. Fügen Sie die erste Regel hinzu, um den Zugriff von Ihrer IP-Adresse aus zuzulassen (FÜGEN SIE IHRE IP-ADRESSE UNTEN EIN):
gcloud compute security-policies rules create 10000 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "allow traffic from my IP" \ --src-ip-ranges "$MY_IP/32" \ --action "allow"
  1. Aktualisieren Sie in der Cloud Shell die Sicherheitsrichtlinie, um LFI-Angriffe zu blockieren.

Wenden Sie das OWASP ModSecurity Core Rule Set an, das Path Traversal für Local File Inclusions verhindert.

gcloud compute security-policies rules create 9000 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block local file inclusion" \ --expression "evaluatePreconfiguredExpr('lfi-stable')" \ --action deny-403
  1. Aktualisieren Sie in der Cloud Shell die Sicherheitsrichtlinie, um die Remote-Codeausführung (RCE) zu blockieren.

Wenden Sie gemäß dem OWASP ModSecurity Core Rule Set Regeln an, die nach RCE suchen, einschließlich Befehlsinjektion. Typische Betriebssystembefehle werden erkannt und blockiert.

gcloud compute security-policies rules create 9001 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block rce attacks" \ --expression "evaluatePreconfiguredExpr('rce-stable')" \ --action deny-403
  1. Aktualisieren Sie die Sicherheitsrichtlinie, um Sicherheitsscanner zu blockieren.

Wenden Sie das OWASP ModSecurity Core Rule Set an, um bekannte Sicherheitsscanner, HTTP-Scripting-Clients und Web-Crawler zu blockieren.

gcloud compute security-policies rules create 9002 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block scanners" \ --expression "evaluatePreconfiguredExpr('scannerdetection-stable')" \ --action deny-403
  1. Aktualisieren Sie in der Cloud Shell die Sicherheitsrichtlinie, um Protokollangriffe zu blockieren.

Wenden Sie gemäß dem OWASP ModSecurity Core Rule Set Regeln an, die nach Zeilenumbruchzeichen (%0d) und Zeilenvorschubzeichen (%0a) sowie anderen Arten von Protokollangriffen wie HTTP Request Smuggling suchen.

gcloud compute security-policies rules create 9003 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block protocol attacks" \ --expression "evaluatePreconfiguredExpr('protocolattack-stable')" \ --action deny-403
  1. Aktualisieren Sie die Sicherheitsrichtlinie, damit Session Fixation verhindert wird.

Wenden Sie gemäß dem OWASP ModSecurity Core Rule Set die folgenden Regeln mithilfe der Cloud Shell an:

gcloud compute security-policies rules create 9004 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block session fixation attacks" \ --expression "evaluatePreconfiguredExpr('sessionfixation-stable')" \ --action deny-403
  1. Hängen Sie die Sicherheitsrichtlinie an den Backend-Dienst an:
gcloud compute backend-services update juice-shop-backend \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --global

Es kann etwas dauern, bis die Regeln wirksam werden (maximal aber 10 Minuten).

  1. Wenn genügend Zeit vergangen ist, testen Sie im nächsten Schritt die zuvor demonstrierten Sicherheitslücken, um zu bestätigen, dass die Cloud Armor-WAF-Regel erzwungen wurde.

Klicken Sie auf Fortschritt prüfen. Cloud Armor-Sicherheitsrichtlinie erstellen

Cloud Armor-Schutz mit OWASP ModSecurity Core Rule Set prüfen

  1. Prüfen Sie in der Cloud Shell, ob die LFI-Sicherheitslücke behoben wurde:
curl -Ii http://$PUBLIC_SVC_IP/?a=../

Ausgabe:

HTTP/1.1 403 Forbidden <...>
  1. Prüfen Sie in der Cloud Shell, ob der RCE-Angriff abgewehrt wurde:
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

Ausgabe:

HTTP/1.1 403 Forbidden <..>
  1. Prüfen Sie in der Cloud Shell, ob bekannte Scanner erkannt wurden.
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

Ausgabe:

HTTP/1.1 403 Forbidden <..>
  1. Prüfen Sie in der Cloud Shell, ob ein Protokollangriff verhindert wurde.

Gemäß OWASP ModSecurity Core Rule Set Version 3.0.2 wird der Protokollangriff durch Folgendes abgewehrt:

curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"

Ausgabe:

HTTP/1.1 403 Forbidden <..>
  1. Prüfen Sie in der Cloud Shell, ob Versuche zur Session Fixation blockiert werden:
curl -Ii http://$PUBLIC_SVC_IP/?session_id=a

Ausgabe:

HTTP/1.1 403 Forbidden <..>

Aufgabe 5: Cloud Armor-Sicherheitsregeln prüfen

Nachdem Sie die Sicherheitsrichtlinie erstellt haben, sehen Sie sich die konfigurierten Regeln an.

Seite „Regeln“ mit Tabs, auf der mehrere Regeln und ihre jeweilige Beschreibung zu finden sind

Regeln werden nach Priorität bewertet: Niedrigere Zahlen werden zuerst bewertet. Sobald eine Regel ausgelöst wurde, wird die Verarbeitung für Regeln mit höheren Prioritätswerten nicht fortgesetzt.

  • Priorität 9000: LFI blockieren (Local File Inclusion)
  • Priorität 9001: RCE-Angriffe blockieren (Remote-Codeausführung/Befehlsinjektion)
  • Priorität 9002: erkannte Scanner blockieren
  • Priorität 9003: Protokollangriffe wie HTTP-Splitting und HTTP-Smuggling blockieren
  • Priorität 9004: Session Fixation-Angriffen blockieren
  • Priorität 10000: Ihrer IP-Adresse den Zugriff auf die Website gewähren
  • Priorität Standard: ablehnen.
Hinweis: Die Regel „Ihrer IP-Adresse den Zugriff auf die Website gewähren“ hat die höchste Prioritätsnummer, damit der Zugriff auf die Website ermöglicht wird, aber alle Angriffe blockiert werden.

Aufgabe 6: Logs von Cloud Armor-Sicherheitsrichtlinien beobachten

Rufen Sie auf der Cloud Armor-Konsolenseite die Details der Sicherheitsrichtlinie auf. Klicken Sie auf den Tab „Logs“ und dann auf den Link „Richtlinienlogs ansehen“, um zur Cloud Logging-Seite zu gelangen. Es wird automatisch nach der relevanten Sicherheitsrichtlinie gefiltert, zum Beispiel resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:. Sehen Sie sich die Antwortcodes des Fehlers 403 an und erweitern Sie die Logdetails, um den Namen der erzwungenen Sicherheitsrichtlinie, den übereinstimmenden Feldwert und weiter unten die vorkonfigurierten Ausdrucks-IDs (oder die Signatur-ID) zu sehen.

Es wird automatisch nach der relevanten Sicherheitsrichtlinie gefiltert, zum Beispiel resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:().

  • Sehen Sie sich die Antwortcodes des Fehlers 403 an und erweitern Sie die Logdetails, um den Namen der erzwungenen Sicherheitsrichtlinie, den übereinstimmenden Feldwert und weiter unten die vorkonfigurierten Ausdrucks-IDs (oder die Signatur-ID) zu sehen.

Die folgenden Screenshots zeigen Beispiele für die Logs der erzwungenen Sicherheitsrichtlinien, die in diesem Lab konfiguriert wurden.

LFI-Log Das LFI-Log

RCE-Log Das RCE-Log

Scannererkennungslog Das Scannererkennungslog

Protokollangriffslog Das Protokollangriffslog

Session Fixation-Log Das Session Fixation-Log

Glückwunsch!

Sie haben mithilfe von Google Cloud Armor-WAF-Regeln erfolgreich einige der häufigsten Sicherheitslücken behoben.

Anleitung zuletzt am 12. Mai 2025 aktualisiert

Lab zuletzt am 12. Mai 2025 getestet

© 2026 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.

Vorbereitung

  1. Labs erstellen ein Google Cloud-Projekt und Ressourcen für einen bestimmten Zeitraum
  2. Labs haben ein Zeitlimit und keine Pausenfunktion. Wenn Sie das Lab beenden, müssen Sie von vorne beginnen.
  3. Klicken Sie links oben auf dem Bildschirm auf Lab starten, um zu beginnen

Privates Surfen verwenden

  1. Kopieren Sie den bereitgestellten Nutzernamen und das Passwort für das Lab
  2. Klicken Sie im privaten Modus auf Konsole öffnen

In der Konsole anmelden

  1. Melden Sie sich mit Ihren Lab-Anmeldedaten an. Wenn Sie andere Anmeldedaten verwenden, kann dies zu Fehlern führen oder es fallen Kosten an.
  2. Akzeptieren Sie die Nutzungsbedingungen und überspringen Sie die Seite zur Wiederherstellung der Ressourcen
  3. Klicken Sie erst auf Lab beenden, wenn Sie das Lab abgeschlossen haben oder es neu starten möchten. Andernfalls werden Ihre bisherige Arbeit und das Projekt gelöscht.

Diese Inhalte sind derzeit nicht verfügbar

Bei Verfügbarkeit des Labs benachrichtigen wir Sie per E-Mail

Sehr gut!

Bei Verfügbarkeit kontaktieren wir Sie per E-Mail

Es ist immer nur ein Lab möglich

Bestätigen Sie, dass Sie alle vorhandenen Labs beenden und dieses Lab starten möchten

Privates Surfen für das Lab verwenden

Am besten führen Sie dieses Lab in einem Inkognito- oder privaten Browserfenster aus. So vermeiden Sie Konflikte zwischen Ihrem privaten Konto und dem Teilnehmerkonto, die zusätzliche Kosten für Ihr privates Konto verursachen könnten.

Führen Sie diesen kurzen Schritt aus, um Ihr Lab zu starten.