Condividi tramite


Regole personalizzate per Web application firewall v2 nel gateway applicazione di Azure

Web Application Firewall (WAF) v2 del gateway applicazione di Azure include un set di regole preconfigurato e gestito dalla piattaforma che offre protezione da molti tipi diversi di attacchi. Questi attacchi includono scripting tra siti, SQL injection e altri. Gli amministratori WAF possono scrivere regole personalizzate per aumentare le regole del set di regole di base. Le regole personalizzate possono bloccare, consentire o registrare il traffico richiesto in base ai criteri corrispondenti. Se il criterio WAF è impostato sulla modalità di rilevamento e viene attivata una regola di blocco personalizzata, la richiesta viene registrata e non viene eseguita alcuna azione di blocco.

Le regole personalizzate consentono di creare regole personalizzate che vengono valutate per ogni richiesta che passa attraverso il WAF. Queste regole hanno una priorità più elevata rispetto alle altre dei set di regole gestiti. Le regole personalizzate contengono un nome, un valore di priorità e una serie di condizioni di corrispondenza. Se tali condizioni sono soddisfatte, viene eseguita un'azione (consentire, bloccare o registrare le richieste). Se viene attivata una regola personalizzata e viene eseguita un'azione di autorizzazione o blocco, non vengono valutate altre regole personalizzate o gestite. Le regole personalizzate possono essere abilitate/disabilitate su richiesta.

Ad esempio, è possibile bloccare tutte le richieste da un indirizzo IP nell'intervallo 192.168.5.0/24. In questa regola, l'operatore è IPMatch, matchValues è l'intervallo di indirizzi IP (192.168.5.0/24) e l'azione consiste nel bloccare il traffico. È anche possibile impostare il nome, la priorità e lo stato abilitato/disabilitato della regola.

Le regole personalizzate supportano l'uso della logica di raggruppamento per rendere più avanzate le regole che rispondono alle esigenze di sicurezza. Ad esempio, è possibile usare due regole personalizzate per creare la logica seguente ((rule1:Condition 1 e rule1:Condition 2) o rule2:Condition 3). Questa logica indica che se la condizione 1 e la condizione 2 vengono soddisfatte o se viene soddisfatta la condizione 3, il WAF deve eseguire l'azione specificata nelle regole personalizzate.

Le diverse condizioni di corrispondenza all'interno della stessa regola vengono sempre composte usando e. Ad esempio, bloccare il traffico da un indirizzo IP specifico e solo se usano un determinato browser.

Se si vuole usare o tra due condizioni diverse, le due condizioni devono essere in regole diverse. Ad esempio, bloccare il traffico da un indirizzo IP specifico o bloccare il traffico se usano un browser specifico.

Le espressioni regolari sono supportate anche nelle regole personalizzate, proprio come nei set di regole CRS. Per esempi, vedere Esempi 3 e 5 in Creare e usare regole Web application firewall personalizzate.

Nota

Il numero massimo di regole personalizzate WAF è 100. Per altre informazioni sui limiti di gateway applicazione, vedere Sottoscrizione di Azure e limiti, quote e vincoli dei servizi.

Attenzione

Tutte le regole di reindirizzamento applicate a livello di gateway applicazione ignorano le regole personalizzate WAF. Per altre informazioni sulle regole di reindirizzamento, vedere Panoramica del reindirizzamento nel gateway applicazione.

Consentire e bloccare

Consentire e bloccare il traffico è semplice con regole personalizzate. Ad esempio, è possibile bloccare tutto il traffico proveniente da un intervallo di indirizzi IP. È possibile creare un'altra regola per consentire il traffico se la richiesta proviene da un browser specifico.

Per consentire un elemento, assicurarsi che il parametro -Action sia impostato su Consenti. Per bloccare un elemento, assicurarsi che il parametro -Action sia impostato su Blocca.

$AllowRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example1 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Allow `
   -State Enabled

$BlockRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example2 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Block `
   -State Enabled

Il precedente $BlockRule mappa alla regola personalizzata seguente in Azure Resource Manager:

"customRules": [
      {
        "name": "blockEvilBot",
        "priority": 2,
        "ruleType": "MatchRule",
        "action": "Block",
        "state": "Enabled",
        "matchConditions": [
          {
            "matchVariables": [
              {
                "variableName": "RequestHeaders",
                "selector": "User-Agent"
              }
            ],
            "operator": "Contains",
            "negationCondition": false,
            "matchValues": [
              "evilbot"
            ],
            "transforms": [
              "Lowercase"
            ]
          }
        ]
      }
    ], 

Questa regola personalizzata contiene un nome, una priorità, un'azione e la matrice di condizioni di corrispondenza che devono essere soddisfatte affinché l'azione venga eseguita. Per altre spiegazioni di questi campi, vedere le descrizioni dei campi seguenti. Per altri esempi di regole personalizzate, vedere Creare e usare regole di Web Application Firewall personalizzate.

Campi per regole personalizzate

Nome [facoltativo]

Il nome della regola. Viene visualizzato nei log.

Abilitare la regola [facoltativo]

Attivare/disattivare questa regola. Le regole personalizzate sono attivate per impostazione predefinita.

Priorità [obbligatorio]

  • Determina l'ordine di valutazione delle regole. Più basso è il valore, più presto sarà la valutazione della regola. L'intervallo consentito è compreso tra 1 e 100.
  • Deve essere univoco in tutte le regole personalizzate. Una regola con priorità 40 viene valutata prima di una con priorità 80.

Tipo di regola [obbligatorio]

Attualmente deve essere MatchRule.

Variabile di corrispondenza [obbligatorio]

Deve essere una delle variabili:

  • RemoteAddr: indirizzo/intervallo IPv4 della connessione al computer remoto
  • RequestMethod - Metodo di richiesta HTTP
  • QueryString: variabile nell'URI
  • PostArgs: argomenti inviati nel corpo POST. Le regole personalizzate che usano questa variabile di corrispondenza vengono applicate solo se l'intestazione "Content-Type" è impostata su "application/x-www-form-urlencoded" e "multipart/form-data". Il tipo di contenuto aggiuntivo di application/json è supportato con CRS versione 3.2 o successiva, set di regole di protezione bot e regole personalizzate per la corrispondenza geografica.
  • RequestUri: URI della richiesta
  • RequestHeaders: intestazioni della richiesta
  • RequestBody: questa variabile contiene l'intero corpo della richiesta nel suo complesso. Le regole personalizzate che usano questa variabile di corrispondenza vengono applicate solo se l'intestazione "Content-Type" è impostata sul tipo di media application/x-www-form-urlencoded. I tipi di contenuto aggiuntivi di application/soap+xml, application/xml, text/xml sono supportati con CRS versione 3.2 o successiva, set di regole di protezione bot e regole personalizzate di corrispondenza geografica.
  • RequestCookies: cookie della richiesta

Selettore [facoltativo]

Descrive il campo dell'insieme matchVariable. Ad esempio, se matchVariable è RequestHeaders, il selettore potrebbe trovarsi nell'intestazione User-Agent.

Operatore [obbligatorio]

Deve essere uno degli operatori seguenti:

  • IPMatch: usato solo quando match variable è RemoteAddr e supporta solo IPv4
  • Uguale a: l'input è uguale a MatchValue
  • Any: non dovrebbe avere un MatchValue. È consigliabile trovare laa variabile di corrispondenza con un selettore valido.
  • Contiene
  • LessThan
  • GreaterThan
  • LessThanOrEqual
  • GreaterThanOrEqual
  • BeginsWith
  • EndsWith
  • Regex
  • Corrispondenza geografica

Condizione di negazione [facoltativo]

Nega la condizione corrente.

Trasforma [facoltativo]

Elenco di stringhe con nomi di trasformazioni da eseguire prima che venga tentata la corrispondenza. Queste possono essere le trasformazioni seguenti:

  • Minuscole
  • Maiuscole
  • Trim
  • UrlDecode
  • UrlEncode
  • RemoveNulls
  • HtmlEntityDecode

Valori di corrispondenza [obbligatorio]

Elenco di valori che devono corrispondere, che possono essere considerati come OR. Ad esempio, potrebbe trattarsi di indirizzi IP o altre stringhe. Il formato del valore dipende dall'operatore precedente.

I valori dei metodi di richiesta HTTP supportati includono:

  • GET
  • HEAD
  • POST
  • OPTIONS
  • PUT
  • DELETE
  • PATCH

Azione [richiesta]

In modalità di rilevamento dei criteri WAF, se viene attivata una regola personalizzata, l'azione viene sempre registrata indipendentemente dal valore dell'azione impostato sulla regola personalizzata.

  • Consenti: autorizza la transazione, ignorando tutte le altre regole. La richiesta specificata viene aggiunta all'elenco consenti e, una volta trovata una corrispondenza, la richiesta interrompe un'ulteriore valutazione e viene inviata al pool back-end. Le regole incluse nell'elenco consenti non vengono valutate per altre regole personalizzate o regole gestite.
  • Blocca: blocca o registra la transazione in base a SecDefaultAction (modalità di rilevamento/prevenzione).
    • Modalità di prevenzione: blocca la transazione in base a SecDefaultAction. Proprio come l'azione Allow, dopo che la richiesta viene valutata e aggiunta all'elenco di blocchi, la valutazione viene arrestata e la richiesta viene bloccata. Qualsiasi richiesta dopo che soddisfa le stesse condizioni non viene valutata e viene bloccata.
    • Modalità di rilevamento: registra la transazione in base a SecDefaultAction dopo la quale la valutazione viene arrestata. Qualsiasi richiesta dopo che soddisfa le stesse condizioni non viene valutata e viene appena registrata.
  • Log: consente alla regola di scrivere nel log, ma consente di eseguire il resto delle regole per la valutazione. Le altre regole personalizzate vengono valutate in ordine di priorità, seguite dalle regole gestite.

Copia e duplicazione di regole personalizzate

Le regole personalizzate possono essere duplicate all'interno di un determinato criterio. Quando si duplica una regola, è necessario specificare un nome univoco per la regola e un valore di priorità univoco. Inoltre, le regole personalizzate possono essere copiate da un criterio WAF del gateway applicazione a un altro, purché i criteri si trovino entrambi nella stessa sottoscrizione. Quando si copia una regola da un criterio a un altro, è necessario selezionare il criterio WAF del gateway applicazione in cui copiare la regola. Dopo aver selezionato il criterio WAF, è necessario assegnare alla regola un nome univoco e assegnare un rango di priorità.

Regole personalizzate di corrispondenza geografica

Le regole personalizzate consentono di creare regole su misura per soddisfare le esigenze specifiche delle applicazioni e dei criteri di sicurezza. È possibile limitare l'accesso alle applicazioni Web in base al paese o all'area geografica. Per altre informazioni, vedere Regole personalizzate di corrispondenza geografica.

Passaggi successivi