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:
- Ottieni il tuo ID zona.
- Eseguire l'operazione Zona elenco per ottenere le serie di regole disponibili.
- Trova l'ID del set di regole gestito che desideri distribuire.
- 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.
- 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:
-
Nella console CIS, passare alla sezione Sicurezza.
-
Selezionare la scheda WAF.
-
Fare clic su Aggiungi eccezione per aprire il pannello laterale Aggiungi eccezione.
-
Inserire un nome per l'eccezione delle regole gestite.
-
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.
-
Scegliere se registrare le richieste che corrispondono all'espressione.
-
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.
-
-
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:
-
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 -
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:
-
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 -
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 perCIS 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:
- Impostare l'ambiente API con le variabili corrette.
- 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.
- 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:
- Impostare l'ambiente API con le variabili corrette.
- 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.
- 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:
- Impostare l'ambiente API con le variabili corrette.
- 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.
- 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_managedper 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.
- id è l'ID del set di regole da eseguire. Questo ID viene richiamato dall'operazione
- 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.