Informazioni sulle regole personalizzate WAF

Utilizza la funzione delle regole personalizzate WAF per controllare il traffico in entrata filtrando le richieste a un dominio. È possibile eseguire azioni quali Blocco o Sfida gestita sulle richieste in arrivo in base alle regole definite.

Come altre regole valutate dal Ruleset Engine, le regole personalizzate WAF richiedono i seguenti parametri di base:

  • Un'espressione che specifica i criteri di abbinamento del traffico utilizzando il linguaggio delle regole.
  • Un'azione che specifica cosa fare quando c'è una corrispondenza per la regola.

Le regole personalizzate vengono valutate nell'ordine in cui sono impostate, dalla prima all'ultima posizione, nella tabella delle regole personalizzate. È possibile visualizzare la tabella navigando su Sicurezza > Regole firewall. Alcune azioni come Blocca interrompono la valutazione di altre regole. Per ulteriori dettagli sulle azioni e sul loro comportamento, vedere Azioni delle regole di Ruleset Engine.

Casi di utilizzo comuni

Le sezioni seguenti illustrano esempi di casi d'uso comuni per le regole personalizzate WAF.

Consenti il traffico solo da paesi specificati

Utilizzando l'azione Blocca, questo esempio blocca le richieste in base al codice paese utilizzando il campo " ip.src.country ", consentendo richieste solo da due paesi: Stati Uniti e Messico:

(not ip.src.country in {"US" "MX"})

Blocca le richieste in base alla reputazione dell'IP

La reputazione IP è un punteggio da 0 (rischio zero) a 100 (rischio elevato), che classifica la reputazione IP di un visitatore.

La reputazione dell'IP viene calcolata sulla base dei dati forniti da Project Honeypot, delle informazioni relative agli IP pubblici esterni e delle informazioni interne sulle minacce ricavate dalle regole gestite e da DDoS.

Utilizzando l'azione Blocca, questo esempio blocca le richieste basate sui codici paese (formato ISO 3166-1 Alpha 2 ↗), provenienti da indirizzi IP che ottengono un punteggio superiore a 0:

(ip.src.country in {"CN" "TW" "US" "GB"} and cf.threat_score gt 0)

Consente solo il traffico da indirizzi IP specificati

L'azione Blocca limita l'accesso al dominio, consentendo solo le richieste provenienti da indirizzi IP specifici e negando tutte le altre.

Ad esempio, per consentire il traffico solo dagli IP 192.0.2.10 e 203.0.113.25, eseguire la seguente espressione:

(not ip.src in {"192.0.2.10" "203.0.113.25"})

Utilizzare una delle seguenti espressioni a seconda del protocollo che si desidera limitare:

  • Se si desidera specificare le sottoreti invece dei singoli indirizzi IP, IBM Cloud CIS supporta solo le sottoreti:

    IPv4: /16 e /24

    IPv6: /32, /48, e /64

  • Includere sempre sia IPv4 che IPv6 per una copertura completa.

  • Bloccando solo IPv4 ( 0.0.0.0/0 ) si consente comunque il traffico di IPv6. Per bloccare entrambi:

    (ip.src in {0.0.0.0/0} or ip.src in {::/0})
    

Configurazione di una regola per saltare altre funzionalità dell' CIS

L'azione di salto supporta diverse opzioni di salto, a seconda delle caratteristiche di sicurezza o dei prodotti che si desidera saltare.

Questa sezione contiene esempi di diversi scenari di regole di salto per le regole personalizzate WAF. Tenere conto delle seguenti considerazioni:

  • Il valore " {zone_id} " è l'ID della zona in cui si desidera aggiungere la regola.

  • Il valore " {ruleset_id} " è l'ID del set di regole del punto di ingresso della fase " http_request_firewall_custom ". Per i dettagli su come ottenere questo ID del set di regole, vedere Elenco e visualizzazione dei set di regole. Gli esempi API seguenti aggiungono una regola di esclusione a un set di regole esistente utilizzando l'operazione Crea un set di regole di zona.

    Tuttavia, il set di regole del punto di ingresso potrebbe non esistere ancora. In questo caso, utilizzare l'operazione Aggiorna set regole entrypoint per creare il set regole entrypoint con una regola di esclusione.

  • Sebbene ogni esempio includa un solo parametro di azione, è possibile utilizzare diverse opzioni di salto nella stessa regola specificando contemporaneamente i parametri di azione del set di regole, delle fasi e dei prodotti.

Ignora le regole rimanenti nel set di regole corrente

Questo esempio utilizza l'operazione di regola Crea un set di regole di zona per aggiungere una regola di esclusione al set di regole di punto di ingresso di fase esistente ( http_request_firewall_custom ) con ID RULESET_ID. Se non si conosce l'ID del ruleset del punto di ingresso, vedere Ottenere il punto di ingresso della regola personalizzata per l'API. La regola ignora tutte le restanti regole nel set di regole corrente per le richieste che corrispondono all'espressione della regola:

curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "action": "skip",
  "action_parameters": {
    "ruleset": "current"
  },
  "expression": "http.request.uri.path contains \"/skip-current-ruleset/\"",
  "description": ""
}'

Salta una fase

Questo esempio utilizza il set di regole Crea una zona per aggiungere una regola al set di regole esistente per il punto di ingresso della fase di configurazione dell' http_request_firewall_custom, con ID RULESET_ID. La regola salta la fase di " http_ratelimit " per le richieste che corrispondono all'espressione della regola:

curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "action": "skip",
  "action_parameters": {
    "phases": [
      "http_ratelimit"
    ]
  },
  "expression": "http.request.uri.path contains \"/skip-phase/\"",
  "description": ""
}'

Salta una fase e non registrare le richieste corrispondenti

Questo esempio utilizza l'operazione di regola Crea un set di regole di zona per aggiungere una regola che ignora la fase di avvio ( http_ratelimit ) e disabilita la registrazione degli eventi per la regola corrente:

curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "action": "skip",
  "action_parameters": {
    "phases": [
      "http_ratelimit"
    ]
  },
  "logging": {
    "enabled": false
  },
  "expression": "http.request.uri.path contains \"/disable-logging/\"",
  "description": ""
}'

Salta prodotti di sicurezza

Questo esempio utilizza l'operazione di regola Crea un set di regole di zona per aggiungere una regola che ignora i prodotti Zone Lockdown e User Agent Blocking per le richieste che corrispondono all'espressione della regola:

curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "action": "skip",
  "action_parameters": {
    "products": [
      "zoneLockdown",
      "uaBlock"
    ]
  },
  "expression": "http.request.uri.path contains \"/skip-products/\"",
  "description": ""
}'