Codelab zu vorkonfigurierten WAF-Regeln in Cloud Armor

1. Einführung

Hallo! Willkommen beim Codelab zu vorkonfigurierten WAF-Regeln in Cloud Armor.

Google Cloud Armor ist die Edge-Netzwerksicherheitslösung von Google für Unternehmen, die DDoS-Schutz, WAF-Regelerzwingung und adaptive Verwaltung im großen Maßstab bietet.

Cloud Armor hat die vorkonfigurierten WAF-Regelsätze erweitert, um die Sicherheitslücken der OWASP-Top-10-Webanwendungen zu verringern. Die Regelsätze basieren auf dem OWASP Modsecurity Core Rule Set Version 3.0.2 und schützen sie vor einigen der häufigsten Sicherheitsrisiken für Webanwendungen, darunter lokale Dateieinschluss (lfi), Remote File Inclusion (rfi), Remote Code Execution (rce) und vieles mehr.

In diesem Codelab erfahren Sie, wie Sie einige der häufigen Sicherheitslücken mithilfe von Google Cloud Armor-WAF-Regeln minimieren können.

Aufgaben in diesem Lab

  • Eine Instanzgruppe und einen globalen Load Balancer zur Unterstützung eines Dienstes einrichten
  • Cloud Armor-Sicherheitsrichtlinien mit vorkonfigurierten WAF-Regeln konfigurieren, um sie vor lfi, rce, Scannern, Protokollangriffen und Sitzungskorrektur zu schützen
  • Hier erfahren Sie, wie Sie prüfen, ob Cloud Armor einen Angriff durch Beobachtung von Logs abschwächen kann.

Voraussetzungen

  • Grundkenntnisse der Google Compute Engine ( Codelab)
  • Grundkenntnisse in den Bereichen Netzwerk und TCP/IP
  • Grundkenntnisse zu Unix/Linux-Befehlszeilen
  • Es ist hilfreich, eine Tour zum Thema Netzwerk in der GCP mit dem Kurs Networking in the Google Cloud zu absolvieren.
  • (Optional) Absolvieren Sie das Lab Cloudnet20 Cloud Armor zum Schutz von Arbeitslasten mit SQL-Injection sowie IP- und geobasierten Regeln.

Codelab-Topologie und Anwendungsfall

119e13312f3cec25.jpeg

Abbildung 1: Codelab-Topologie für Cloud Armor-WAF-Regeln

Die OWASP Juice Shop App ist nützlich für Sicherheitsschulungen und das Bewusstsein, da sie standardmäßig Instanzen jeder der OWASP Top-10-Sicherheitslücken enthält. Ein Angreifer kann sie zu Testzwecken ausnutzen. In diesem Codelab zeigen wir Ihnen einige Anwendungsangriffe, gefolgt vom Schutz der Anwendung mit Cloud Armor-WAF-Regeln. Vor der Anwendung steht ein Google Cloud-Load-Balancer, auf den die Cloud Armor-Sicherheitsrichtlinie und die Cloud Armor-Regeln angewendet werden. Sie wird über das öffentliche Internet bereitgestellt und ist somit von fast jedem Ort aus erreichbar. Außerdem wird sie durch Cloud Armor- und VPC-Firewallregeln geschützt.

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. Melden Sie sich in der 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

Notieren Sie sich die Projekt-ID, also den projektübergreifend nur einmal vorkommenden Namen eines Google Cloud-Projekts. Der oben angegebene Name ist bereits vergeben und kann leider nicht mehr verwendet werden. Sie wird in diesem Codelab später als PROJECT_ID bezeichnet.

  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Google Cloud-Ressourcen nutzen zu können.

Dieses Codelab sollte möglichst wenig kosten. Folgen Sie der Anleitung im Abschnitt „Bereinigen“, . Hier erfahren Sie, wie Sie Ressourcen herunterfahren, damit Ihnen über dieses Tutorial hinaus keine Kosten entstehen. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion mit 300$Guthaben.

Cloud Shell starten

Sie können Google Cloud zwar von Ihrem Laptop 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.

Hinweis

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
echo $PROJECT_ID

APIs aktivieren

Alle erforderlichen Dienste aktivieren

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

3. VPC‑Netzwerk erstellen

VPC-Netzwerk erstellen

Von Cloud Shell

gcloud compute networks create ca-lab-vpc --subnet-mode custom

Ausgabe

Created
NAME        SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE  GATEWAY_IPV4
ca-lab-vpc  CUSTOM       REGIONAL

Subnetz erstellen

Von Cloud Shell

gcloud compute networks subnets create ca-lab-subnet \
        --network ca-lab-vpc --range 10.0.0.0/24 --region us-central1

Ausgabe

Created 
NAME           REGION       NETWORK       RANGE
ca-lab-subnet  us-central1  ca-lab-vpc    10.0.0.0/24

VPC-Firewallregeln erstellen

Nachdem Sie die VPC und das Subnetz erstellt haben, können Sie einige Firewallregeln einrichten. Die erste Firewallregel wird verwendet, um allen IP-Adressen den Zugriff auf die externe IP-Adresse der Website der Testanwendung über Port 3000 zu ermöglichen. Die zweite Firewallregel wird verwendet, um Systemdiagnosen von den Quell-IP-Adressen der Load-Balancer zuzulassen.

Von Cloud Shell

gcloud compute firewall-rules create allow-js-site --allow tcp:3000 --network ca-lab-vpc

Ausgabe

Creating firewall...done.
NAME           NETWORK     DIRECTION  PRIORITY  ALLOW     DENY  DISABLED
allow-js-site  ca-lab-vpc  INGRESS    1000      tcp:3000        False

FW-Regeln erstellen, um Systemdiagnosen aus den Google-Systemdiagnosebereichen zuzulassen

Von Cloud Shell

gcloud compute firewall-rules create allow-health-check \
    --network=ca-lab-vpc \
    --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
allow-health-check  ca-lab-vpc  INGRESS    1000      tcp          False

4. Testanwendung einrichten

Im nächsten Schritt erstellen Sie die Testanwendung, in diesem Fall den OWASP Juice Shop-Webserver.

Beim Erstellen der Compute-Instanz wird ein Container-Image verwendet, damit der Server über die entsprechenden Dienste verfügt. Dieser Server wird in us-central1-c bereitgestellt und hat ein Netzwerk-Tag, das Systemdiagnosen ermöglicht.

OWASP Juice Shop-Anwendung erstellen

Verwenden Sie die bekannte Open-Source-Anwendung OWASP Juice Shop, um als anfällige Anwendung zu fungieren. Sie können diese Anwendung auch verwenden, um OWASP-Sicherheitsherausforderungen über die Website durchzuführen.

Von Cloud Shell

gcloud compute instances create-with-container owasp-juice-shop-app --container-image bkimminich/juice-shop \
     --network ca-lab-vpc \
     --subnet ca-lab-subnet \
     --private-network-ip=10.0.0.3 \
     --machine-type n1-standard-2 \
     --zone us-central1-c \
     --tags allow-healthcheck

Ausgabe

NAME                  ZONE           MACHINE_TYPE   PREEMPTIBLE  
owasp-juice-shop-app  us-central1-c  n1-standard-2               

INTERNAL_IP  EXTERNAL_IP     STATUS
10.0.0.3     <public IP>     RUNNING

Cloud-Load-Balancer-Komponente einrichten: Instanzgruppe

Erstellen Sie die nicht verwaltete Instanzgruppe.

Von Cloud Shell

gcloud compute instance-groups unmanaged create juice-shop-group \
    --zone=us-central1-c

Ausgabe

NAME              LOCATION       SCOPE  NETWORK  MANAGED  INSTANCES
juice-shop-group  us-central1-c  zone                     0

Fügen Sie der nicht verwalteten Instanzgruppe die Juice Shop GCE-Instanz hinzu.

Von Cloud Shell

gcloud compute instance-groups unmanaged add-instances juice-shop-group \
    --zone=us-central1-c \
    --instances=owasp-juice-shop-app

Ausgabe

Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].

Legen Sie den benannten Port auf den Port der Juice Shop-Anwendung fest.

Von Cloud Shell

gcloud compute instance-groups unmanaged set-named-ports \
juice-shop-group \
   --named-ports=http:3000 \
   --zone=us-central1-c

Ausgabe

Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].

Nachdem Sie die nicht verwaltete Instanzgruppe erstellt haben, erstellen Sie im nächsten Schritt eine Systemdiagnose, einen Back-End-Dienst, eine URL-Zuordnung, einen Zielproxy und eine Weiterleitungsregel.

Cloud-Load-Balancer-Komponente einrichten: Systemdiagnose

Erstellen Sie die Systemdiagnose für den Dienstport von Juice Shop.

Von Cloud Shell

gcloud compute health-checks create tcp tcp-port-3000 \
        --port 3000

Ausgabe

Created 
NAME           PROTOCOL
tcp-port-3000  TCP

Cloud-Load-Balancer-Komponente einrichten: Back-End-Dienst

Erstellen Sie die Parameter für den Back-End-Dienst.

Von Cloud Shell

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

Fügen Sie dem Back-End-Dienst die Juice Shop-Instanzgruppe hinzu.

Von Cloud Shell

 gcloud compute backend-services add-backend juice-shop-backend \
        --instance-group=juice-shop-group \
        --instance-group-zone=us-central1-c \
        --global

Ausgabe

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

Richten Sie die Cloud-Load-Balancer-Komponente: URL-Zuordnung ein.

Erstellen Sie die URL-Zuordnung, die an das Back-End gesendet werden soll.

Von Cloud Shell

gcloud compute url-maps create juice-shop-loadbalancer \
        --default-service juice-shop-backend

Ausgabe

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

Richten Sie die Cloud-Load-Balancer-Komponente: Zielproxy ein.

Erstellen Sie den Zielproxy für die URL-Zuordnung.

Von Cloud Shell

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

Erstellen Sie die Weiterleitungsregel für den Load-Balancer.

Von Cloud Shell

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

Von Cloud Shell

PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule  --global --format="value(IPAddress)")"

Von Cloud Shell

echo $PUBLIC_SVC_IP

Ausgabe

<public VIP of service>

Warten Sie einige Minuten, bevor Sie fortfahren. Andernfalls erhalten Sie möglicherweise die Antwort „HTTP/1.1 404 Not Found“.

Von Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP

Ausgabe

HTTP/1.1 200 OK
<...>

Du kannst auch den Browser öffnen, um den Saft-Shop aufzurufen!

428c18eee6708c28.png

Wir sind jetzt bereit, die Sicherheitslücken von Juice Shop zu untersuchen und zu erfahren, wie Sie sich mit Cloud Armor-WAF-Regelsätzen davor schützen können.

5. Bekannte Sicherheitslücken aufzeigen

Um Zeit zu sparen, werden wir die Status vor und nach der Übertragung der Cloud Armor-WAF-Regeln in zusammengefassten Schritten darstellen.

LFI-Sicherheitslücken beobachten: Path Traversal

Die lokale Dateiaufnahme ist der Prozess der Beobachtung von Dateien, die auf dem Server vorhanden sind, indem die fehlende Eingabevalidierung in der Anfrage ausgenutzt wird, um potenziell sensible Daten preiszugeben. Im Folgenden wird einfach gezeigt, wie ein Pfaddurchlauf möglich ist. Beobachten Sie im Browser oder mit curl einen vorhandenen Pfad, der von der Anwendung bereitgestellt wird.

Von Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp

Ausgabe

HTTP/1.1 200 OK
<...>

Beachten Sie auch, dass der Pfaddurchlauf ebenfalls funktioniert:

Von Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp/../

Ausgabe

HTTP/1.1 200 OK
<...>

RCE-Sicherheitslücken beobachten

Die Remote-Codeausführung umfasst verschiedene Szenarien für das Einschleusen von UNIX- und Windows-Befehlen, mit denen Angreifer Betriebssystembefehle ausführen können, die normalerweise privilegierten Benutzern vorbehalten sind. Im Folgenden sehen Sie eine einfache Ausführung des Befehls „ls“, die übergeben wurde.

Von Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

Ausgabe

HTTP/1.1 200 OK
<...>

Sie können die curl-Flags entfernen, um die vollständige Ausgabe zu beobachten.

Zugriff eines bekannten Scanners beobachten

Sowohl kommerzielle als auch Open-Source-Scananwendungen für verschiedene Zwecke, einschließlich zum Scannen auf Sicherheitslücken. Diese Tools verwenden bekannte User-Agent-Header und andere Header. Sehen Sie sich an, wie curl mit einem bekannten User-Agent-Header funktioniert:

Von Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

Ausgabe

HTTP/1.1 200 OK
<...>

Protokollangriff beobachten: HTTP-Splitting

Einige Webanwendungen verwenden Eingaben des Nutzers, um die Header in den Antworten zu generieren. Wenn die Anwendung die Eingabe nicht ordnungsgemäß filtert, kann ein Angreifer den Eingabeparameter möglicherweise mit der Sequenz %0d%0a (der CRLF-Sequenz, die zum Trennen verschiedener Zeilen verwendet wird) manipulieren. Die Antwort könnte dann von einem beliebigen Parsing-Vorgang als zwei Antworten interpretiert werden, z. B. durch einen zwischengeschalteten Proxyserver, der bei nachfolgenden Anfragen möglicherweise falsche Inhalte liefert. Fügen Sie die Sequenz %0d%0a in den Eingabeparameter ein, was dazu führen kann, dass eine irreführende Seite angezeigt wird.

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

Sitzungskorrektur beobachten

Von Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP -H session_id=X

Ausgabe

HTTP/1.1 200 OK
<...>

6. Cloud Armor-WAF-Regeln definieren

Listen Sie die vorkonfigurierten WAF-Regeln auf:

Von Cloud Shell

gcloud compute security-policies list-preconfigured-expression-sets

Ausgabe

EXPRESSION_SET
Sqli-canary
RULE_ID
    owasp-crs-v030001-id942110-sqli
    owasp-crs-v030001-id942120-sqli
<...>

Cloud Armor-Sicherheitsrichtlinie erstellen

In Cloud Shell:

gcloud compute security-policies create block-with-modsec-crs \
    --description "Block with OWASP ModSecurity CRS"

Standardregel für Sicherheitsrichtlinien aktualisieren

Beachten Sie, dass die Priorität der Standardregel den numerischen Wert 2147483647 hat.

In Cloud Shell:

gcloud compute security-policies rules update 2147483647 \
    --security-policy block-with-modsec-crs \
    --action "deny-403"

Da die Standardregel mit „Aktion ablehnen“ konfiguriert ist, müssen wir den Zugriff über Ihre IP-Adresse zulassen. Ermitteln Sie Ihre öffentliche IP-Adresse (curl, ipmonkey, whatismyip usw.).

In Cloud Shell:

MY_IP=$(curl ifconfig.me)

Fügen Sie die erste Regel hinzu, um den Zugriff über Ihre IP-Adresse zuzulassen (IHRE IP-Adresse UNTEN EINFÜGEN)

In Cloud Shell:

gcloud compute security-policies rules create 10000 \
    --security-policy  block-with-modsec-crs  \
    --description "allow traffic from my IP" \
    --src-ip-ranges "$MY_IP/32" \
    --action "allow"

Sicherheitsrichtlinie aktualisieren, um LFI-Angriffe zu blockieren

Wenden Sie den OWASP ModSecurity Core Rule Set an, das einen Pfaddurchlauf für lokale Dateieinschlüsse verhindert.

In Cloud Shell:

gcloud compute security-policies rules create 9000 \
    --security-policy block-with-modsec-crs  \
    --description "block local file inclusion" \
     --expression "evaluatePreconfiguredExpr('lfi-stable')" \
    --action deny-403

Sicherheitsrichtlinie aktualisieren, um Remote Code Execution (rce) zu blockieren

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

In Cloud Shell:

gcloud compute security-policies rules create 9001 \
    --security-policy block-with-modsec-crs  \
    --description "block rce attacks" \
     --expression "evaluatePreconfiguredExpr('rce-stable')" \
    --action deny-403

Sicherheitsrichtlinie aktualisieren, um Sicherheitsscanner zu blockieren

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

In Cloud Shell:

gcloud compute security-policies rules create 9002 \
    --security-policy block-with-modsec-crs  \
    --description "block scanners" \
     --expression "evaluatePreconfiguredExpr('scannerdetection-stable')" \
    --action deny-403

Sicherheitsrichtlinie aktualisieren, um Protokollangriffe zu blockieren

Wenden Sie gemäß dem OWASP ModSecurity Core Rule Set Regeln an, die nach den Zeichen Wagenrücklauf (CR) %0d und Linefeed (LF) %0a und anderen Arten von Protokollangriffen wie HTTP Request Smuggling suchen.

In Cloud Shell:

gcloud compute security-policies rules create 9003 \
    --security-policy block-with-modsec-crs  \
    --description "block protocol attacks" \
     --expression "evaluatePreconfiguredExpr('protocolattack-stable')" \
    --action deny-403

Sicherheitsrichtlinie aktualisieren, um die Sitzungskorrektur zu blockieren

Wenden Sie gemäß dem OWASP ModSecurity Core Rule Set Regeln an, die...

In Cloud Shell:

gcloud compute security-policies rules create 9004 \
    --security-policy block-with-modsec-crs  \
    --description "block session fixation attacks" \
     --expression "evaluatePreconfiguredExpr('sessionfixation-stable')" \
    --action deny-403

Sicherheitsrichtlinie an den Back-End-Dienst anhängen

In Cloud Shell:

gcloud compute backend-services update juice-shop-backend \
    --security-policy block-with-modsec-crs \
    --global

Es kann einige Zeit dauern, bis Regeln wirksam werden (aber nicht länger als 10 Minuten). Wenn ausreichend Zeit verstrichen ist, testen Sie die zuvor nachgewiesenen Sicherheitslücken, um die Erzwingung der Cloud Armor-WAF-Regel im nächsten Schritt zu bestätigen.

7. Cloud Armor-Schutz mit OWASP ModSecurity Core Rule Set beobachten

Prüfen, ob die LFI-Sicherheitslücke abgeschwächt ist

Von Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/?a=../

Ausgabe

HTTP/1.1 403 Forbidden
<...>

Prüfen, ob der RCE-Angriff abgemildert wird

Von Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

Ausgabe

HTTP/1.1 403 Forbidden
<..>

Erkennung von bekannten Scannern bestätigen

Von Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

Ausgabe

HTTP/1.1 403 Forbidden
<..>

Prüfen, ob ein Protokollangriff abgemildert wird

Gemäß dem OWASP ModSecurity Core Rule Set Version 3.0.2 wird der Protokollangriff durch

Von 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 403 Forbidden
<..>

Prüfen, ob Versuche zur Sitzungskorrektur blockiert werden

Von Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/?session_id=a

Ausgabe

HTTP/1.1 403 Forbidden
<..>

8. Cloud Armor-Sicherheitsregeln überprüfen

Nachdem Sie die Sicherheitsrichtlinie erstellt haben, sehen wir uns nun an, welche Regeln konfiguriert wurden.

d00e4102fc89e44f.png

Regeln werden nach Priorität ausgewertet: Niedrigere Zahlen werden zuerst ausgewertet. Nach dem Auslösen wird die Verarbeitung für Regeln mit höheren Prioritätswerten nicht fortgesetzt.

  • Priorität 9000 – LFI blockieren (Aufnahme lokaler Dateien)
  • Priorität 9001 – RCE blockieren (Remote-Codeausführung/Befehlseinschleusung)
  • Priorität 9002 – Blockscanner erkannt
  • Priorität 9003 – Blockprotokollangriffe wie HTTP-Splitting und HTTP-Smuggling
  • Priorität 9004 – Angriffe auf Sitzungsprobleme blockieren
  • Priorität 10000 – Ihrer IP-Adresse den Zugriff auf die Website erlauben
  • Standardeinstellung für Priorität – Ablehnen.

*Beachten Sie, dass die Meldung "Ihre IP-Adresse zulassen" ist mit der höchsten Priorität konfiguriert, um den Zugriff auf die Website zu ermöglichen, blockiert jedoch Angriffe.

9. Logs der Cloud Armor-Sicherheitsrichtlinie beobachten

Auf der Seite der Cloud Armor Console können Sie Details zur Sicherheitsrichtlinie ansehen. Klicken Sie auf den Tab Logs und dann auf den Link View policy logs, um zur Cloud Logging-Seite zu gelangen. Die automatische Filterung erfolgt auf der Grundlage der gewünschten Sicherheitsrichtlinie, z.B. resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs) Sehen Sie sich die 403-Fehlerantwortcodes an und maximieren Sie die Protokolldetails, um den Namen der erzwungenen Sicherheitsrichtlinie, den übereinstimmenden Feldwert und weiter unten die vorkonfigurierten Ausdruck-IDs (oder die Signatur-ID) zu sehen. Die folgenden Screenshots zeigen Beispiele für die Logs für die erzwungenen Sicherheitsrichtlinien, die in diesem Codelab konfiguriert wurden.

LFI-Protokoll

983a6cab0cff940d.png

RCE-Log

988a3a571f9d9d45.png

Scanner-Erkennungsprotokoll

7ed661863ba27555.png

Protokollangriffslog

17ee3cbe0bd98939.png

Protokoll zur Sitzungsfixierung

80d1ddfd0fe982e1.png

10. Lab-Bereinigung

Nachdem Sie das Lab abgeschlossen haben, bereinigen Sie die Ressourcen.

Führen Sie die folgenden Befehle aus, um die Cloud Armor-Sicherheitsrichtlinie, den Load-Balancer, die Instanzen, die Firewallregeln und das VPC-Netzwerk zu löschen.

Entfernen Sie die Cloud Armor-Sicherheitsrichtlinie aus dem Back-End-Dienst

gcloud -q compute backend-services update juice-shop-backend --security-policy "" --global

Cloud Armor-Sicherheitsrichtlinie löschen

Durch das Löschen der Sicherheitsrichtlinie werden die zugehörigen Regeln automatisch gelöscht.

gcloud -q compute security-policies delete block-with-modsec-crs

Load-Balancer-Ressourcen löschen

Zu diesen Load-Balancer-Ressourcen gehören die Weiterleitungsregel, HTTP-Zielproxys, URL-Zuordnungen, das Backend, die Systemdiagnosen und die Instanzgruppe.

gcloud -q compute forwarding-rules delete juice-shop-rule --global

gcloud -q compute target-http-proxies delete juice-shop-proxy

gcloud -q compute url-maps delete juice-shop-loadbalancer

gcloud -q compute backend-services delete juice-shop-backend \
    --global

gcloud -q compute health-checks delete tcp-port-3000

gcloud -q compute instance-groups unmanaged delete juice-shop-group --zone=us-central1-c

Instanz löschen

gcloud -q compute instances delete owasp-juice-shop-app --zone us-central1-c

Firewallregeln, Subnetz und VPC löschen

gcloud -q compute firewall-rules delete allow-health-check
gcloud -q compute firewall-rules delete allow-js-site
gcloud -q compute networks subnets delete ca-lab-subnet --region us-central1
gcloud -q compute networks delete ca-lab-vpc

11. Glückwunsch!

Sie haben das Codelab zu vorkonfigurierten WAF-Regeln in Cloud Armor abgeschlossen.

Behandelte Themen

  • Instanzgruppe und globalen Cloud-Load-Balancer einrichten
  • Cloud Armor-Sicherheitsrichtlinien mit vorkonfigurierten WAF-Regeln konfigurieren, um sie vor lfi, rce, Scannern, Protokollangriffen und Sitzungskorrektur zu schützen
  • So validieren Sie, ob Cloud Armor einige der OWASP-Top-10-Angriffe über Logs abgewehrt hat

Weiteres Vorgehen