Codelab zu vorkonfigurierten WAF-Regeln in Cloud Armor

1. Einführung

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

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ücken in Webanwendungen zu bieten. Die Regelsätze basieren auf dem OWASP-Modsecurity-Core Rule Set 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-Ausführung (RCE) und viele mehr.

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

Lerninhalte

  • 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

Voraussetzungen

  • Grundkenntnisse von Google Compute Engine ( Codelab)
  • Grundkenntnisse in den Bereichen Netzwerk und TCP/IP
  • Grundkenntnisse zu Unix/Linux-Befehlszeilen
  • Es ist hilfreich, wenn Sie bereits eine Einführung in die Vernetzung in der GCP mit Netzwerke in Google Cloud durchlaufen haben.
  • Optional: Führen Sie das Cloudnet20 Cloud Armor-Lab durch, um zu lernen, wie Sie Arbeitslasten mit SQL-Injection-, IP-basierten und standortbasierten Regeln schützen.

Codelab-Topologie und Anwendungsfall

119e13312f3cec25.jpeg

Abbildung 1: Topologie des Codelabs zu 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 Codelab 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.

2. Einrichtung und Anforderungen

Umgebung zum selbstbestimmten 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.pngb9a10ebdf5b5a448.pnga1e3c01a38fa61c2.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 später in diesem Codelab als PROJECT_ID bezeichnet.

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

Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Folgen Sie bitte der Anleitung im Abschnitt „Bereinigen“, in der Sie erfahren, wie Sie Ressourcen herunterfahren können, damit nach Abschluss dieser Anleitung keine Gebühren anfallen. Neue Nutzer von Google Cloud kommen für das kostenlose Testprogramm 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 alle Aufgaben in diesem Lab benötigen Sie lediglich einen Browser.

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

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

Über 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, richten Sie einige Firewallregeln ein. 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 der Quell-IP-Adresse der Load Balancer zuzulassen.

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

Erstellen Sie Firewallregeln, um Systemdiagnosen aus den Google-Systemdiagnosebereichen zuzulassen.

Über 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 verwenden wir ein Container-Image. So wird sichergestellt, dass der Server die entsprechenden Dienste hat. Dieser Server wird in us-central1-c bereitgestellt und 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.

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

Über 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 die Juice Shop-GCE-Instanz der nicht verwalteten Instanzgruppe hinzu.

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

Geben Sie für den benannten Port den Port der Juice Shop-Anwendung an.

Über 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 als Nächstes eine Systemdiagnose, einen Backend-Dienst, eine URL-Zuordnung, einen Ziel-Proxy und eine Weiterleitungsregel.

Cloud Load Balancer-Komponente einrichten: Systemdiagnose

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

Über 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: Backend-Dienst

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

Über 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 Backend-Dienst die Juice Shop-Instanzgruppe hinzu.

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

Cloud Load Balancer-Komponente einrichten: URL-Zuordnung

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

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

Cloud Load Balancer-Komponente einrichten: Ziel-Proxy

Erstellen Sie den Zielproxy, der der URL-Zuordnung vorangestellt wird.

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

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

Über Cloud Shell

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

Über Cloud Shell

echo $PUBLIC_SVC_IP

Ausgabe

<public VIP of service>

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

Über Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP

Ausgabe

HTTP/1.1 200 OK
<...>

Sie können Juice Shop auch im Browser aufrufen.

428c18eee6708c28.png

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

5. Bekannte Sicherheitslücken demonstrieren

Um Zeit zu sparen, demonstrieren wir 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 lediglich, 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.

Über Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp

Ausgabe

HTTP/1.1 200 OK
<...>

Sie werden feststellen, dass auch Path Traversal funktioniert:

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

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

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

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

Über Cloud Shell

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

Ausgabe

HTTP/1.1 200 OK
<...>

6. Cloud Armor-WAF-Regeln definieren

Vorkonfigurierte WAF-Regeln auflisten:

Über 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 der Cloud Shell:

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

Standardregel der Sicherheitsrichtlinie aktualisieren

Die Priorität der Standardregel hat den numerischen Wert 2147483647.

In der Cloud Shell:

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

