Wie verwende ich AWS WAF mit AWS Global Accelerator, um meine Anwendung vor böswilligen Angriffen zu schützen?

Lesedauer: 4 Minute
0

Ich möchte meine Anwendung vor Ebene-7-DDoS-Angriffen schützen, indem ich die AWS WAF-Ratenbegrenzungsregel mit dem Application Load Balancer hinter dem Global Accelerator verwende.

Kurzbeschreibung

Sie können AWS Global Accelerator, Application Load Balancer und AWS WAF nutzen, um sich vor Distributed-Denial-of-Service-Angriffen (DDoS) auf Anwendungsebene zu schützen.

Hinweis: Die Begrenzung der Client-Rate durch den Application Load Balancer und WAF erfordert, dass Sie die Quell-IP Preserved=TRUE auf dem Accelerator festlegen. Weitere Informationen finden Sie unter Preserve Client-IP-Adressen in AWS Global Accelerator.

Lösung

Mit der AWS WAF-Ratenbegrenzungsregel können Sie automatisch Clients von bestimmten IP-Adressen blockieren, die eine überwältigende Flut von Anfragen an Ihre Anwendung senden. Ihre ratenbasierte Regel verfolgt die Anzahl der Anfragen, die von jeder IP-Adresse gesendet werden, auf der Grundlage eines gleitenden Zeitfensters. Wenn die Anfragen das Ratenlimit überschreiten, blockiert die Regel sofort Anfragen von der Quell-IP-Adresse, bis die Adresse die Anzahl der Anfragen senkt.

**Hinweis:**Sie können die Regel auch so konfigurieren, dass viele Komponenten einer Anfrage überprüft und blockiert werden, einschließlich des Landes, aus dem die Anfrage stammt.

Voraussetzungen

  • Stellen Sie sicher, dass Sie über die folgende Datenverkehrsflusskonfiguration für Global Accelerator, Application Load Balancer und AWS WAF verfügen:
    User --> Global Accelerator --> Application Load Balancer with WAF --> EC2 instance
    **Hinweis:**In diesem Setup greift der Benutzer auf die Anwendung zu, indem er eine Anfrage an den Accelerator stellt. Der Accelerator leitet den Benutzerverkehr an den Application Load Balancer und die damit verbundene WAF weiter. WAF wertet die Benutzeranfrage aus und blockiert sie oder lässt sie zu. Dabei wird die von Ihnen erstellte Regel zur Ratenbegrenzung verwendet.
  • Installieren Sie ein Lasttest-Tool wie loadtest von GitHub. Oder verwenden Sie ein Lasttest-Tool Ihrer Wahl, das Ihnen die erforderliche Transparenz bietet.

Erstellen Sie eine regelbasierte Web-ACL

Erstellen Sie in der Web-ACL eine ratenbasierte Regel mit einem aggressiven Ratenlimit von 100. Verwenden Sie dann den Testfall, um zu überprüfen, ob Ihre Regel funktioniert.

  1. Navigieren Sie zur AWS WAF-Konsole, um eine Web-ACL-Regel zu erstellen.
  2. Fügen Sie Ihrer Web-ACL eine benutzerdefinierte Regel hinzu.
  3. Geben Sie ihr einen Namen und legen Sie die ratenbasierte Regel auf Typ fest.
  4. Legen Sie 100 als Ratenlimit fest.
  5. Lassen Sie alle anderen Einstellungen unverändert. Klicken Sie dann auf Regel hinzufügen.
  6. Speichern Sie die Web-ACL.

Testen Sie die Ergebnisse

Der Test simuliert einen HTTP-Flood-Angriff. Das Lasttest-Tool zeigt den Fortschritt der eingegangenen Anfragen. Irgendwann schlagen die Anfragen fehl, weil sie durch die von Ihnen eingestellte Regel zur Ratenbegrenzung blockiert werden.

  1. Führen Sie das Lasttest-Tool auf Ihrem Computer aus.
    **Hinweis:**Oder öffnen Sie AWS CloudShell auf Ihrer Konsole (möglicherweise erhalten Sie eine Aufforderung, zu der Region zu wechseln, in der es unterstützt wird).

    # Install globally as root:
    npm install -g loadtest
    # On AWS CloudShell, Ubuntu or Mac OS X systems install using sudo:
    sudo npm install -g loadtest
  2. Geben Sie die URL des Global Accelerators ein, wie unten gezeigt:

    # Global Accelerator url
    GA_URL=http://your_Global_Acclerator_URL

    **Hinweis:**Ersetzen Sie Ihre\ _Global\ _Accelerator\ _URL durch Ihre Global Accelerator URL.

  3. Führen Sie den Befehl in Ihrem Terminal aus, um die Flut von Anfragen in der Lasttest-Simulation zu starten.

    **Hinweis:**Der Ablauf sollte 45 Sekunden dauern, also behalten Sie den Ablauf im Auge.

    loadtest -n 1000 -c 1 --rps 25 $GA_URL

    Der Befehl sendet insgesamt 1000 Anfragen mit einer Parallelität von 1 und 25 Anfragen pro Sekunde. Mit dieser Rate von Anfragen pro Sekunde erreichen Sie das von Ihnen festgelegte Limit in der vierten Sekunde.

  4. Analysieren Sie den Ausgangsfluss. Beachten Sie, dass die Anfragen irgendwann fehlschlugen. Die Fehler deuten darauf hin, dass die WAF-Regel alle Anfragen von Ihrer Quell-IP-Adresse blockiert hat.

    [Fri Apr 21 2023 20:26:45 GMT+0000 ] INFO Requests: 0 (0%), requests per second: 0, mean latency: 0 ms
    [Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Requests: 106 (11%), requests per second: 21, mean latency: 22.9 ms
    [Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Errors: 106, accumulated errors: 106, 100% of total requests
AWS OFFICIAL
AWS OFFICIALAktualisiert vor 9 Monaten