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

Il gateway applicazione di Azure Web application firewall (WAF) v2 include un set di regole preconfigurato e gestito dalla piattaforma che offre la protezione da molti tipi diversi di attacchi. Questi attacchi includono script tra siti, inserimento SQL e altri. Se si è un amministratore WAF, è possibile 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 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 queste condizioni vengono soddisfatte, viene eseguita un'azione (per consentire, bloccare o registrare). Se viene attivata una regola personalizzata e viene eseguita un'azione consenti o bloccata, non vengono valutate altre regole personalizzate o gestite.

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 e la priorità della regola.

Le regole personalizzate supportano l'uso della logica composta per rendere più avanzate le regole che rispondono alle esigenze di sicurezza. Ad esempio, ((Condizione 1 e Condizione 2) o Condizione 3). Ciò significa che se la condizione 1 e la condizione 2 vengono soddisfatte o se la condizione 3 viene soddisfatta, il WAF deve eseguire l'azione specificata nella regola personalizzata.

Le diverse condizioni di corrispondenza all'interno della stessa regola vengono sempre composte usando e. Ad esempio, blocca 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, blocca il traffico da un indirizzo IP specifico o blocca il traffico se usano un browser specifico.

Nota

Il numero massimo di regole personalizzate WAF è 100. Per altre informazioni sui limiti gateway applicazione, vedere Limiti di sottoscrizione e servizio di Azure, quote e vincoli.

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.

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 gateway applicazione panoramica del reindirizzamento.

Consenti e blocco

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 -Action parametro sia impostato su Consenti. Per bloccare un elemento, assicurarsi che il -Action parametro sia impostato su Block.

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

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

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

"customRules": [
      {
        "name": "blockEvilBot",
        "priority": 2,
        "ruleType": "MatchRule",
        "action": "Block",
        "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 corrispondenti che devono essere soddisfatte per l'azione da eseguire. Per altre spiegazioni di questi campi, vedere le descrizioni dei campi seguenti. Ad esempio, regole personalizzate, vedere Creare e usare regole web application firewall personalizzate.

Campi per regole personalizzate

Nome [facoltativo]

Nome della regola. Viene visualizzato nei log.

Priorità [obbligatorio]

  • Determina l'ordine di valutazione della regola. Valore inferiore, la valutazione precedente 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 regola con priorità 80.

Tipo di regola [obbligatorio]

Attualmente, deve essere MatchRule.

Variabile di corrispondenza [obbligatoria]

Deve essere una delle variabili:

  • RemoteAddr - Indirizzo/Intervallo di indirizzi/intervallo della connessione del 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 le regole personalizzate crS versione 3.2 o successiva, il set di regole di protezione bot e le regole personalizzate per la corrispondenza geografica.
  • RequestUri : URI della richiesta
  • RequestHeaders : intestazioni della richiesta
  • RequestBody: 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 application/x-www-form-urlencoded tipo di supporto. I tipi di contenuto aggiuntivi di application/soap+xml, application/xml, text/xml sono supportati con le regole personalizzate crS versione 3.2 o successiva, il set di regole di protezione bot e le regole personalizzate per la corrispondenza geografica.
  • RequestCookies - Cookie della richiesta

Selettore [facoltativo]

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

Operatore [obbligatorio]

Deve essere uno degli operatori seguenti:

  • IPMatch: usato solo quando la variabile match è RemoteAddr e supporta solo IPv4
  • Uguale: l'input è uguale a MatchValue
  • Qualsiasi: non dovrebbe avere un MatchValue. È consigliabile trovare la variabile di corrispondenza con un selettore valido.
  • Contiene
  • LessThan
  • GreaterThan
  • LessThanOrEqual
  • GreaterThanOrEqual
  • BeginsWith
  • EndsWith
  • Regex (Espressione regolare)
  • Geomatch

Condizione nega [facoltativo]

Nega la condizione corrente.

Trasformazione [facoltativo]

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

  • Lettere minuscole
  • Maiuscolo
  • Taglio
  • UrlDecode
  • Urlencode
  • RemoveNulls
  • HtmlEntityDecode

Valori di corrispondenza [obbligatorio]

Elenco di valori da associare, che può essere considerato come OR'ed. Ad esempio, potrebbe essere indirizzi IP o altre stringhe. Il formato del valore dipende dall'operatore precedente.

I valori del metodo di richiesta HTTP supportati includono:

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

Azione [obbligatoria]

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

  • Consenti: autorizza la transazione, ignorando tutte le altre regole. La richiesta specificata viene aggiunta all'elenco consenti e una volta corrispondente, la richiesta arresta ulteriormente la valutazione e viene inviata al pool back-end. Le regole presenti nell'elenco allowlist 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. Analogamente all'azione Consenti, una volta valutata la richiesta e aggiunta all'elenco di blocchi, la valutazione viene arrestata e la richiesta viene bloccata. Qualsiasi richiesta dopo che soddisfa le stesse condizioni non verrà valutata e verrà 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 verrà valutata e verrà registrata.
  • Log: consente alla regola di scrivere nel log, ma consente di eseguire le altre regole per la valutazione. Le altre regole personalizzate vengono valutate in ordine di priorità, seguite dalle regole gestite.

Regole personalizzate di corrispondenza geografica

Le regole personalizzate consentono di creare regole personalizzate per soddisfare le esigenze esatte 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 Geomatch.

Passaggi successivi

Dopo aver letto la documentazione sulle regole personalizzate, crearle in modo autonomo.