Da die Standardregel mit der Aktion „Ablehnen“ konfiguriert ist, müssen wir den Zugriff von Ihrer IP-Adresse aus zulassen. Suchen Sie Ihre öffentliche IP-Adresse, beispielsweise mit curl, ipmonkey oder whatismyip.

In der Cloud Shell:

MY_IP=$(curl ifconfig.me)

Fügen Sie die erste Regel hinzu, um den Zugriff von Ihrer IP-Adresse aus zuzulassen (FÜGEN SIE IHRE IP-ADRESSE UNTEN EIN)

In der 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 das OWASP ModSecurity Core Rule Set an, das Path Traversal für Local File Inclusions verhindert.

In der 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 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.

In der 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, HTTP-Scripting-Clients und Web-Crawler zu blockieren.

In der 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 Zeilenumbruchzeichen (%0d) und Zeilenvorschubzeichen (%0a) sowie anderen Arten von Protokollangriffen wie HTTP Request Smuggling suchen.

In der 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 Session Fixation zu verhindern

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

In der 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 der Cloud Shell:

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

Es kann etwas dauern, bis die Regeln wirksam werden (maximal aber zehn Minuten). Wenn Sie sicher sind, dass 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.

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

Bestätigen, dass die LFI-Sicherheitslücke behoben wurde

Über Cloud Shell

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

Ausgabe

HTTP/1.1 403 Forbidden
<...>

Bestätigen, dass der RCE-Angriff abgewehrt wurde

Über Cloud Shell

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

Ausgabe

HTTP/1.1 403 Forbidden
<..>

Erkennung bekannter Scanner bestätigen

Über Cloud Shell

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

Ausgabe

HTTP/1.1 403 Forbidden
<..>

Bestätigen, dass ein Protokollangriff abgewehrt wurde

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

Über 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 Session Fixation blockiert werden

Über Cloud Shell

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

Ausgabe

HTTP/1.1 403 Forbidden
<..>

8. Cloud Armor-Sicherheitsregeln prüfen

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

d00e4102fc89e44f.png

Die Auswertung von Regeln erfolgt nach Priorität: Solche mit niedrigeren Zahlen werden zuerst ausgewertet. Sobald eine Regel ausgelöst wurde, wird die Verarbeitung von 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-Angriffe blockieren
  • Priorität 10000: Ihrer IP-Adresse den Zugriff auf die Website gewähren
  • Priorität „Default“: ablehnen

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

9. Logs von Cloud Armor-Sicherheitsrichtlinien beobachten

Auf der Cloud Armor-Konsolenseite können Sie die Details der Sicherheitsrichtlinie aufrufen. Klicken Sie auf den Tab Logs und dann auf den Link View policy logs, um zur Cloud Logging-Seite zu gelangen. Es wird automatisch nach der relevanten Sicherheitsrichtlinie gefiltert, z.B. resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs). 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 Codelab konfiguriert wurden.

LFI-Log

983a6cab0cff940d.png

RCE-Log

988a3a571f9d9d45.png

Scannererkennungslog

7ed661863ba27555.png

Protokollangriffslog

17ee3cbe0bd98939.png

Session-Fixation-Log

80d1ddfd0fe982e1.png

10. Lab bereinigen

Bereinigen Sie die Ressourcen, nachdem Sie das Lab abgeschlossen haben.

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

Cloud Armor-Sicherheitsrichtlinie aus dem Backend-Dienst entfernen

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

Cloud Armor-Sicherheitsrichtlinie löschen

Wenn Sie die Sicherheitsrichtlinie löschen, werden die zugehörigen Regeln automatisch gelöscht.

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

Load-Balancer-Ressourcen löschen

Zu den zu löschenden Load-Balancer-Ressourcen gehören die Weiterleitungsregel, die Ziel-HTTP-Proxys, die URL-Zuordnungen, das Back-End, 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!

Herzlichen Glückwunsch zum Abschluss des Codelabs zu vorkonfigurierten WAF-Regeln in Cloud Armor!

Behandelte Themen

  • Instanzgruppe und globalen Cloud Load Balancer 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 einige der OWASP-Top-10-Angriffe abgewehrt hat

Weiteres Vorgehen