logo
bars

Amazon AWS WAF
und CapMonster Cloud

Captcha-Lösung, Integration in die Website und Tests.
Sie haben eine Website mit eingebauter Captcha- oder Bot-Schutzlösung übernommen, aber keinen Zugriff auf den Quellcode? Dann stellt sich schnell die Frage: Welche Lösung ist installiert, ist sie korrekt konfiguriert und wie lässt sie sich testen?

In diesem Artikel haben wir versucht, alle wichtigen Fragen zu beantworten. Der erste Schritt bei der Lösung der Aufgabe besteht darin festzustellen, welches Schutzsystem eingesetzt wird. Dazu können Sie die Liste beliebter Captchas und Anti-Bot-Schutzsysteme heranziehen, in der visuelle Beispiele und zentrale Merkmale aufgeführt sind, die Ihnen helfen, schnell zu erkennen, womit Sie es zu tun haben.

Wenn Sie feststellen, dass auf Ihrer Website Amazon AWS WAF eingesetzt wird, besteht der nächste Schritt darin, seine Eigenschaften und Funktionsweise genauer zu untersuchen. Ebenfalls in diesem Artikel finden Sie eine Anleitung zur Integration von Amazon AWS WAF, damit Sie vollständig verstehen, wie das System auf Ihrer Website arbeitet. So können Sie nicht nur den aktuellen Schutz besser einschätzen, sondern auch seine Wartung vorausschauend planen.

Was ist AWS WAF von Amazon
Was ist AWS WAF von Amazon

AWS WAF (Amazon Web Services Web Application Firewall) ist eine Cloud-Web-Firewall von Amazon, die Websites, APIs und Webanwendungen vor Angriffen und schädlichem Traffic schützt. Vereinfacht gesagt handelt es sich um einen Filter, der vor Ihrer Website oder API steht und entscheidet, welcher Besucherverkehr durchgelassen und welcher blockiert wird.

Wenn auf der Website Challenge/CAPTCHA aktiviert ist, sieht der Besucher möglicherweise eine separate Seite zur Überprüfung. Er wird aufgefordert, eine Aufgabe zu erledigen, z. B. alle Bilder einer Kategorie auszuwählen, um zu bestätigen, dass er kein Bot ist.

So lösen Sie AWS WAF mit CapMonster Cloud

Beim Testen von Ressourcen, die durch AWS WAF geschützt sind, ist es wichtig sicherzustellen, dass der Schutz korrekt funktioniert und richtig integriert ist.

Sie können die Funktion des Schutzes manuell überprüfen:

  • Öffnen Sie die Seite mit dem Formular oder der Ressource und stellen Sie sicher, dass AWS WAF korrekt auf Anfragen reagiert.
  • Versuchen Sie Aktionen durchzuführen, die vom WAF eingeschränkt werden könnten (z. B. Massenanfragen, verdächtige Header) – der Server sollte solche Anfragen blockieren oder einen Fehler zurückgeben.

Nach erfolgreicher Überprüfung setzt AWS WAF Cookies, die bestätigen, dass der Benutzer oder Client die Überprüfung bestanden hat und vertrauenswürdiger Traffic zugelassen wird.

Zur automatischen Captcha-Erkennung können spezialisierte Dienste verwendet werden, wie z. B. CapMonster Cloud – ein Tool, das Captcha-Parameter akzeptiert, diese auf seinen Servern verarbeitet und fertige Cookies oder ein Token zurückgibt. Diese können in den Browser eingefügt werden, um die Überprüfung ohne Benutzerinteraktion zu bestehen.

Die Arbeit mit CapMonster Cloud über die API umfasst in der Regel folgende Schritte:

Aufgabe erstellenAufgabe erstellen
arrow
API-Anfrage sendenAPI-Anfrage senden
arrow
Ergebnis empfangenErgebnis empfangen
arrow
Einsetzen von aws-waf-token Cookies auf der SeiteEinsetzen von aws-waf-token Cookies auf der Seite
arrow
Erkennung von Amazon AWS WAF mit fertigen Bibliotheken
Der Dienst CapMonster Cloud bietet fertige Bibliotheken für die bequeme Arbeit in den Sprachen Python, JavaScript (Node.js) und C#.

Wichtig: Diese Codebeispiele verwenden cookieSolution=False. Wenn Sie als Ergebnis Cookies erhalten müssen, setzen Sie cookieSolution=True.

