Wie verwende ich AWS WAF mit AWS Global Accelerator, um den Zugriff der Layer-7-HTTP-Methode und -Header auf meine Anwendung zu blockieren?

Lesedauer: 4 Minute
0

Wenn ich den AWS WAF-fähigen Application Load Balancer mit AWS Global Accelerator verwende, möchte ich Anfragen an meine Anwendung blockieren, wenn die Anforderungsmethode POST ist oder wenn der Header-Wert des User-Agents mit curl/7,79 übereinstimmt.

Kurzbeschreibung

Sie können AWS WAF und den Application Load Balancer mit Global Accelerator verwenden, um den Zugriff auf die Layer-7-HTTP-Methode und die Header zu blockieren. In dieser Architektur verwendet AWS WAF die Regeln der Web Access Control List (Web ACL) mit dem Application Load Balancer. Der Load Balancer wird zum Endpunkt für den Global Accelerator.
**Hinweis:**AWS Global Accelerator selbst unterstützt AWS WAF nicht.

Die dem Load Balancer zugeordnete Web-ACL-Regel wertet eingehenden Datenverkehr aus und leitet nur die regelkonformen Anfragen an den Endpunkt weiter.

Lösung

Die Web-ACL-Regel bietet eine detaillierte Kontrolle über alle HTTP (S)-Webanfragen an Ihre geschützten Ressourcen. Verwenden Sie die Regel, um eine Zeichenfolge oder einen Regex-Match mit einem oder mehreren Anforderungsattributen wie dem Uniform Resource Identifier (URI), der Abfragezeichenfolge, der HTTP-Methode oder dem Header-Schlüssel zu konfigurieren.

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 AWS 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 AWS WAF weiter. AWS WAF bewertet die Benutzeranfrage, die die Layer-7-HTTP-Methode oder den User-Agent-Header-Wert hat, und blockiert sie entweder oder lässt sie zu.

Erstellen Sie eine regelbasierte Web-ACL

Verwenden Sie den folgenden dreistufigen Prozess, um eine regelbasierte Web-ACL zu erstellen. Weitere Informationen finden Sie unter Eine Web-ACL erstellen.

Eine Web-ACL erstellen

  1. Navigieren Sie zur AWS WAF-Konsole, um eine Web-ACL zu erstellen.
  2. Wählen Sie Web-ACL erstellen aus.
  3. Benennen Sie die Web-ACL. Wählen Sie die Region des Application Load Balancers aus.
  4. Ordnen Sie die Application Load Balance der Web-ACL zu.
  5. Wählen Sie Weiter.

Fügen Sie der Web-ACL eine benutzerdefinierte Regel hinzu

Fahren Sie mit der Konfiguration wie folgt fort:

  1. Wählen Sie Regel hinzufügen. Wählen Sie aus dem Dropdown-Menü Meine eigenen Regeln und Regelgruppen hinzufügen aus.
  2. Fügen Sie unter Regelerstellung eine Regel hinzu.
  3. Benennen Sie die Regel (z. B. deny\ _User-Agent\ _with\ _POST).
  4. Wählen Sie unter Typ die Option Reguläre Regel aus.

Konfigurieren Sie die Übereinstimmungskriterien für die Regel

Führen Sie die verbleibenden Schritte aus:

  1. Wählen Sie entspricht mindestens einer der Aussagen (ODER).

  2. Füllen Sie unter statement1 wie folgt aus:
    **Prüfen: ** einzelner Header
    **Header-Feldname:**Benutzeragent
    **Übereinstimmungstyp:**Entspricht genau der Zeichenfolge
    Passende Zeichenfolge: curl/7.79.0

    Füllen Sie unter statement2 wie folgt aus:
    **Prüfen:**HTTP-Methode
    **Übereinstimmungstyp:**Entspricht genau der Zeichenfolge
    **Passende Zeichenfolge:**POST

  3. Wählen Sie Block für Aktion aus.

Testen Sie die Ergebnisse mit dem User-Agent-Header-Wert

Greifen Sie über die URL des Global Accelerator und den User-Agent-Header-Wert curl/7.79.0 mit der GET-Anforderungsmethode auf die Anwendung zu.

curl http://<your Global Accelerator URL> -v -H "User-Agent:curl/7.79.0"
> GET / HTTP/1.1
> Host: <your Global Accelerator DNS>
> User-Agent:curl/7.79.0

< HTTP/1.1 403 Forbidden  
< Server: awselb/2.0
<
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>

Hinweis: Ersetzen <your Global Accelerator URL> mit Ihrer Global Accelerator-URL. Ersetzen <your Global Accelerator DNS> mit Ihrem DNS.

Beachten Sie, dass AWS WAF die Anfrage blockiert hat und der Application Load Balancer mit der Meldung 403 Forbidden geantwortet hat.

Testen Sie die Ergebnisse mit einer POST-Anfrage

Greifen Sie über die URL des Global Accelerator und den User-Agent-Header-Wert curl/7.79.1 mit der POST-Anforderungsmethode auf die Anwendung zu.

curl -X POST http://<your Global Accelerator URL> --user "test-user:test-password" -v
> POST / HTTP/1.1
> Host: <your Global Accelerator DNS>
> Authorization: Basic dGVzdC11c2VyOnRlc3QtcGFzc3dvcmQ=
> User-Agent: curl/7.79.1
>
< HTTP/1.1 403 Forbidden
< Server: awselb/2.0
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>

Hinweis: Ersetzen <your Global Accelerator URL> mit Ihrer Global Accelerator-URL. Ersetzen <your Global Accelerator DNS> mit Ihrem DNS.

Beachten Sie, dass AWS WAF die Anfrage blockiert hat und der Application Load Balancer mit der Meldung 403 Forbidden geantwortet hat.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr