Bot-Verwaltung mit Google Cloud Armor – reCAPTCHA

1. Einführung

Das HTTP(S)-Load-Balancing von Google Cloud wird weltweit in den Points of Presence (POPs) von Google 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 WAF-Erkennungssystem (Distributed Denial of Service und Web Application Firewall) von Google. Cloud Armor ist eng mit dem Google Cloud-HTTP-Load-Balancer gekoppelt und schützt Anwendungen von Google Cloud-Kunden vor Angriffen aus dem Internet. reCAPTCHA Enterprise ist ein Dienst, der Ihre Website vor Spam und Missbrauch schützt. Er baut auf der bestehenden reCAPTCHA API auf, die erweiterte Risikoanalyseverfahren verwendet, um Menschen und Bots voneinander zu unterscheiden. Cloud Armor Bot Management bietet eine End-to-End-Lösung, die die Bot-Erkennung und -Bewertung von reCAPTCHA Enterprise mit Erzwingung durch Cloud Armor am Netzwerkrand zum Schutz von nachgelagerten Anwendungen integriert.

In diesem Lab konfigurieren Sie einen HTTP-Load-Balancer mit einem Back-End, wie im folgenden Diagramm dargestellt. Anschließend erfahren Sie, wie Sie einen Websiteschlüssel mit reCAPTCHA-Sitzungstokens einrichten und auf Ihrer Website einbetten. Außerdem erfahren Sie, wie Sie die Weiterleitung zur manuellen reCAPTCHA Enterprise-Abfrage einrichten. Anschließend konfigurieren wir eine Cloud Armor-Bot-Verwaltungsrichtlinie, um zu demonstrieren, wie die Bot-Erkennung Ihre Anwendung vor schädlichen Bot-Traffic schützt.

8b46e6728996bc0c.png

Lerninhalte

  • Hier erfahren Sie, wie Sie einen HTTP-Load-Balancer mit entsprechenden Systemdiagnosen einrichten.
  • So erstellen Sie einen reCAPTCHA-WAF-Websiteschlüssel für die Challenge-Seite und verknüpfen ihn mit der Cloud Armor-Sicherheitsrichtlinie.
  • Websiteschlüssel mit reCAPTCHA-Sitzungstokens erstellen und auf Ihren Webseiten installieren
  • Anleitung zum Erstellen einer Cloud Armor-Bot-Verwaltungsrichtlinie.
  • Hier erfahren Sie, wie Sie prüfen können, ob die Bot-Verwaltungsrichtlinie Traffic anhand der konfigurierten Regeln verarbeitet.

Voraussetzungen

  • Grundkenntnisse in Netzwerken und HTTP-Kenntnissen
  • Grundkenntnisse zu Unix/Linux-Befehlszeilen

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird und jederzeit aktualisiert werden kann.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. In der Regel ist es egal, um welche Art von String es sich handelt. In den meisten Codelabs musst du auf die Projekt-ID verweisen, die in der Regel als PROJECT_ID gekennzeichnet ist. Wenn dir die Projekt-ID nicht gefällt, kannst du einen weiteren zufälligen String generieren. Oder du probierst einen eigenen aus. Dann bleibt er „eingefroren“, nachdem das Projekt erstellt wurde.
  • Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab sollte ohne großen Aufwand betrieben werden. Folgen Sie der Anleitung zum Bereinigen am Ende des Codelabs, um Ressourcen zu beenden, damit Ihnen keine weiteren Kosten in Rechnung gestellt werden. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion von 300$.

Cloud Shell starten

Sie können Google Cloud zwar von Ihrem Laptop aus aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Klicken Sie in der GCP Console oben rechts in der Symbolleiste auf das Cloud Shell-Symbol:

55efc1aaa7a4d3ad.png

Die Bereitstellung und Verbindung mit der Umgebung dauert nur einen Moment. Wenn er abgeschlossen ist, sollten Sie in etwa Folgendes sehen:

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

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

Konfigurieren Sie Firewallregeln, um HTTP-Traffic von den Google Cloud-Systemdiagnosen und dem Load-Balancer an die Back-Ends zuzulassen. Konfigurieren Sie außerdem eine Firewallregel, um SSH-Verbindungen zu den Instanzen zuzulassen.

Wir verwenden das in Ihrem Projekt erstellte VPC-Netzwerk default. 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 im selben IP-Bereich mit dem Back-End.

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

131fb495c9242335.png

  1. Beachten Sie die vorhandenen Firewallregeln für 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 oder Option auswählen)

Name

default-allow-health-check

Netzwerk

default

Ziele

Angegebene Ziel-Tags

Ziel-Tags

Systemdiagnose zulassen

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 das Kästchen „tcp“ an. Geben Sie 80 als Portnummer ein

  1. Klicken Sie auf Erstellen.

Alternativ, wenn Sie die gcloud-Befehlszeile verwenden. Hier ist der 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 in ähnlicher Weise 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 das Back-End des HTTP-Load-Balancers.

Instanzvorlagen konfigurieren

Eine Instanzvorlage ist eine Ressource, mit der Sie VM-Instanzen und verwaltete Instanzgruppen erstellen können. In Instanzvorlagen sind Maschinentyp, Image des Bootlaufwerks, Subnetz, Labels und andere Instanzattribute definiert. Erstellen Sie eine Instanzvorlage wie unten angegeben.

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

1d0b7122f4bb410d.png

  1. Gehen Sie zum Bereich Verwaltung 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 oder Option auswählen)

Netzwerk (unter Netzwerkschnittstellen)

default

Subnetz (unter „Netzwerkschnittstellen“)

default (us-east1)

Netzwerk-Tags

Systemdiagnose zulassen

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

Verwaltete Instanzgruppe erstellen

  1. Klicken Sie ebenfalls auf der Seite Compute Engine im linken Menü 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 die Standardeinstellung:

Attribut

Wert (Wert eingeben oder Option auswählen)

Name

lb-Backend-Beispiel

Standort

Einzelne Zone

Region

us-east1

Zone

us-east1-b

Instanzvorlage

lb-Backend-Vorlage

Autoscaling

Kein Autoscaling

Anzahl der Instanzen

1

  1. Klicken Sie auf Erstellen.

Benannten Port zur Instanzgruppe hinzufügen

Definieren Sie für die Instanzgruppe einen HTTP-Dienst 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 Traffic an Ihr Back-End gesendet wird lb-backend-example::

Konfiguration starten

  1. Klicken Sie in der Cloud Console auf das Navigationsmenü mainmenu.png. Klicken Sie auf Netzwerkdienste > Load-Balancing und dann auf 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, 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 wie angegeben auswählen)

Name

http-backend

Protokoll

HTTP

Benannter Port

HTP

Instanzgruppe

lb-Backend-Beispiel

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 die Standardeinstellung:

Attribut

Wert (Option wie angegeben auswählen)

Name

http-health-check

Protokoll

TCP

Port

80

dc45bc726bb4dfad.png

  1. Klicke auf Speichern.
  2. Klicken Sie auf das Kästchen für Logging aktivieren.
  3. Legen Sie die Abtastrate 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 in diesem Lab 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 oder 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 sich die IPv4-Adresse des Load-Balancers für die nächste Aufgabe. Wir bezeichnen sie als [LB_IP_v4].

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. reCAPTCHA-Sitzungstoken und Websiteschlüssel für die Challenge erstellen und bereitstellen

Die Integration von reCAPTCHA Enterprise for WAF und Google Cloud Armor bietet die folgenden Funktionen: reCAPTCHA-Herausforderungsseite, reCAPTCHA-Aktionstokens und reCAPTCHA-Sitzungstokens. In diesem Code-Lab implementieren wir den Websiteschlüssel reCATCHA-Sitzungstokens und die reCAPTCHA-WAF-Website für die Challenge.

Erstellen Sie ein reCAPTCHA-Sitzungstoken und WAF-Websiteschlüssel für die Challenge-Seite

Bevor Sie den Websiteschlüssel für das Sitzungstoken und den Websiteschlüssel für die Challenge-Seite erstellen, prüfen Sie, ob Sie die reCAPTCHA Enterprise API aktiviert haben, wie im Abschnitt „API aktivieren“ zu Beginn angegeben.

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

  1. Erstellen Sie den Websiteschlüssel des reCAPTCHA-Sitzungstokens und aktivieren Sie das WAF-Feature für den Schlüssel. Außerdem legen wir den WAF-Dienst auf Cloud Armor 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 liefert den erstellten Schlüssel. Notieren Sie sich diese, da wir sie im nächsten Schritt zu Ihrer Website hinzufügen werden.
  2. Erstellen Sie den Websiteschlüssel für reCAPTCHA WAF-Herausforderungen und aktivieren Sie die WAF-Funktion für den Schlüssel. Sie können die Funktion für die reCAPTCHA-Abfrageseite verwenden, um eingehende Anfragen an reCAPTCHA Enterprise weiterzuleiten, um festzustellen, ob eine Anfrage potenziell betrügerisch oder legitim ist. Wir verknüpfen diesen Schlüssel später mit der Cloud Armor-Sicherheitsrichtlinie, um die manuelle Identitätsbestätigung zu ermöglichen. Wir bezeichnen diesen Schlüssel in den späteren Schritten als CHALLENGE-PAGE-KEY.
gcloud recaptcha keys create --display-name=challenge-page-key \
   --web --allow-all-domains --integration-type=INVISIBLE \
   --waf-feature=challenge-page --waf-service=ca
  1. Klicken Sie im Navigationsmenü ( mainmenu.png) auf Sicherheit > reCAPTCHA Enterprise. Die von Ihnen erstellten Schlüssel sollten unter Enterprise Keys –

4e2567aae0eb92d7.png

Websiteschlüssel für reCAPTCHA-Sitzungstoken implementieren

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

6d7b0fd12a667b5f.png

  1. Gehen Sie zum Stammverzeichnis des Webservers und ändern Sie "user" in "root".
@lb-backend-example-4wmn:~$ cd /var/www/html/
@lb-backend-example-4wmn:/var/www/html$ sudo su
  1. Aktualisieren Sie die Landingpage-Seite „index.html“ und betten Sie den Websiteschlüssel für das reCAPTCHA-Sitzungstoken ein. Der Websiteschlüssel des Sitzungstokens wird im <head>-Abschnitt Ihrer Landingpage festgelegt:

<script src="https://www.google.com/recaptcha/enterprise.js?render=<TOKEN_HIER_ERSETZEN>&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:
  • gute-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 alle Webseiten zugänglich sind, indem Sie sie in Ihrem Browser öffnen. Ersetzen Sie [LB_IP_v4] durch die IPv4-Adresse des Load-Balancers.
  • Öffnen Sie http://[LB_IP_v4]/index.html. Sie können überprüfen, ob die reCAPTCHA-Implementierung funktioniert, wenn unten rechts auf der Seite „Durch reCAPTCHA geschützt“ angezeigt wird.

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-Bot-Verwaltungsregeln, um Anfragen basierend auf dem reCAPTCHA-Wert zuzulassen, abzulehnen und weiterzuleiten. Denken Sie daran, dass Sie beim Erstellen des Websiteschlüssels für das Sitzungstoken einen Testwert von 0,5 festgelegt haben.

  1. Erstellen Sie in Cloud Shell eine Sicherheitsrichtlinie über gcloud. Eine Anleitung zur Verwendung von Cloud Shell finden Sie im Abschnitt Cloud Shell starten unter Einrichtung und Anforderungen:
gcloud compute security-policies create recaptcha-policy \
    --description "policy for bot management"
  1. Wenn Sie die reCAPTCHA Enterprise-Abfrage manuell ausführen möchten, um zwischen menschlichen und automatisierten Clients zu unterscheiden, verknüpfen Sie den Websiteschlüssel für reCAPTCHA WAF-Herausforderungen, den wir für die manuelle Identitätsbestätigung erstellt haben, mit der Sicherheitsrichtlinie. Ersetzen Sie „CHALLENGE-PAGE-KEY“ durch den von uns erstellten Schlüssel –
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 einen Wert über 0,4 hat.
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 einen Wert unter 0,6 hat.
  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 Regel zur Bot-Verwaltung hinzu, um Traffic an Google reCAPTCHA weiterzuleiten, wenn der URL-Pfad mit median-score.html übereinstimmt und einen Wert von 0,5 hat
  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 Back-End-Dienst "http-backend" an:
gcloud compute backend-services update http-backend \
    --security-policy recaptcha-policy –-global
  1. Öffnen Sie in der Konsole das Navigationsmenü > 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. Gehen Sie zu „Link zum Zulassen“. Sie sollten durch –

edf3e6ca238d2ee7.png

  1. Öffnen Sie ein neues Fenster im Inkognitomodus, damit eine neue Sitzung beginnt. Geben Sie die URL http://[LB_IP_v4]/index.html ein und navigieren Sie zu "Blockierten Link besuchen". Sie sollten den HTTP-Fehler 403 erhalten:

ecef5655b291dbb0.png

  1. Öffnen Sie ein neues Fenster im Inkognitomodus, damit eine neue Sitzung beginnt. Geben Sie die URL http://[LB_IP_v4]/index.html ein und gehen Sie zu "Weiterleitungslink aufrufen". Sie sollten die Weiterleitung zu Google reCAPTCHA und die Seite für manuelle Fragen wie unten sehen:

53ed2b4067b55436.png

Cloud Armor-Logs überprüfen

Sehen Sie sich die Logs der Sicherheitsrichtlinien an, um zu prüfen, ob die Bot-Verwaltung wie erwartet funktioniert hat.

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

46fd825d8506d355.png

  1. Klicken Sie auf Richtlinienlogs ansehen.
  2. Unten sehen Sie die MQL-Abfrage(Monitoring Query Language), die Sie kopieren und in den Query Editer einfügen können:
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 Protokolleintrag, in dem sich die Anfrage auf http://[LB_IP_v4]/good-score.html bezieht. Maximieren Sie „jsonPayload.Expandable erzwungenSecurityPolicy“.

b7b1712642cf092b.png

  1. Wiederhole das Gleiche für http://[LB_IP_v4]/bad-score.html und http://[LB_IP_v4]/median-score.html

c28f96d83056725a.png

8c4803d75a77142c.png

Die konfigurierte Aktion ist auf ALLOW, DENY oder GOOGLE_RECAPTCHA gesetzt und hat den Namen recaptcha-policy.

Glückwunsch! 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 Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.

10. Lab-Bereinigen

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

2646f9c1df093f90.png

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

8ad4f55dc06513f7.png

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

f6f02bb56add6420.png

  1. Klicken Sie im Navigationsmenü ( mainmenu.png) auf Compute Engine > Instanzgruppen. 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 ist. 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. Klicken Sie im linken Bereich auf Instanzvorlagen.** Wählen Sie die Instanzvorlage aus und klicken Sie auf Löschen.
  2. Öffnen Sie das Navigationsmenü ( mainmenu.png) 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. Klicken Sie im Navigationsmenü ( mainmenu.png) auf Sicherheit > reCAPTCHA Enterprise. Wählen Sie die 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 die Bot-Verwaltung mit Cloud Armor erfolgreich implementiert. Sie haben einen HTTP-Load-Balancer konfiguriert. Anschließend haben Sie den Websiteschlüssel für reCAPTCHA-Sitzungstokens auf einer Webseite erstellt und implementiert. Außerdem haben Sie gelernt, wie Sie einen Websiteschlüssel für die Challenge erstellen. Sie haben die Cloud Armor-Bot-Verwaltungsrichtlinie eingerichtet und anhand der Regeln validiert, wie Anfragen verarbeitet werden. Sie konnten die Protokolle der Sicherheitsrichtlinien untersuchen, um herauszufinden, warum der Traffic zugelassen, blockiert oder weitergeleitet wurde.

Behandelte Themen

  • Hier erfahren Sie, wie Sie Instanzvorlagen einrichten und verwaltete Instanzgruppen erstellen.
  • HTTP-Load-Balancer einrichten
  • Anleitung zum Erstellen einer Cloud Armor-Bot-Verwaltungsrichtlinie.
  • Websiteschlüssel für reCAPTCHA-Sitzungstokens erstellen und implementieren.
  • Websiteschlüssel für reCAPTCHA-Herausforderungen erstellen und implementieren
  • Prüfen, ob die Richtlinie zur Bot-Verwaltung wie vorgesehen funktioniert

Nächste Schritte

  • Richten Sie reCAPTCHA-Aktionstokens ein.