Implementazione di set di regole gestite

È possibile distribuire i set di regole gestite a livello di zona o di istanza utilizzando la CLI, l'API o Terraform.

È possibile distribuire un insieme di regole gestite con un comportamento personalizzato (modifiche eseguite in aggiunta alla configurazione predefinita) sovrascrivendolo. Per ulteriori informazioni, vedere Overriding managed rulesets(Sovrascrittura dei set di regole gestiti ).

Flusso di lavoro di distribuzione

Utilizzare il flusso di lavoro riportato di seguito per distribuire una serie di regole gestita in una fase a livello di zona:

  1. Ottieni il tuo ID zona.
  2. Eseguire l'operazione Zona elenco per ottenere le serie di regole disponibili.
  3. Trova l'ID del set di regole gestito che desideri distribuire.
  4. Identificare la fase in cui si desidera distribuire la serie di regole gestita. Assicurati che il set di regole gestito appartenga alla stessa fase in cui desideri distribuirlo.
  5. Aggiungere una regola al set di regole del punto di ingresso della fase a livello di zona che esegue il set di regole gestito.

Distribuzione di set di regole gestite nella console

Per distribuire i set di regole gestite nella console CIS, procedere come segue:

  1. Nella console CIS, passare alla sezione Sicurezza.

  2. Selezionare la scheda WAF.

  3. Fare clic su Aggiungi eccezione per aprire il pannello laterale Aggiungi eccezione.

  4. Inserire un nome per l'eccezione delle regole gestite.

  5. Definire la condizione di corrispondenza costruendo un'espressione:

    • Scegliere il campo di richiesta, selezionare un operatore e fornire un valore.
    • Si può anche usare il costruttore di espressioni per scrivere manualmente le espressioni
    • Combinare più condizioni utilizzando gli operatori And e Or per creare una logica complessa.
  6. Scegliere se registrare le richieste che corrispondono all'espressione.

  7. Decidere come il set di regole deve comportarsi per le richieste corrispondenti:

    • Salta tutte le regole rimanenti, oppure

    • Ignora regole specifiche da una serie di regole gestita

      Se si sceglie di saltare regole specifiche, fare clic su Sfoglia regole, selezionare un set di regole e quindi selezionare le regole specifiche da saltare.

  8. Fare clic su " Deploy " per attivare la configurazione.

    Dopo la distribuzione, è possibile tornare in qualsiasi momento per modificare la configurazione del ruleset gestito.

Distribuzione di set di regole gestite dalla CLI

È possibile distribuire set di regole gestite dalla CLI.

Elencare i set di regole gestiti dalla CLI

Per elencare tutti i ruleset gestiti dalla zona dalla CLI, procedere come segue:

  1. Configurare l'ambiente CLI.

  2. Accedi al tuo account dalla CLI. Dopo aver inserito la password, il sistema richiede l'account e la regione che si desidera utilizzare:

    ibmcloud login --sso
    
  3. Esegui il seguente comando per creare una regola personalizzata:

    ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]
    

    Opzioni comando

    DNS_DOMAIN_ID
    L'ID del dominio.
    -i, --instance
    Il nome o l'ID dell'istanza.
    --output
    Specifica il formato di output; è supportato solo JSON.

Aggiornamento del set di regole implementato dalla CLI

Per aggiornare un ruleset distribuito dalla CLI, procedere come segue:

  1. Configurare l'ambiente CLI.

  2. Accedi al tuo account dalla CLI. Dopo aver inserito la password, il sistema richiede l'account e la regione che si desidera utilizzare:

    ibmcloud login --sso
    
  3. Esegui il seguente comando per creare una regola personalizzata:

    ibmcloud cis managed-waf deployment-add-ruleset DNS_DOMAIN_ID RULESET_ID [--match EXPRESSION] [--enabled true|false] [--override-action ACTION] [--override-status STATUS] [--paranoia-level LEVEL] [--override-rules RULE] [-i, --instance INSTANCE] [--output FORMAT]
    

    Opzioni comando

    DNS_DOMAIN_ID
    L'ID del dominio.
    --match
    Le condizioni che devono essere soddisfatte affinché la regola venga applicata. Vedere Uso di campi, funzioni ed espressioni per un elenco di valori da abbinare.
    --enabled
    Indica se la regola è attiva. Il valore predefinito è true.
    --overide-action
    L'azione del set di regole di eventuali sovrascritture. I valori validi sono managed_challenge, block, js_challenge, log, challenge.
    --paranoia-level
    Il livello di paranoia OWASP. I valori validi sono PL1, PL2, PL3, PL4. Questo è disponibile solo per CIS OWASP Core Ruleset.
    override-rules
    Le opzioni delle regole delle sovrascritture. Ad esempio --override-rules rule=RULE_ID,action=ACTION,enabled=STATUS.
    -i, --instance
    Il nome o l'ID dell'istanza.
    --output
    specifica il formato di output; è supportato solo JSON.

Esempio di comando

Questo esempio mostra come distribuire il ruleset efb7b8c949ac4650a09736fc376e9aee e come sovrascrivere la regola presente all'interno del ruleset. Si tratta anche di regole di scavalcamento con la categoria wordpress.

ibmcloud cis managed-waf deployment-add-ruleset $domain efb7b8c949ac4650a09736fc376e9aee --match "(http.cookie eq \"example.com/contact?page=1234\")" --action execute --enabled false --override-action block --override-status false --override-rules rule=5de7edfa648c4d6891dc3e7f84534ffa,action=log,enabled=true --override-rules action=managed_challenge,rule=e3a567afc347477d9702d9047e97d760

Implementazione di set di regole gestite con l'API

È possibile distribuire i set di regole gestite con l'API.

Ottenere il punto di ingresso della regola personalizzata per l'API

Tutte le operazioni dell'API delle regole personalizzate richiedono un RULESET_ID del set di regole del punto di ingresso per la fase delle regole personalizzate. Questo set di regole del punto di ingresso può già esistere o deve essere creato se non esiste.

Seguire questi passaggi per ottenere il set di regole del punto di ingresso delle regole personalizzate:

  1. Impostare l'ambiente API con le variabili corrette.
  2. Memorizzare i seguenti valori in variabili da utilizzare nel comando API:

CRN: Il nome completo della risorsa cloud (CRN) codificato da URL dell'istanza del servizio.

ZONE_ID: L'ID del dominio.

  1. Quando tutte le variabili sono inizializzate, si ottiene il set di regole del punto di ingresso:
curl -X GET "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json"

L'ID del ruleset sarà presente nella risposta della richiesta andata a buon fine. Se la chiamata precedente restituisce una risposta 404 Not Found, utilizzare la seguente API per creare il set di regole di entrypoint per la fase delle regole personalizzate:

curl -x POST https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "name": "Zone-level phase entry point",
  "kind": "zone",
  "description": "WAF managed rule entrypoint ruleset.",
  "phase": "http_request_firewall_managed"
}'

Elencare i set di regole gestiti con l'API

Seguire questi passaggi per elencare i set di regole gestiti con l'API:

  1. Impostare l'ambiente API con le variabili corrette.
  2. Memorizzare i seguenti valori in variabili da utilizzare nel comando API:

CRN: Il nome completo della risorsa cloud (CRN) codificato da URL dell'istanza del servizio.

ZONE_ID: L'ID del dominio.

RULESET_ID: L'ID del set di regole del punto di ingresso della regola personalizzata.

  1. Quando tutte le variabili sono inizializzate, elencare tutti i set di regole gestiti dalla zona:
curl -X GET \
  https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
  -H 'content-type: application/json' \
  -H 'accept: application/json' \
  -H 'x-auth-user-token: Bearer xxxxxx'

Aggiornamento dei set di regole dei punti di ingresso con l'API

Seguire la seguente procedura per aggiornare un set di regole del punto di ingresso con l'API:

  1. Impostare l'ambiente API con le variabili corrette.
  2. Memorizzare i seguenti valori in variabili da utilizzare nel comando API:

CRN: Il nome completo della risorsa cloud (CRN) codificato da URL dell'istanza del servizio.

ZONE_ID: L'ID del dominio.

RULESET_ID: L'ID del set di regole del punto di ingresso della regola personalizzata.

  1. Quando tutte le variabili sono inizializzate, aggiornare il set di regole del punto di ingresso:
curl -X PUT \
  https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/$RULESET_PHASE/entrypoint \
  -H 'content-type: application/json' \
  -H 'accept: application/json' \
  -H 'x-auth-user-token: Bearer xxxxxx' \
  -d '{"rules":[{"action":"execute","action_parameters":{"id":"4814384a9e5d4991b9815dcfc25d2f1f"},"expression":"true","description":"Execute WAF OWASP ruleset"}]}'

Dove:

  • $RULESET_PHASE è la fase del set di regole che verrà implementata. Utilizza http_request_firewall_managed per distribuire i set di regole WAF gestiti.
    • d è l'oggetto degli attributi necessari per creare il set di regole.
    • regole è l'insieme di regole da implementare con il set di regole. Ad esempio:
      • action è l'azione che la regola deve intraprendere. Vedi Azioni delle regole per una descrizione delle azioni che possono essere utilizzate.
      • action_parameters è l'oggetto per definire su cosa deve operare l'azione.
        • id è l'ID del set di regole da eseguire. Questo ID viene richiamato dall'operazione list zone rulesets.
    • espressione è la condizione in base alla quale si applica la regola. Utilizzando un true, questa regola viene sempre eseguita.
    • description definisce il riepilogo di ciò che la regola sta realizzando.

Distribuzione di set di regole gestite con Terraform

Elencare i set di regole gestiti con Terraform

L'esempio seguente elenca i set di regole gestiti utilizzando Terraform:

data "ibm_cis_rulesets" "tests" {
    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
    }

Per ulteriori informazioni sugli argomenti e sugli attributi, vedere ibm_cis_rulesets nel registro di Terraform.

Elenco di tutte le regole di un ruleset gestito

L'esempio seguente elenca tutte le regole di un ruleset gestito utilizzando Terraform:

resource "ibm_cis_ruleset" "config" {
    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
    ruleset_id = "943c5da120114ea5831dc1edf8b6f769"
}

Per ulteriori informazioni sugli argomenti e sugli attributi, vedere ibm_cis_ruleset nel registro di Terraform.

Regola imperativa

L'esempio seguente sovrascrive una regola utilizzando Terraform:

resource "ibm_cis_ruleset_entrypoint_version" "test" {
    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
    phase = "http_request_firewall_managed"
    rulesets {
      description = "Entrypoint ruleset for managed ruleset"
      rules {
        action =  "execute"
        description = "Deploy CIS managed ruleset"
        enabled = true
        expression = "true"
        action_parameters  {
          id = "efb7b8c949ac4650a09736fc376e9aee"
          overrides {
            action = "block"
            enabled = true
            override_rules {
              rule_id = "var.overriden_rule.id"
              enabled = true
              action = "block"
            }
            categories {
              category = "wordpress"
              enabled = true
              action = "block"
            }
          }
        }
      }
    }
  }

Per ulteriori informazioni sugli argomenti e sugli attributi, vedere ibm_cis_ruleset_entrypoint_version nel registro di Terraform.