Come vengono formattati i parametri e i registri per l'operazione di conteggio delle regole in AWS WAF?

9 minuti di lettura
0

Ho configurato AWS WAF e alcune delle regole nella mia ACL Web rientrano nell'operazione Count (Conteggio). Come si analizzano i parametri e i registri di Amazon CloudWatch per le regole che rientrano nell'operazione di conteggio delle regole?

Breve descrizione

Puoi utilizzare l'operazione di conteggio delle regole per testare le regole prima di implementarle con le loro normali impostazioni di operazione. AWS WAF valuta le richieste rispetto alle regole nell'operazione di conteggio delle regole e riferisce le corrispondenze attraverso parametri, registri e campioni di richieste.

Puoi utilizzare l'operazione di conteggio delle regole anche per risolvere i problemi delle regole che generano falsi positivi. I falsi positivi si verificano quando una regola o un gruppo di regole blocca il traffico che, secondo le previsioni, non dovrebbe essere bloccato. Se identifichi una regola che blocca delle richieste che invece vorresti consentire, puoi aggiornare l'operazione di conteggio di tale regola. In questo modo, la regola smette di intervenire sulle tue richieste. Per ulteriori informazioni sul rilevamento e sulla mitigazione dei falsi positivi, consulta la sezione Come posso rilevare i falsi positivi causati da AWS Managed Rules e aggiungerli a un elenco sicuro?.

Risoluzione

Per comprendere in che modo i parametri e i registri vengono formattati per l'operazione di conteggio delle regole, considera i tre scenari seguenti:

  1. Imposta l'operazione della regola per una regola personalizzata in modalità conteggio.
  2. Imposta l'operazione della regola per le singole regole in modalità conteggio in un gruppo di regole AWS Managed Rules.
  3. Sovrascrivi l'operazione di un intero gruppo di regole alla modalità conteggio.

Imposta l'operazione della regola per una regola personalizzata in modalità conteggio

Esempio

Disponi di una ACL Web (Test1-ACL) con una singola regola personalizzata (Geo-Count) con un'operazione di conteggio delle regole. La regola Geo-Count conteggia la richiesta se la richiesta proviene dagli Stati Uniti. Se l'IP del client appartiene a un Paese diverso, l'operazione predefinita dell'ACL Web corrisponde all'operazione Allow (Consenti).

Di seguito è riportata la rappresentazione JSON di questa regola:

{
  "Name": "Geo-Count",
  "Priority": 0,
  "Statement": {
    "GeoMatchStatement": {
      "CountryCodes": [
        "US"
      ]
    }
  },
  "Action": {
    "Count": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "Geo-Count"
  }
}

Se la richiesta proviene da un IP client situato negli Stati Uniti, avviene quanto segue:

  • La richiesta viene conteggiata.
  • Il parametro di CloudWatch per la regola personalizzata Geo-Count mostra un punto dati nel parametro CountedRequests.
    Nota: CloudWatch riferisce il parametro CountedRequests solo quando è presente un valore diverso da zero. Per visualizzare i dati, imposta la statistica su Sum (Somma) nella scheda Graphed metrics (Parametri grafici) della console di CloudWatch.
  • Poiché Geo-Count è una regola personalizzata con l'operazione Count, AWS WAF conteggia la richiesta.
  • Dopodiché, AWS WAF valuta la richiesta rispetto all'operazione predefinita dell'ACL Web. Poiché l'operazione predefinita dell'ACL Web è impostata su Allow, la richiesta è consentita.
  • Nel parametro AllowedRequests dell'ACL Web viene visualizzato un punto dati per questa operazione.

Per ulteriori informazioni sui parametri e sulle dimensioni incluse nello spazio dei nomi di AWS WAF, consulta la sezione Parametri e dimensioni di AWS WAF.

Quando aggiorni l'operazione di una regola personalizzata su Count, la regola viene considerata come una regola non terminante ai fini della registrazione. Pertanto, se la richiesta corrisponde a una regola personalizzata in modalità conteggio, vengono registrati i seguenti campi:

  • nonTerminatingMatchingRules: l'elenco delle regole non terminanti che corrispondono alla richiesta.
  • ruleId: l'ID della regola che corrispondeva alla richiesta e non era terminante.
  • action: si tratta sempre di COUNT (Conteggio).
  • ruleMatchDetails: informazioni dettagliate sulla regola che corrisponde alla richiesta. Questo campo viene compilato solo per le istruzioni di corrispondenza delle regole di iniezione SQL (SQLi) e scripting cross-site (XSS).

Se la regola Geo-Count corrisponde alla richiesta, i registri mostrano i dettagli nonTerminatingMatchingRules come illustrato nell'esempio seguente:

"nonTerminatingMatchingRules": [{
  "ruleId": "Geo-Count",
  "action": "COUNT",
  "ruleMatchDetails": [

  ]
}]

Per ulteriori informazioni su tutti i possibili campi dei registri, consulta la sezione Campi dei registri.

Per attivare la registrazione per un'ACL Web, consulta la sezione Gestione della registrazione per un'ACL Web.

Imposta l'operazione della regola per le singole regole in modalità Count in un gruppo di regole AWS Managed Rules

Puoi sovrascrivere le operazioni delle regole all'interno di un gruppo di regole impostandole in modo che conteggino alcune o tutte le regole. Per le operazioni delle regole all'interno del gruppo di regole configurate su un valore diverso dal conteggio, la sovrascrittura modifica tali operazioni in modo che vengano conteggiate solo le richieste corrispondenti.

Se una richiesta Web corrisponde alla regola, AWS WAF elabora la corrispondenza come un valore conteggiato, quindi procede a valutare le regole successive all'interno del gruppo di regole.

Per ulteriori informazioni su come impostare l'operazione di conteggio delle regole in un gruppo di regole, consulta la sezione Impostazione delle operazioni di conteggio delle regole in un gruppo di regole.

Esempio

Disponi di un'ACL Web (Test2-ACL) che include un gruppo di regole AWS Managed Rules (AWSManagedRulesKnownBadInputsRuleSet). In questa ACL Web non sono presenti altre regole e l'operazione predefinita dell'ACL Web è configurata con l'operazione Allow (Consenti).

La regola Log4JRCE all'interno del gruppo di regole AWSManagedRulesKnownBadInputsRuleSet viene aggiornata all'operazione Count. Ora, se un componente (come un URI, una stringa di query e così via) nella richiesta del client presenta una vulnerabilità Log4j, tale richiesta viene conteggiata dalla regola Log4JRCE. Se la richiesta non corrisponde ad altre regole nel gruppo di regole, è consentita dall'operazione predefinita dell'ACL Web.

Di seguito è riportata la rappresentazione JSON di questa regola:

{
  "Name": "AWS-AWSManagedRulesKnownBadInputsRuleSet",
  "Priority": 0,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesKnownBadInputsRuleSet",
      "ExcludedRules": [
        {
          "Name": "Log4JRCE"
        }
      ]
    }
  },
  "OverrideAction": {
    "None": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "AWS-AWSManagedRulesKnownBadInputsRuleSet"
  }
}

Se imposti l'operazione di conteggio delle regole in modo tale che conteggi le regole all'interno del gruppo di regole, queste regole vengono considerate come escluse nel gruppo di regole. Se hai attivato i parametri, riceverai i parametri COUNT per ogni regola esclusa.

Se la richiesta corrisponde alla regola Log4JRCE, si verifica quanto segue:

  • La richiesta viene conteggiata.
  • Il parametro di CloudWatch per la regola Log4JRCE mostra un punto dati nel parametro CountedRequests.

Se nessun'altra regola all'interno di AWSManagedRulesKnownBadInputsRuleSet corrisponde alla richiesta, si verifica quanto segue:

  • La richiesta è consentita dall'operazione predefinita dell'ACL Web.
  • Nel parametro AllowedRequests dell'ACL Web viene visualizzato un punto dati.

Per le regole escluse, nei registri di AWS WAF vengono acquisiti i seguenti campi:

  • excludedRules: l'elenco delle regole che sono state escluse all'interno del gruppo di regole. L'operazione per queste regole è impostata su Count.
  • exclusionType: un tipo che indica che la regola esclusa è impostata sull'operazione Count.
  • ruleId: l'ID della regola esclusa all'interno del gruppo di regole.

Se la regola Log4JRCE corrisponde alla richiesta, i registri mostrano i dettagli excludedRules come illustrato nell'esempio seguente:

"ruleGroupList":[
  {
    "ruleGroupId":"AWS#AWSManagedRulesKnownBadInputsRuleSet",
    "terminatingRule":null,
    "nonTerminatingMatchingRules":[
      
      ],
    "excludedRules":[
      {
        "exclusionType":"EXCLUDED_AS_COUNT",
        "ruleId":"Log4JRCE"
      }
    ]
  }
]

Se una singola regola all'interno di un gruppo di regole viene aggiornata all'operazione di conteggio delle regole, si verifica quanto segue:

  • I registri delle richieste che corrispondono a questa regola non conterranno l'operazione Count per la regola nel campo nonTerminatingMatchingRules.
  • I registri di AWS WAF mostrano questa regola nel campo excludedRules.

Sovrascrivi l'operazione di un intero gruppo di regole alla modalità conteggio

Per informazioni su come sovrascrivere l'operazione di conteggio per un gruppo di regole, consulta la sezione Sovrascrittura dell'operazione di conteggio per i gruppi di regole risultanti.

Per informazioni su come sovrascrivere l'operazione di conteggio per un gruppo di regole, consulta la sezione Sovrascrittura dell'operazione di conteggio per un gruppo di regole.

Esempio

Disponi di un'ACL Web (Test3-ACL) che include un gruppo di regole AWS Managed Rules (AWSManagedRulesKnownBadInputsRuleSet). In questa ACL Web non sono presenti altre regole e l'operazione predefinita dell'ACL Web è Allow. Tutte le regole all'interno del gruppo di regole AWSManagedRulesKnownBadInputsRuleSet utilizzano l'operazione predefinita definita nella regola. Ciò significa che le regole all'interno di questo gruppo di regole non sono impostate su Count. Tuttavia, l'opzione Override rule group action to count (Sovrascrivi l'operazione di conteggio del gruppo di regole) è attivata.

Di seguito è riportata la rappresentazione JSON di questa regola:

{
  "Name": "AWS-AWSManagedRulesKnownBadInputsRuleSet",
  "Priority": 0,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesKnownBadInputsRuleSet"
    }
  },
  "OverrideAction": {
    "Count": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "AWS-AWSManagedRulesKnownBadInputsRuleSet"
  }
}

Se un componente (come un URI, una stringa di query e così via) nella richiesta del client presenta una vulnerabilità Log4j, si verifica quanto segue:

  • La richiesta viene bloccata dalla regola Log4JRCE.
  • Poiché Block è un'operazione terminativa, AWS WAF interrompe la valutazione del gruppo di regole e restituisce il risultato dell'operazione di terminazione all'ACL Web.
  • A questo punto, l'operazione Override rule group action to count (Sovrascrivi l'operazione di conteggio del gruppo di regole) ha effetto. L'operazione di terminazione del gruppo di regole viene sovrascritta dal conteggio.
  • AWS WAF procede quindi con l'elaborazione delle regole rimanenti nell'ACL Web.

Se una richiesta corrisponde alla regola Log4JRCE (o a qualsiasi altra regola) all'interno del gruppo di regole AWSManagedRulesKnownBadInputsRuleSet, si verifica quanto segue:

  • CloudWatch mostra un punto dati nel parametro CountedRequests corrispondente al nome del gruppo di regole AWSManagedRulesKnownBadInputsRuleSet.
  • Dopo la sovrascrittura, AWS WAF procede con l'elaborazione delle regole rimanenti nell'ACL Web. Pertanto, la richiesta corrisponde infine all'operazione predefinita dell'ACL Web. Nel parametro AllowedRequests dell'ACL Web questo viene visualizzato come un punto dati.
  • Nei registri di AWS WAF, la richiesta corrispondente contiene un'operazione di conteggio nel campo nonTerminatingMatchingRules.
  • Inoltre, ruleGroupList mostra la regola all'interno del gruppo di regole che originariamente bloccava la richiesta prima che l'operazione di terminazione venisse sovrascritta con il conteggio.
  • Se la regola Log4JRCE corrisponde alla richiesta, i registri mostrano i dettagli ruleGroupList e nonTerminatingMatchingRules come illustrato nell'esempio seguente:
"ruleGroupList": [{
  "ruleGroupId": "AWS#AWSManagedRulesKnownBadInputsRuleSet",
  "terminatingRule": {
      "ruleId": "Log4JRCE",
      "action": "BLOCK",
      "ruleMatchDetails": null
    },
  "nonTerminatingMatchingRules": [

  ],
    "excludedRules": null
  }
],
"rateBasedRuleList": [

],
"nonTerminatingMatchingRules": [{
    "ruleId": "AWS-AWSManagedRulesKnownBadInputsRuleSet",
    "action": "COUNT",
    "ruleMatchDetails": [

  ]
}]

Informazioni correlate

Gestione di base delle operazioni delle regole e dei gruppi di regole in un'ACL Web

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa