Regole personalizzate per Web application firewall di Azure in Frontdoor di Azure

Web application firewall di Azure in Frontdoor di Azure consente di controllare l'accesso alle applicazioni Web in base alle condizioni definite. Una regola web application firewall (WAF) personalizzata è costituita da un numero di priorità, un tipo di regola, condizioni di corrispondenza e un'azione.

Ci sono due tipi di regole personalizzate: regole di corrispondenza e regole per il limite di frequenza. Una regola di corrispondenza controlla l'accesso in base a un set di condizioni corrispondenti. Una regola di limite di velocità controlla l'accesso in base alle condizioni di corrispondenza e alle frequenze delle richieste in ingresso. È possibile disabilitare una regola personalizzata per impedirne la valutazione, ma mantenere comunque la configurazione.

Per altre informazioni sulla limitazione della frequenza, vedere Che cos'è la limitazione della frequenza per Frontdoor di Azure?.

Priorità, tipi di azione e condizioni di corrispondenza

È possibile controllare l'accesso con una regola WAF personalizzata che definisce un numero di priorità, un tipo di regola, una matrice di condizioni di corrispondenza e un'azione.

  • Priorità

    Intero univoco che descrive l'ordine di valutazione delle regole WAF. Le regole con valori con priorità inferiore vengono valutate prima delle regole con valori più elevati. La valutazione della regola si arresta su qualsiasi azione della regola, ad eccezione di Log. I numeri di priorità devono essere univoci tra tutte le regole personalizzate.

  • Azione

    Definisce come instradare una richiesta se viene trovata una corrispondenza con una regola WAF. È possibile scegliere una delle azioni seguenti da applicare quando una richiesta corrisponde a una regola personalizzata.

    • Consenti: waf consente alla richiesta di elaborare, registra una voce nei log WAF e viene chiusa.
    • Blocca: la richiesta è bloccata. WAF invia una risposta a un client senza inoltrare ulteriormente la richiesta. WAF registra una voce nei log WAF ed esce.
    • Log: WAF registra una voce nei log WAF e continua a valutare la regola successiva nell'ordine di priorità.
    • Reindirizzamento: WAF reindirizza la richiesta a un URI specificato, registra una voce nei log WAF e viene chiusa.
  • Condizione di corrispondenza

    Definisce una variabile di corrispondenza, un operatore e un valore di corrispondenza. Ogni regola può contenere più condizioni di corrispondenza. Una condizione di corrispondenza può essere basata sulla posizione geografica, sugli indirizzi IP client (CIDR), sulle dimensioni o sulla corrispondenza di stringa. La corrispondenza tra stringhe può essere confrontata con un elenco di variabili di corrispondenza.

    • Corrispondenza variabile

      • RequestMethod
      • QueryString
      • PostArgs
      • RequestUri
      • RequestHeader
      • RequestBody
      • Cookie
    • Operatore

      • Any: spesso usato per definire l'azione predefinita se non viene trovata alcuna corrispondenza con le regole. Qualsiasi è un operatore corrispondente a tutti.
      • Uguale
      • Contiene
      • LessThan: vincolo Size
      • GreaterThan: vincolo Size
      • LessThanOrEqual: vincolo Size
      • GreaterThanOrEqual: vincolo Size
      • BeginsWith
      • EndsWith
      • Regex
    • Regex

      Non supporta le operazioni seguenti:

      • Backreferences and capturing subexpressions (Backreferences and capturing subexpressions)
      • Asserzioni arbitrarie di larghezza zero
      • Riferimenti a subroutine e modelli ricorsivi
      • Modelli condizionali
      • Verbi di controllo backtracking
      • Direttiva \C a byte singolo
      • Direttiva \R newline match
      • Direttiva \K start of match reset
      • Callout e codice incorporato
      • Raggruppamento atomico e quantificatori possessivi
    • Nega [facoltativo]

      È possibile impostare la negate condizione su true se il risultato di una condizione deve essere negato.

    • Trasforma [facoltativo]

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

      • Maiuscole
      • Minuscole
      • Trim
      • RemoveNulls
      • UrlDecode
      • UrlEncode
    • Valore della corrispondenza

      I valori dei metodi di richiesta HTTP supportati includono:

      • GET
      • POST
      • PUT
      • HEAD
      • DELETE
      • LOCK
      • UNLOCK
      • PROFILE
      • OPTIONS
      • PROPFIND
      • PROPPATCH
      • MKCOL
      • COPY
      • MOVE
      • PATCH
      • CONNECT

Esempi

Si considerino gli esempi seguenti.

Corrispondenza basata sui parametri della richiesta HTTP

Si supponga di dover configurare una regola personalizzata per consentire le richieste che soddisfano le due condizioni seguenti:

  • Il Referer valore dell'intestazione è uguale a un valore noto.
  • La stringa di query non contiene la parola password.

Ecco una descrizione JSON di esempio della regola personalizzata:

{
  "name": "AllowFromTrustedSites",
  "priority": 1,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestHeader",
      "selector": "Referer",
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "www.mytrustedsites.com/referpage.html"
      ]
    },
    {
      "matchVariable": "QueryString",
      "operator": "Contains",
      "matchValue": [
        "password"
      ],
      "negateCondition": true
    }
  ],
  "action": "Allow"
}

Bloccare le richieste HTTP PUT

Si supponga di dover bloccare qualsiasi richiesta che usi il metodo HTTP PUT.

Ecco una descrizione JSON di esempio della regola personalizzata:

{
  "name": "BlockPUT",
  "priority": 2,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestMethod",
      "selector": null,
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "PUT"
      ]
    }
  ],
  "action": "Block"
}

Vincolo di dimensione

Un WAF di Frontdoor di Azure consente di creare regole personalizzate che applicano un vincolo di lunghezza o dimensioni in una parte di una richiesta in ingresso. Questo vincolo di dimensione viene misurato in byte.

Si supponga di dover bloccare le richieste in cui l'URL è più lungo di 100 caratteri.

Ecco una descrizione JSON di esempio della regola personalizzata:

{
  "name": "URLOver100",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "GreaterThanOrEqual",
      "negateCondition": false,
      "matchValue": [
        "100"
      ]
    }
  ],
  "action": "Block"
}

Corrispondenza basata sull'URI della richiesta

Si supponga di dover consentire le richieste in cui l'URI contiene "login".

Ecco una descrizione JSON di esempio della regola personalizzata:

{
  "name": "URIContainsLogin",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "Contains",
      "negateCondition": false,
      "matchValue": [
        "login"
      ]
    }
  ],
  "action": "Allow"
}

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 di Frontdoor di Azure 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 di Frontdoor di Azure in cui copiare la regola. Dopo aver selezionato il criterio WAF, è necessario assegnare alla regola un nome univoco e assegnare un rango di priorità.

Passaggi successivi