Python
JavaScript
C#
Lösung, Abrufen von Parametern und Setzen von Cookies
Beispiel in Node.js für den vollständigen Zyklus der Captcha-Erkennung auf Ihrer Webseite. Mögliche Ansätze: Verwendung von HTTP-Anfragen zum Abrufen von HTML und Schutzsystemparametern, Senden der Antwort und Verarbeiten des Ergebnisses. Oder mithilfe von Automatisierungstools (z. B. Playwright) – Seite öffnen, auf die Überprüfung warten, Parameter über den CapMonster Cloud-Client senden, Ergebnis erhalten, Cookies in den Browser einfügen (für Tests können Sie sowohl korrekte als auch inkorrekte Daten verwenden) und das Ergebnis sehen.
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium

import { chromium } from "playwright";
import { CapMonsterCloudClientFactory, ClientOptions, AmazonRequest } from "@zennolab_com/capmonstercloud-client";

const API_KEY = "YOUR_API_KEY";
const CAPTCHA_URL = "https://example.com";

// Proxy-Einstellungen
const PROXY = {
    proxyType: "http",
    proxyAddress: "PROXY_HOST",
    proxyPort: 1234,
    proxyLogin: "PROXY_USER",
    proxyPassword: "PROXY_PASS"
};

(async () => {
    // 1) Seite über Proxy öffnen und AWS WAF Parameter sammeln
    const browser = await chromium.launch({
        headless: false,
        proxy: {
            server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
            username: PROXY.proxyLogin,
            password: PROXY.proxyPassword
        }
    });

    const page = await browser.newPage();
    await page.goto(CAPTCHA_URL, { waitUntil: "networkidle" });

    // Warten auf das Laden der Challenge- und Captcha-Skripte
    await page.waitForFunction(() => {
        const scripts = Array.from(document.querySelectorAll("script")).map(s => s.src || "");
        return scripts.some(src => src.includes("challenge")) && scripts.some(src => src.includes("captcha"));
    });

    // AWS WAF Parameter extrahieren (Key, Context, IV, Links zu Skripten)
    const params = await page.evaluate(() => {
        const gokuProps = window.gokuProps || {};
        const scripts = Array.from(document.querySelectorAll("script")).map(s => s.src || "");
        return {
            websiteKey: gokuProps.key || null,
            context: gokuProps.context || null,
            iv: gokuProps.iv || null,
            challengeScript: scripts.find(src => src.includes("challenge")),
            captchaScript: scripts.find(src => src.includes("captcha"))
        };
    });

    await browser.close();

    // 2) AWS WAF über CapMonster Cloud lösen
    const client = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));

    const req = new AmazonRequest({
        websiteURL: CAPTCHA_URL,
        websiteKey: params.websiteKey,
        challengeScript: params.challengeScript,
        captchaScript: params.captchaScript,
        context: params.context,
        iv: params.iv,
        cookieSolution: true,
        proxy: PROXY
    });

    const solved = await client.Solve(req);
    const wafToken = solved.solution.cookies["aws-waf-token"];

    // 3) aws-waf-token einsetzen und alte bereinigen
    const browser2 = await chromium.launch({
        headless: false,
        proxy: {
            server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
            username: PROXY.proxyLogin,
            password: PROXY.proxyPassword
        }
    });

    const context2 = await browser2.newContext();

    // Bereinigung alter aws-waf-token für Ihre Domain
    const existingCookies = await context2.cookies();
    const filteredCookies = existingCookies.filter(c => !(c.name === "aws-waf-token" && c.domain.endsWith(".your-domain")));
    await context2.clearCookies();
    await context2.addCookies(filteredCookies);

    // Setzen des neuen aws-waf-token
    await context2.addCookies([{
        name: "aws-waf-token",
        value: wafToken,
        domain: ".your-domain",
        path: "/",
        httpOnly: false,
        secure: true
    }]);

    const page2 = await context2.newPage();
    const response = await page2.goto(CAPTCHA_URL, { waitUntil: "networkidle" });

    console.log("Final page status:", response.status());
    console.log("Final page URL:", page2.url());

    await browser2.close();
})();
So verbinden Sie AWS WAF mit Ihrer Website
Um sich sicher in der Funktionsweise des Captchas auf Ihrer Website zurechtzufinden, die Logik seiner Überprüfung zu verstehen, es neu zu verbinden oder neu zu konfigurieren, empfehlen wir Ihnen, diesen Abschnitt zu studieren. Darin wird der Prozess der Anbindung des Schutzes beschrieben — dies hilft Ihnen, sich schnell mit allen Nuancen vertraut zu machen.

AWS WAF kann nicht direkt auf einer Website installiert werden. Es funktioniert nur über AWS-Ressourcen:

  • Amazon CloudFront (Haupt- und beste Option) — ein CDN, über das jede Website geschützt werden kann. Funktioniert schnell, global und ist für fast alle Fälle geeignet.
  • Application Load Balancer (ALB) — wird für serverseitige Websites, APIs und Container innerhalb von AWS verwendet. Wenn Ihr Backend in EC2, ECS, EKS läuft — setzen Sie WAF auf den ALB.
  • API Gateway — Schutz von REST und WebSocket APIs. Geeignet für SPA, mobile Anwendungen und Microservices.
  • AWS AppSync (GraphQL API)
  • Amazon Cognito (Login/Registrierung)
  • AWS App Runner (Container-Anwendungen)
  • AWS Amplify Hosting (Frontend-Hosting)
  • AWS Verified Access (Zugriff auf interne Anwendungen)

Schritt 1. Erstellen Sie ein AWS-Konto (falls nicht vorhanden)

Gehen Sie zu: https://portal.aws.amazon.com/billing/signup. Erstellen Sie ein Konto > bestätigen Sie E-Mail und Telefon.

Schritt 2. Sie können die Standard- oder die neue AWS WAF-Benutzeroberfläche verwenden:

  1. Gehen Sie zur AWS Konsole
  2. Öffnen Sie AWS WAF. Klicken Sie im linken Menü auf Try the new experience (falls angeboten).

Schritt 3. Erstellen Sie ein Protection Pack (Web ACL)

Dies ist der Satz von Schutzregeln für Ihre Ressource.

  1. Wählen Sie im Menü links: Resources & protection packs (Web ACLs)
  2. Klicken Sie auf Add protection pack (web ACL).

Schritt 4. Konfigurieren Sie die Anwendungskategorie:

Im Block Tell us about your app:

  • App category — wählen Sie Web / API / Both
  • Traffic source — woher der Traffic kommt (Web, API oder beides)

Diese Parameter sind notwendig, damit AWS optimale Regeln vorschlagen kann.

Schritt 5. Wählen Sie die Ressourcen aus, die geschützt werden sollen

  1. Klicken Sie auf Add resources
  2. Wählen Sie aus, was Sie verbinden:

Wenn Ihre Website auf CloudFront läuft > wählen Sie CloudFront distributions
Wenn Ihr Backend auf ALB läuft > wählen Sie Regional resources
Wenn API > wählen Sie API Gateway REST API
Setzen Sie ein Häkchen bei der gewünschten Ressource > klicken Sie auf Add.

Schritt 6. Wählen Sie einen Start-Regelsatz.

AWS schlägt vor:

Recommended for you — die beste Option für Anfänger

Er beinhaltet:

  • Basisschutz
  • Regeln gegen SQLi und XSS
  • IP Reputation Lists
  • Bot Control (optional)
  • Regeln für Web/API

Klicken Sie auf Next.

Schritt 7. Konfiguration (optional)

Auf dem Bildschirm Customize protection pack (web ACL):

Hauptparameter:

  • Default action:
    • Allow all except blocked — wird normalerweise gewählt
    • Block all except allowed — wenn die Website geschlossen ist
  • Default rate limits: Begrenzung der Anzahl von Anfragen (DDoS L7 Mitigation)
  • IP addresses: Whitelists/Blacklists
  • Country specific origins: Traffic-Begrenzung nach Ländern

Logging

Wählen Sie, wohin Logs geschrieben werden sollen:

  • CloudWatch
  • S3
  • Firehose

(empfohlen wird S3 + Athena).

Schritt 8. Web ACL erstellen

Klicken Sie auf: Add protection pack (web ACL)

AWS erstellt Regeln und verknüpft sie mit Ihrer Ressource.

Überprüfung

Um sicherzustellen, dass der Schutz funktioniert:

  1. Öffnen Sie WAF > wählen Sie Ihre Web ACL
  2. Gehen Sie zu Monitoring
  3. Sehen Sie sich an:
    • Traffic-Grafiken
    • blockierte Anfragen
    • Beispielanfragen (sample requests)

