Warum funktioniert meine benutzerdefinierte AWS-WAF-Regel nicht?

Lesedauer: 3 Minute
0

Ich habe eine benutzerdefinierte AWS-WAF-Regel erstellt, aber sie funktioniert nicht wie erwartet. Was kann ich tun, um das Problem zu beheben?

Auflösung

Wenn Ihre benutzerdefinierte AWS-WAF-Regel nicht wie erwartet funktioniert, überprüfen Sie bitte Folgendes:

  • Priorität einer Regel
  • Texttransformation
  • Boolesche Logik

Priorität einer Regel

Überprüfen Sie, dass Sie Ihre benutzerdefinierte Regel auf die richtige Priorität gesetzt haben. Weitere Informationen finden Sie unter Reihenfolge der Verarbeitung von Regeln und Regelgruppen in einer Web-ACL.

Sie können auf eine Regel anhand ihres Namens in der Regelgruppe oder in der Web-ACL zugreifen, in der sie definiert ist.

Die Bewertungsreihenfolge der AWS-WAF-Regeln geht von oben nach unten und endet dann bei der ersten übereinstimmenden, abbrechenden Zulassen-, Blockier - oder CAPTCHA-Regel. Wenn Ihre Anforderung mit einer der über Ihrer benutzerdefinierten Regel platzierten Abbrechungsregeln übereinstimmt, führt AWS WAF die in dieser Regel angegebene Aktion durch. Die Anforderung wird nicht anhand Ihrer benutzerdefinierten Regel bewertet. Weitere Informationen finden Sie unter Grundlegende Handhabung der Regel- und Regelgruppenaktionen in einer Web-ACL.

Nehmen wir zum Beispiel an, dass Sie eine benutzerdefinierte Zulassen-Regel erstellen, um die Anforderung zuzulassen, die von einer verwalteten AWS-Regelgruppe (AMR) blockiert wird. Sie müssen Ihre benutzerdefinierte Regel höher (mit einer niedrigeren numerischen Priorität) als die AMR platzieren, die die Anforderung blockiert.

Sie können die Prioritätsreihenfolge über den Regel-Bilder der AWS-WAF-Konsole verwalten, der für Web-ACLs und Regelgruppen verfügbar ist. Um die Prioritätsreihenfolge mithilfe der AWS-API zu ändern, verwenden Sie UpdateWebACL und UpdateRuleGroup-API-Aufrufe. Um die Prioritätsreihenfolge mithilfe des AWS CLI zu ändern, verwenden Sie die Befehle update-web-acl und update-rule-group.

Texttransformation

Wenn Sie in Ihrer benutzerdefinierten Regel Texttransformationen verwenden, überprüfen Sie, ob Sie sie korrekt angewendet haben. Weitere Informationen finden Sie unter AWS-WAF-Texttransformationen.

AWS WAF wendet die Transformation an, bevor die Anforderung geprüft wird. Wenn Sie mehr als eine Transformation angeben, verarbeitet AWS WAF diese in der angegebenen Reihenfolge. Wenn Sie mehrere Transformationen verwenden, müssen Sie die Transformation und Reihenfolge der Transformation in Ihrer benutzerdefinierten Regel überprüfen.

Wenn Sie zum Beispiel eine benutzerdefinierte Regel erstellt haben, um Base64-Decodierung und URL-Decodierung für eine Zeichenfolge im Abfrageargument durchzuführen. AWS WAF führt zunächst die Base64-Decodierung der Abfragezeichenfolge in der eingehenden Anforderung durch. Die resultierende Base64-Decode-Zeichenfolge wird mithilfe einer URL-Decodierung weiter transformiert. Anschließend wird die resultierende Zeichenfolge zur URL-Decodierung anhand der Zeichenfolge überprüft, die Sie in Ihrer Regelkonfiguration angegeben haben.

Boolesche Logik

Wenn Sie logische Regelanweisungen verwenden, überprüfen Sie, ob die für Ihre benutzerdefinierte Regel verwendete AND-, OR, oder NOT-Logik korrekt ist. Weitere Informationen finden Sie unter Liste der Regelanweisungen und folgen Sie den Anweisungen unter Logische Regelanweisungen.

Um dies mithilfe der booleschen Logik zu überprüfen, betrachten Sie dieses Beispiel:

Wenn Sie eine benutzerdefinierte Regel erstellen, die mit einer Anforderung übereinstimmt, die folgende Kriterien erfüllt: Anforderung hat URI „/test“ UND die Quell-IP befindet sich im IP-Satz X, dann Blockieren.

Anforderung 1

Wenn die Anforderung den URI „/test“ (Boolescher Wert 1) hat UND IP NICHT im IP-Set X (boolescher Wert 0) ist, ergibt Boolean 1 UND Boolean 0 den booleschen Wert 0.

Diese Anforderung stimmt nicht mit Ihrer benutzerdefinierten Regel überein.

Anforderung 2

Wenn die Anforderung keinen URI „/test“ (boolescher Wert 0) hat UND IP NICHT im IP-Set X (Boolescher Wert 0) ist, dann ergibt Boolean 0 UND Boolean 0 den booleschen Wert 0.

Diese Anforderung stimmt nicht mit Ihrer benutzerdefinierten Regel überein.

Anforderung 3

Wenn die Anforderung den URI „/test“ (Boolescher Wert 1) hat UND IP im IP-Satz X (Boolescher Wert 1) ist, ergibt Boolean 1 UND Boolean 1 den booleschen Wert 1.

Diese Anforderung entspricht Ihrer benutzerdefinierten Regel.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren