Come posso creare regole JSON personalizzate complesse in AWS WAF?
Voglio creare regole JSON personalizzate complesse in AWS WAF.
Soluzione
Crea regole personalizzate complesse nell'editor JSON delle regole in ACL Web e Gruppi di regole nella console AWS WAF. Accedi alla regola tramite il relativo gruppo di regole o la lista di controllo degli accessi Web (ACL Web) in cui è definita.
Per creare regole personalizzate che utilizzano istruzioni nidificate, devi utilizzare l'editor JSON. Le istruzioni nidificate combinano la logica AND, OR o NOT. Per ulteriori informazioni, consulta ](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statements.html)Nozioni di base sulle istruzioni per le regole[.
Per creare istruzioni per le regole, usa l'editor delle regole visivo nella console AWS WAF. Quindi scegli l'editor JSON delle regole per visualizzare le istruzioni JSON e apporta le modifiche necessarie nell'editor JSON.
Usa gli esempi seguenti come riferimento per creare la tua logica personalizzata per le regole.
Esempio 1
Usa l'istruzione seguente per una regola personalizzata che consente le richieste che provengono dagli **Stati Uniti - USA ** e hanno l'URI /wp-admin/ o /wp-login/:
{ "Name": "test", "Priority": 100, "Statement": { "AndStatement": { "Statements": [ { "GeoMatchStatement": { "CountryCodes": [ "US" ] } }, { "OrStatement": { "Statements": [ { "ByteMatchStatement": { "SearchString": "/wp-admin/", "FieldToMatch": { "UriPath": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "CONTAINS" } }, { "ByteMatchStatement": { "SearchString": "/wp-login/", "FieldToMatch": { "UriPath": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "CONTAINS" } } ] } } ] } }, "Action": { "Allow": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "test" } }
**Logica della regola:**la richiesta proviene (dagli USA) e l'URI è ( /a o /b ) ).
Esempio 2
Usa l'istruzione seguente per una regola personalizzata che blocca le richieste che contengono firme XSS nel corpo. La regola esclude gli URI /test, /login e /admin dall'ispezione:
{ "Name": "XSS_Block_Allow_Uploads", "Priority": 100, "Statement": { "AndStatement": { "Statements": [ { "XssMatchStatement": { "FieldToMatch": { "Body": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ] } }, { "NotStatement": { "Statement": { "OrStatement": { "Statements": [ { "ByteMatchStatement": { "SearchString": "/test", "FieldToMatch": { "UriPath": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "EXACTLY" } }, { "ByteMatchStatement": { "SearchString": "/admin", "FieldToMatch": { "UriPath": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "EXACTLY" } }, { "ByteMatchStatement": { "SearchString": "/login", "FieldToMatch": { "UriPath": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "EXACTLY" } } ] } } } } ] } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "XSS_Block_Allow_Uploads" } }
**Logica della regola:**la richiesta ha la (firma XSS nel corpo) e l'URI non è ( /a o /b o /c ).
Esempio 3
Usa l'istruzione seguente per una regola personalizzata che blocca le richieste che contengono l'etichetta personalizzata internal. Inoltre le richieste non possono avere una combinazione specifica di host, indirizzo IP e URI:
{ "Name": "Block_internal_unauthorized", "Priority": 100, "Statement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "internal" } }, { "NotStatement": { "Statement": { "AndStatement": { "Statements": [ { "ByteMatchStatement": { "FieldToMatch": { "UriPath": {} }, "PositionalConstraint": "EXACTLY", "SearchString": "/test", "TextTransformations": [{ "Type": "NONE", "Priority": 0 }] } }, { "IPSetReferenceStatement": { "ARN": "arn:aws:wafv2:us-east-1:xxxxxxxxxxxx:regional/ipset/internal_IPs/xxx-xx-xxx" } }, { "ByteMatchStatement": { "FieldToMatch": { "SingleHeader": { "Name": "host" } }, "PositionalConstraint": "EXACTLY", "SearchString": "example.com", "TextTransformations": [{ "Type": "NONE", "Priority": 0 }] } } ] } } } } ] } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "Block_internal_unauthorized" } }
**Logica della regola:**se la richiesta (contiene l'etichetta) e non (URI e IP e host), allora blocca.

Contenuto pertinente
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 3 anni fa