Zusätzlich (optional)

  • CAPTCHA oder Challenge aktivieren

    In jeder Regel > Action > CAPTCHA / Challenge

    Dies reduziert Bot-Traffic und schützt Anmelde- und Formularseiten.

  • Managed Rule Groups hinzufügen

    Im Bereich Rule groups können Sie hinzufügen:

    • AWS Managed
    • Bot Control
    • Account takeover prevention
    • Marketplace rules (F5, Imperva, Fortinet)
  • Mit Shield Advanced verknüpfen. Zum Schutz vor DDoS (L3–L7).

Background
Mögliche Fehler und Debugging
Bug Icon
Ungültige Domain oder Regel — Challenge wird nicht angezeigt
Überprüfen Sie, ob die AWS WAF WebACL an die richtige Domain (CloudFront Distribution / ALB / API Gateway) und den korrekten Pfad gebunden ist und dass keine Konflikte zwischen Regeln bestehen.
Bug Icon
Zeitüberschreitung beim Laden der Seite oder bei der Überprüfung
Manchmal wartet der Browser oder das Skript nicht auf die Antwort von AWS WAF. Erhöhen Sie die Timeouts in den Tests und stellen Sie sicher, dass das Backend Anfragen ohne Verzögerung verarbeitet.
Bug Icon
Abgelaufene AWS WAF Cookies
Veraltete _aws_waf_token_… oder damit verbundene Cookie-Tags führen zu einer erneuten Challenge oder vorübergehenden Blockierung.
Bug Icon
Übermäßig empfindliche Regeln
Zu strenge Bot Control-Signaturen, CAPTCHA-Regeln oder Rate-based-Regeln können echte Benutzer blockieren.
Bug Icon
Falsche WebACL-Konfiguration
Fehler in der Reihenfolge der Regeln, Prioritäten oder Bedingungen können zu Fehlalarmen und Blockierungen führen.
Tests der Schutzstabilität
Stellen Sie nach der Integration sicher, dass das System die Website wirklich vor automatisierten Aktionen schützt.
Tipps zu Sicherheit und Optimierung
Konfigurieren Sie die WebACL entsprechend dem Risikolevel. Verwenden Sie Managed Rules (AWS, AWS Marketplace), AWS Bot Control und benutzerdefinierte Regeln basierend auf IP-Reputation, Headern, Rate Limiting und anderen Bedingungen.
Loggen Sie WAF-Ereignisse. Aktivieren Sie <a href="https://docs.aws.amazon.com/waf/latest/developerguide/logging.html" target="_blank">AWS WAF Logging (Kinesis Firehose / S3 / CloudWatch Logs)</a> zur Analyse von Fehlalarmen und zur Optimierung von Regeln.
Fügen Sie Links zur <b>Datenschutzerklärung</b> und den <b>Nutzungsbedingungen</b> hinzu. Dies ist wichtig für Transparenz und die Einhaltung von Sicherheitsanforderungen und Benutzererwartungen.
Fazit

Wenn Sie eine Website übernommen haben, auf der bereits ein Captcha oder ein anderes Schutzsystem installiert ist und Sie keinen Zugriff auf den Code haben, ist das kein Problem! Es ist ziemlich einfach festzustellen, welche Technologie genau verwendet wird. Und um die korrekte Funktionsweise zu überprüfen, können Sie den Erkennungsdienst CapMonster Cloud in einer isolierten Testumgebung nutzen, um sicherzustellen, dass der Mechanismus zur Tokenverarbeitung und die Prüflogik ordnungsgemäß funktionieren.

Im Fall von Amazon AWS WAF reicht es aus, das System zu erkennen, sein Verhalten zu analysieren und sich zu vergewissern, dass der Schutz korrekt arbeitet. In diesem Artikel haben wir gezeigt, wie Sie Amazon AWS WAF identifizieren und wo Sie Anleitungen für die Einbindung oder Neukonfiguration finden, damit Sie den Schutz zuverlässig betreiben und seine Arbeit unter Kontrolle halten können.

Conclusion
Nützliche Links
DocIconAWS WAF DokumentationDocIconCapMonster Cloud Dokumentation (Arbeit mit AWS WAF)DocIconÜbersicht über den Schutz von Webressourcen mit AWS WAF