Bot-Verwaltung mit Google Cloud Armor – reCAPTCHA

1. Einführung

Das HTTP(S)-Load-Balancing von Google Cloud wird an den weltweiten Edges des Google-Netzwerks in seinen Points of Presence (POPs) bereitgestellt. Der an einen HTTP(S)-Load-Balancer geleitete Nutzertraffic gelangt in den POP, der dem Nutzer am nächsten liegt, und wird dann über das globale Google-Netzwerk auf das nächstgelegene Backend mit ausreichender Kapazität verteilt.

Cloud Armor ist das Erkennungssystem von Google für DDoS-Angriffe (Distributed Denial of Service), das außerdem eine Web Application Firewall (WAF) bietet. Cloud Armor ist eng mit dem HTTP-Load-Balancer von Google Cloud verknüpft und schützt Anwendungen von Google Cloud-Kundenunternehmen vor Angriffen aus dem Internet. reCAPTCHA Enterprise ist ein Dienst, der Ihre Website vor Spam und Missbrauch schützt. Er basiert auf der vorhandenen reCAPTCHA API, die mithilfe erweiterter Risikoanalyseverfahren Menschen und Bots unterscheidet. Die Cloud Armor-Bot-Verwaltung bietet eine End-to-End-Lösung, die die Bot-Erkennung und -Bewertung von reCAPTCHA Enterprise mit der Durchsetzung durch Cloud Armor am Netzwerkrand kombiniert, um nachgeschaltete Anwendungen zu schützen.

In diesem Lab konfigurieren Sie einen HTTP-Load-Balancer mit einem Backend, wie im folgenden Diagramm dargestellt. Anschließend erfahren Sie, wie Sie einen Websiteschlüssel für das reCAPTCHA-Sitzungstoken einrichten und in Ihre Website einbetten. Außerdem erfahren Sie, wie Sie die Weiterleitung zur manuellen reCAPTCHA Enterprise-Aufgabe einrichten. Anschließend konfigurieren wir eine Cloud Armor-Richtlinie zur Bot-Verwaltung, um zu zeigen, wie die Bot-Erkennung Ihre Anwendung vor schädlichem Bot-Traffic schützt.

8b46e6728996bc0c.png

Lerninhalte

  • HTTP-Load-Balancer mit geeigneten Systemdiagnosen einrichten
  • So erstellen Sie einen Websiteschlüssel für die reCAPTCHA-WAF-Aufgabenseite und verknüpfen ihn mit einer Cloud Armor-Sicherheitsrichtlinie.
  • So erstellen Sie einen Websiteschlüssel für das reCAPTCHA-Sitzungstoken und installieren ihn auf Ihren Webseiten.
  • Eine Cloud Armor-Richtlinie für die Bot-Verwaltung erstellen
  • So prüfen Sie, ob die Richtlinie zur Bot-Verwaltung den Traffic gemäß den konfigurierten Regeln verarbeitet.

Voraussetzungen

  • Grundkenntnisse in den Bereichen Netzwerk und HTTP
  • Grundkenntnisse zu Unix/Linux-Befehlszeilen

2. Einrichtung und Anforderungen

Umgebung zum selbstbestimmten Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird und den Sie jederzeit aktualisieren können.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen (die in der Regel als PROJECT_ID angegeben wird). Wenn Ihnen die ID nicht gefällt, können Sie eine andere zufällige ID generieren oder eine eigene ID ausprobieren und sehen, ob sie verfügbar ist. Danach wird sie „eingefroren“.
  • Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Wenn Sie Ressourcen herunterfahren möchten, damit nach Abschluss dieses Codelabs keine Gebühren anfallen, folgen Sie der Anleitung zum Bereinigen am Ende des Codelabs. 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:

55efc1aaa7a4d3ad.png

Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Augenblicke dauern. Anschließend sehen Sie in etwa Folgendes:

7ffe5cbb04455448.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
gcloud services enable recaptchaenterprise.googleapis.com

3. Firewallregeln konfigurieren, um HTTP- und SSH-Traffic zu Backends zuzulassen

Konfigurieren Sie Firewallregeln, um HTTP-Traffic von den Google Cloud-Systemdiagnosen und vom Load Balancer zu den Backends zuzulassen. Konfigurieren Sie außerdem eine Firewallregel, um SSH-Verbindungen zu den Instanzen zu erlauben.

Wir verwenden das Standard-VPC-Netzwerk, das in Ihrem Projekt erstellt wurde. Erstellen Sie eine Firewallregel, um HTTP-Traffic an die Backends zuzulassen. Mit Systemdiagnosen wird ermittelt, zu welchen Instanzen eines Load Balancers neue Verbindungen aufgebaut werden können. Beim HTTP-Load-Balancing werden die Systemdiagnosetests für Ihre Instanzen mit Load Balancing über Adressen in den Bereichen 130.211.0.0/22 und 35.191.0.0/16 durchgeführt. Ihre VPC-Firewallregeln müssen diese Verbindungen zulassen. Außerdem kommunizieren die Load Balancer mit dem Backend über denselben IP-Bereich.

  1. Öffnen Sie in der Cloud Console das Navigationsmenü ( mainmenu.png) und klicken Sie dann auf VPC-Netzwerk > Firewall.

131fb495c9242335.png

  1. Sie sehen die folgenden Firewallregeln: ICMP, internal, RDP und SSH.Jedes Google Cloud-Projekt beginnt mit dem Netzwerk default und diesen Firewallregeln.
  2. Klicken Sie auf Firewallregel erstellen.
  3. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellung:

Attribut

Wert (Wert eingeben bzw. Option auswählen)

Name

default-allow-health-check

Netzwerk

default

Ziele

Angegebene Zieltags

Ziel-Tags

allow-health-check

Quellfilter

IP-Bereiche

Quell-IP-Bereiche

130.211.0.0/22, 35.191.0.0/16

Protokolle und Ports

Angegebene Protokolle und Ports, klicken Sie dann auf das Kästchen neben „tcp“. Geben Sie 80 als Portnummer ein.

  1. Klicken Sie auf Erstellen.

Alternativ können Sie die gcloud-Befehlszeile verwenden. Unten sehen Sie den Befehl:

gcloud compute firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=allow-health-check
  1. Erstellen Sie genauso eine Firewallregel, um SSH-Verbindungen zu den Instanzen zuzulassen:
gcloud compute firewall-rules create allow-ssh --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:22 --source-ranges=0.0.0.0/0 --target-tags=allow-health-check

4. Instanzvorlagen konfigurieren und verwaltete Instanzgruppen erstellen

Mit einer Instanzvorlage kann in einer verwalteten Instanzgruppe eine Gruppe identischer Instanzen eingerichtet werden. Erstellen Sie damit die Backends des HTTP-Load-Balancers.

Instanzvorlagen konfigurieren

Eine Instanzvorlage ist eine Ressource, die Sie zum Erstellen von VM-Instanzen und verwalteten Instanzgruppen verwenden. In Instanzvorlagen sind Maschinentyp, Image des Bootlaufwerks, Subnetz, Labels und andere Instanzattribute definiert. Erstellen Sie eine Instanzvorlage wie unten beschrieben.

  1. Öffnen Sie in der Cloud Console das Navigationsmenü ( mainmenu.png) und klicken Sie dann auf Compute Engine > Instanzvorlagen > Instanzvorlage erstellen.
  2. Geben Sie unter Name den Namen lb-backend-template ein.
  3. Wählen Sie unter Serie die Option N1 aus.
  4. Klicken Sie auf Netzwerk, Laufwerke, Sicherheit, Verwaltung , einzelne Mandanten.

1d0b7122f4bb410d.png

  1. Rufen Sie den Bereich Verwaltung auf und fügen Sie das folgende Skript in das Feld Startskript ein.
#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo a2ensite default-ssl
sudo a2enmod ssl
sudo vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
sudo echo "Page served from: $vm_hostname" | \
tee /var/www/html/index.html
  1. Klicken Sie auf den Tab Netzwerk und fügen Sie die Netzwerk-Tags hinzu: allow-health-check
  2. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellung:

Attribut

Wert (Wert eingeben bzw. Option auswählen)

Netzwerk (unter „Netzwerkschnittstellen“)

Standardeinstellung

Subnetz (unter „Netzwerkschnittstellen“)

default (us-east1)

Netzwerk-Tags

allow-health-check

  1. Klicken Sie auf Erstellen.
  2. Warten Sie, bis die Instanzvorlage erstellt wurde.

Verwaltete Instanzgruppe erstellen

  1. Klicken Sie auf der Seite Compute Engine im Menü auf der linken Seite auf Instanzgruppen.

ed419061ad2b982c.png

  1. Klicken Sie auf Instanzgruppe erstellen. Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus.
  2. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen Werte die Standardeinstellung:

Attribut

Wert (Wert eingeben bzw. Option auswählen)

Name

lb-backend-example

Standort

Einzelne Zone

Region

us-east1

Zone

us-east1-b

Instanzvorlage

lb-backend-template

Autoscaling

Kein Autoscaling

Anzahl der Instanzen

1

  1. Klicken Sie auf Erstellen.

Benannten Port zur Instanzgruppe hinzufügen

Legen Sie für Ihre Instanzgruppe einen HTTP-Dienst fest und ordnen Sie dem entsprechenden Port einen Portnamen zu. Der Load-Balancing-Dienst leitet den Traffic an den benannten Port weiter.

gcloud compute instance-groups set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone us-east1-b

5. HTTP Load Balancer konfigurieren

Konfigurieren Sie den HTTP-Load-Balancer so, dass er Traffic an Ihr Backend lb-backend-example: sendet:

Konfiguration starten

  1. Klicken Sie in der Cloud Console auf das Navigationsmenü ( mainmenu.png) > Netzwerkdienste > Load Balancing > Load Balancer erstellen.
  2. Klicken Sie unter HTTP(S) Load Balancing (HTTP(S)-Load-Balancing) auf Start configuration (Konfiguration starten).

4f8b8cb10347ecec.png

  1. Wählen Sie Vom Internet zu meinen VMs und Klassischer HTTP(S)-Load Balancer aus und klicken Sie auf Weiter.
  2. Legen Sie als Name „http-lb“ fest.

Backend konfigurieren

Backend-Dienste leiten eingehenden Traffic an ein oder mehrere verknüpfte Backends weiter. Jedes Backend besteht aus einer Instanzgruppe und zusätzlichen Metadaten zur Kapazität.

  1. Klicken Sie auf Backend-Konfiguration.
  2. Klicken Sie unter Backend-Dienste und Backend-Buckets auf Backend-Dienst erstellen.
  3. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellung:

Attribut

Wert (Option auswählen)

Name

http-backend

Protokoll

HTTP

Benannter Port

htp

Instanzgruppe

lb-backend-example

Portnummern

80

  1. Klicken Sie auf Fertig.
  2. Klicken Sie auf Backend hinzufügen.
  3. Klicken Sie unter Systemdiagnose auf Systemdiagnose erstellen.

168a9ba1062b1f45.png

  1. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen Werte die Standardeinstellung:

Attribut

Wert (Option auswählen)

Name

http-health-check

Protokoll

TCP

Port

80

dc45bc726bb4dfad.png

  1. Klicken Sie auf Speichern.
  2. Klicken Sie auf das Kästchen für Logging aktivieren.
  3. Legen Sie die Stichprobenrate auf 1 fest:

c8f884fa4a8cd50.png

  1. Klicken Sie auf Erstellen, um den Backend-Dienst zu erstellen.

1fd2ad21b1d32a95.png

Frontend konfigurieren

Host- und Pfadregeln bestimmen, wohin Ihr Traffic weitergeleitet wird. Sie könnten beispielsweise Traffic, der durch Videos entsteht, an ein Backend weiterleiten und Traffic, der aus statischen Daten entsteht, an ein anderes Backend. Allerdings konfigurieren wir im Rahmen dieses Labs keine Host- und Pfadregeln.

  1. Klicken Sie auf Frontend-Konfiguration.
  2. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellungen:

Attribut

Wert (Wert eingeben bzw. Option auswählen)

Protokoll

HTTP

IP-Version

IPv4

IP-Adresse

Sitzungsspezifisch

Port

80

  1. Klicken Sie auf Fertig.

HTTP-Load-Balancer prüfen und erstellen

  1. Klicken Sie auf Prüfen und abschließen.

478e5e51057af3a3.png

  1. Prüfen Sie die Backend-Dienste und das Frontend.
  2. Klicken Sie auf Erstellen.
  3. Warten Sie, bis der Load Balancer erstellt ist.
  4. Klicken Sie auf den Namen des Load Balancers (http-lb).
  5. Notieren Sie die IP-Adresse des Load Balancers für die nächste Aufgabe. Sie wird als [LB_IP_v4] bezeichnet.

6. HTTP Load Balancer testen

Nachdem Sie einen HTTP-Load-Balancer für Ihre Backends erstellt haben, prüfen Sie nun, ob der Traffic über den Backend-Service weitergeleitet wird. Öffnen Sie einen neuen Tab im Browser und rufen Sie http://[LB_IP_v4] auf, um den IPv4-Zugriff auf den HTTP Load Balancer zu testen. Ersetzen Sie [LB_IP_v4] durch die IPv4-Adresse des Load Balancers.

7. Websiteschlüssel für reCAPTCHA-Sitzungstoken und Aufgabenseite erstellen und bereitstellen

Die Integration von reCAPTCHA Enterprise for WAF und Google Cloud Armor bietet die folgenden Funktionen: reCAPTCHA-Aufgabenseite, reCAPTCHA-Aktionstokens und reCAPTCHA-Sitzungstokens. In diesem Codelab implementieren wir den Websiteschlüssel für das reCAPTCHA-Sitzungstoken und die Website für die reCAPTCHA-WAF-Aufgabenseite.

Websiteschlüssel für reCAPTCHA-Sitzungstoken und WAF-Aufgabenseite erstellen

Bevor Sie den Websiteschlüssel für das Sitzungstoken und den Websiteschlüssel für die Aufgabenseite erstellen, sollten Sie noch einmal prüfen, ob Sie die reCAPTCHA Enterprise API wie oben im Abschnitt „API aktivieren“ beschrieben aktiviert haben.

Das reCAPTCHA-JavaScript legt nach der Bewertung ein reCAPTCHA-Sitzungstoken als Cookie im Endnutzerbrowser fest. Dieser hängt das Cookie an und aktualisiert es, solange das reCAPTCHA-JavaScript aktiv bleibt.

  1. Erstellen Sie den Websiteschlüssel für das reCAPTCHA-Sitzungstoken und aktivieren Sie das WAF-Feature für den Schlüssel. Außerdem legen wir Cloud Armor als WAF-Dienst fest, um die Cloud Armor-Integration zu aktivieren.
gcloud recaptcha keys create --display-name=test-key-name \
   --web --allow-all-domains --integration-type=score --testing-score=0.5 \
   --waf-feature=session-token --waf-service=ca
  1. Die Ausgabe des obigen Befehls enthält den erstellten Schlüssel. Notieren Sie sich den Code, da wir ihn im nächsten Schritt in Ihre Website einfügen.
  2. Erstellen Sie den Websiteschlüssel für die reCAPTCHA-WAF-Aufgabenseite und aktivieren Sie das WAF-Feature für den Schlüssel. Mit der Funktion für die reCAPTCHA-Aufgabenseite können Sie eingehende Anfragen an reCAPTCHA Enterprise weiterleiten, um für jede Anfrage festzustellen, ob sie potenziell betrügerisch oder legitim ist. Später verknüpfen wir diesen Schlüssel mit der Cloud Armor-Sicherheitsrichtlinie, um die manuelle Aufgabe zu aktivieren. In den späteren Schritten wird dieser Schlüssel als CHALLENGE-PAGE-KEY bezeichnet.
gcloud recaptcha keys create --display-name=challenge-page-key \
   --web --allow-all-domains --integration-type=INVISIBLE \
   --waf-feature=challenge-page --waf-service=ca
  1. Rufen Sie das Navigationsmenü ( mainmenu.png) > Sicherheit > reCAPTCHA Enterprise auf. Unter „Enterprise-Schlüssel“ sollten die erstellten Schlüssel angezeigt werden:

4e2567aae0eb92d7.png

Websiteschlüssel für das reCAPTCHA-Sitzungstoken implementieren

  1. Rufen Sie das Navigationsmenü ( mainmenu.png) > Compute Engine > VM-Instanzen auf. Suchen Sie die VM in Ihrer Instanzgruppe und stellen Sie eine SSH-Verbindung zu ihr her.

6d7b0fd12a667b5f.png

  1. Rufen Sie das Stammverzeichnis des Webservers auf und ändern Sie den Nutzer zu „root“:
@lb-backend-example-4wmn:~$ cd /var/www/html/
@lb-backend-example-4wmn:/var/www/html$ sudo su
  1. Aktualisieren Sie die Landingpage „index.html“ und betten Sie den Websiteschlüssel für das reCAPTCHA-Sitzungstoken ein. Der Websiteschlüssel für das Sitzungstoken wird im Abschnitt „head“ Ihrer Landingpage wie unten gezeigt festgelegt:

<script src="https://www.google.com/recaptcha/enterprise.js?render=<REPLACE_TOKEN_HERE>&waf=session" async defer></script>

Denken Sie daran, das Token zu ersetzen, bevor Sie die Datei „index.html“ wie unten angegeben aktualisieren.

root@lb-backend-example-4wmn:/var/www/html# echo '<!doctype html><html><head><title>ReCAPTCHA Session Token</title><script src="https://www.google.com/recaptcha/enterprise.js?render=<REPLACE_TOKEN_HERE>&waf=session" async defer></script></head><body><h1>Main Page</h1><p><a href="/good-score.html">Visit allowed link</a></p><p><a href="/bad-score.html">Visit blocked link</a></p><p><a href="/median-score.html">Visit redirect link</a></p></body></html>' > index.html
  1. Erstellen Sie drei weitere Beispielseiten, um die Richtlinien für die Bot-Verwaltung zu testen:
  • good-score.html
root@lb-backend-example-4wmn:/var/www/html# echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>Congrats! You have a good score!!</h1></body></html>' > good-score.html
  • bad-score.html
root@lb-backend-example-4wmn:/var/www/html# echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>Sorry, You have a bad score!</h1></body></html>' > bad-score.html
  • median-score.html
root@lb-backend-example-4wmn:/var/www/html# echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>You have a median score that we need a second verification.</h1></body></html>' > median-score.html
  1. Prüfen Sie, ob Sie auf alle Webseiten zugreifen können, indem Sie sie im Browser öffnen. Ersetzen Sie [LB_IP_v4] durch die IPv4-Adresse des Load Balancers.
  • Öffnen Sie http://[LB_IP_v4]/index.html. Die reCAPTCHA-Implementierung funktioniert, wenn Sie in der unteren rechten Ecke der Seite „Geschützt durch reCAPTCHA“ sehen:

d695ad23d91ae4e9.png

  • Klicken Sie auf die einzelnen Links.

4a2ad1b2f10b4c86.png

  • Prüfen Sie, ob Sie auf alle Seiten zugreifen können.

481f63bf5e6f244.png

8. Cloud Armor-Sicherheitsrichtlinienregeln für die Bot-Verwaltung erstellen

In diesem Abschnitt verwenden Sie Cloud Armor-Regeln zur Bot-Verwaltung, um Anfragen basierend auf dem reCAPTCHA-Ergebnis zuzulassen, abzulehnen oder weiterzuleiten. Beim Erstellen des Websiteschlüssels für das Sitzungstoken haben Sie einen Testwert von 0, 5 festgelegt.

  1. Erstellen Sie in Cloud Shell(eine Anleitung zur Verwendung von Cloud Shell finden Sie unter Cloud Shell starten im Abschnitt Einrichtung und Anforderungen) eine Sicherheitsrichtlinie über gcloud:
gcloud compute security-policies create recaptcha-policy \
    --description "policy for bot management"
  1. Wenn Sie eine manuelle reCAPTCHA Enterprise-Aufgabe verwenden möchten, um zwischen menschlichen und automatisierten Clients zu unterscheiden, verknüpfen Sie den Websiteschlüssel für die reCAPTCHA-WAF-Aufgabe, den wir für eine manuelle Aufgabe erstellt haben, mit der Sicherheitsrichtlinie. Ersetzen Sie „CHALLENGE-PAGE-KEY“ durch den Schlüssel, den wir erstellt haben:
gcloud compute security-policies update recaptcha-policy \
   --recaptcha-redirect-site-key "CHALLENGE-PAGE-KEY"
  1. Fügen Sie eine Bot-Verwaltungsregel hinzu, um Traffic zuzulassen, wenn der URL-Pfad mit „good-score.html“ übereinstimmt und die Punktzahl größer als 0,4 ist.
gcloud compute security-policies rules create 2000 \
     --security-policy recaptcha-policy\
     --expression "request.path.matches('good-score.html') &&    token.recaptcha_session.score > 0.4"\
     --action allow
  1. Fügen Sie eine Bot-Verwaltungsregel hinzu, um Traffic abzulehnen, wenn der URL-Pfad mit „bad-score.html“ übereinstimmt und der Score unter 0,6 liegt.
  gcloud compute security-policies rules create 3000 \
     --security-policy recaptcha-policy\
     --expression "request.path.matches('bad-score.html') && token.recaptcha_session.score < 0.6"\
     --action "deny-403"
  1. Fügen Sie eine Bot-Verwaltungsregel hinzu, um Traffic zu Google reCAPTCHA weiterzuleiten, wenn der URL-Pfad mit „median-score.html“ übereinstimmt und die Punktzahl 0,5 beträgt.
  gcloud compute security-policies rules create 1000 \
     --security-policy recaptcha-policy\
     --expression "request.path.matches('median-score.html') && token.recaptcha_session.score == 0.5"\
     --action redirect \
     --redirect-type google-recaptcha
  1. Hängen Sie die Sicherheitsrichtlinie an den Backend-Dienst „http-backend“ an:
gcloud compute backend-services update http-backend \
    --security-policy recaptcha-policy –-global
  1. Öffnen Sie in der Console das Navigationsmenü. Klicken Sie auf Netzwerksicherheit > Cloud Armor.
  2. Klicken Sie auf „recaptcha-policy“. Ihre Richtlinie sollte in etwa so aussehen:

74852618aaa96786.png

9. Bot-Verwaltung mit Cloud Armor validieren

  1. Öffnen Sie einen Browser und geben Sie die URL http://[LB_IP_v4]/index.html ein. Rufen Sie „Visit allow link“ auf. Sie sollten durchgelassen werden –

edf3e6ca238d2ee7.png

  1. Öffnen Sie ein neues Fenster im Inkognitomodus, um eine neue Sitzung zu starten. Geben Sie die URL http://[LB_IP_v4]/index.html ein und gehen Sie zu „Visit blocked link“. Sie sollten einen HTTP 403-Fehler erhalten:

ecef5655b291dbb0.png

  1. Öffnen Sie ein neues Fenster im Inkognitomodus, um eine neue Sitzung zu starten. Geben Sie die URL http://[LB_IP_v4]/index.html ein und gehen Sie zu „Visit redirect link“. Sie sollten die Weiterleitung zu Google reCAPTCHA und die Seite für die manuelle Aufgabe wie unten gezeigt sehen:

53ed2b4067b55436.png

Cloud Armor-Logs prüfen

Untersuchen Sie die Logs der Sicherheitsrichtlinie, um zu prüfen, ob die Bot-Verwaltung wie erwartet funktioniert hat.

  1. Öffnen Sie in der Console das Navigationsmenü > Netzwerksicherheit > Cloud Armor.
  2. Klicken Sie auf recaptcha-policy.
  3. Klicken Sie auf Logs.

46fd825d8506d355.png

  1. Klicken Sie auf Richtlinienlogs ansehen.
  2. Kopieren Sie die folgende MQL-Abfrage(Monitoring Query Language) und fügen Sie sie in den Abfrageeditor ein:
resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(recaptcha-policy)
  1. Klicken Sie jetzt auf Abfrage ausführen.
  2. Suchen Sie in den Abfrageergebnissen nach einem Logeintrag für eine Anfrage für http://[LB_IP_v4]/good-score.html. Maximieren Sie „jsonPayload.Expand enforcedSecurityPolicy“.

b7b1712642cf092b.png

  1. Wiederholen Sie den Vorgang für http://[LB_IP_v4]/bad-score.html und http://[LB_IP_v4]/median-score.html.

c28f96d83056725a.png8c4803d75a77142c.png

Sie sehen, dass „configuredAction“ auf ALLOW, DENY oder GOOGLE_RECAPTCHA mit dem Namen recaptcha-policy festgelegt ist.

Das wars! Sie haben dieses Lab zur Bot-Verwaltung mit Cloud Armor abgeschlossen.

© 2020 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Firmen- und Produktnamen können Marken der betreffenden Unternehmen sein.

10. Lab bereinigen

  1. Rufen Sie Netzwerksicherheit >> Cloud Armor >> %POLICY NAME% auf und wählen Sie „Löschen“ aus:

2646f9c1df093f90.png

  1. Klicken Sie auf Netzwerk >> Netzwerkdienste >> Load-Balancing. Wählen Sie den erstellten Load-Balancer aus und klicken Sie auf „Löschen“.

8ad4f55dc06513f7.png

Wählen Sie den Backend-Dienst und die Systemdiagnose als zusätzliche Ressourcen aus, die gelöscht werden sollen:

f6f02bb56add6420.png

  1. Rufen Sie das Navigationsmenü ( mainmenu.png) > Compute Engine > Instanzgruppen auf. Wählen Sie die verwaltete Instanzgruppe aus und klicken Sie auf „Löschen“:

2116b286954fd6.png

Bestätigen Sie das Löschen, indem Sie „delete“ in das Textfeld eingeben.

Warten Sie, bis die verwaltete Instanzgruppe gelöscht wurde. Dadurch wird auch die Instanz in der Gruppe gelöscht. Sie können die Vorlagen erst löschen, nachdem die Instanzgruppe gelöscht wurde.

  1. Rufen Sie im linken Bereich Instanzvorlagen auf. Wählen Sie die Instanzvorlage aus und klicken Sie auf „Löschen“.
  2. Rufen Sie das Navigationsmenü ( mainmenu.png) auf und klicken Sie auf VPC-Netzwerk > Firewall. Wählen Sie die Regeln „default-allow-health-check“ und „allow-ssh“ aus und klicken Sie auf „Löschen“.
  3. Rufen Sie das Navigationsmenü ( mainmenu.png) > Sicherheit > reCAPTCHA Enterprise auf. Wählen Sie die von uns erstellten Schlüssel aus und löschen Sie sie. Bestätigen Sie das Löschen, indem Sie „DELETE“ in das Textfeld eingeben.

e71ecd11baf262ca.png

11. Glückwunsch!

Sie haben erfolgreich die Bot-Verwaltung mit Cloud Armor implementiert. Sie haben einen HTTP-Load-Balancer konfiguriert. Anschließend haben Sie einen Websiteschlüssel für das reCAPTCHA-Sitzungstoken erstellt und auf einer Webseite implementiert. Außerdem haben Sie gelernt, wie Sie einen Websiteschlüssel für die Aufgabenseite erstellen. Sie haben eine Cloud Armor-Richtlinie für die Bot-Verwaltung eingerichtet und überprüft, wie Anfragen basierend auf den Regeln verarbeitet werden. Sie konnten die Logs der Sicherheitsrichtlinie untersuchen, um festzustellen, warum der Traffic zugelassen, blockiert oder umgeleitet wurde.

Behandelte Themen

  • Instanzvorlagen einrichten und verwaltete Instanzgruppen erstellen
  • So richten Sie einen HTTP-Load-Balancer ein.
  • Eine Cloud Armor-Richtlinie für die Bot-Verwaltung erstellen
  • So erstellen und implementieren Sie einen Websiteschlüssel für das reCAPTCHA-Sitzungstoken.
  • So erstellen und implementieren Sie einen Websiteschlüssel für die reCAPTCHA-Aufgabenseite.
  • So prüfen Sie, ob die Richtlinie zur Bot-Verwaltung wie vorgesehen funktioniert.

Weiteres Vorgehen

  • Richten Sie reCAPTCHA-Aktionstokens ein.