Sovrascrivere i set di regole gestiti
Per personalizzare il comportamento di un set di regole gestito, sovrascriverlo al momento della distribuzione. Quando si sovrascrive una serie di regole, si specificano le modifiche da eseguire in aggiunta alla configurazione predefinita.
È possibile ignorare un insieme di regole gestite ai seguenti livelli:
- Le sovrascritture della serie di regole sono valide per tutte le regole nella serie di regole eseguita.
- Le sovrascritture di tag si applicano a tutte le regole con un tag specifico. Ad esempio, utilizza una sovrascrittura di tag per personalizzare la serie di regole gestita CIS in modo che tutte le regole con la tag wordpress siano impostate su Block. Se più tag hanno sovrascritture e se una regola ha più di una di queste tag, l'ordine di sovrascritture determina il comportamento. Per le regole contrassegnate con più tag sovrascritti, si applicano le sovrascritture dell'ultima tag.
- Le sovrascritture di regola si applicano alle regole specifiche in una serie di regole gestita, a cui fa riferimento il relativo ID regola.
Le sovrascritture specifiche hanno la precedenza su quelle più generali e le sovrascritture di regole hanno la precedenza sulle sovrascritture di tag, che hanno la precedenza sulle sovrascritture di serie di regole.
Le sovrascritture di serie di regole e le sovrascritture di tag si applicano alle regole esistenti e future nella serie di regole gestita. Se si desidera sovrascrivere solo le regole esistenti, è necessario utilizzare le sovrascritture di regole.
Sovrascrittura del flusso di lavoro (API)
Per applicare una sovrascrittura per una serie di regole gestita, effettuare le seguenti operazioni.
-
Elenca i set di regole disponibili utilizzando l'operazione list rulesets.
-
Elenca le regole per quel set di regole utilizzando l'operazione get ruleset.
-
Richiamare l'operazione di aggiornamento della serie di regole sul punto di ingresso fase.
-
Specificare le sovrascritture nel
action_parametersdella regola che esegue la serie di regole gestita."action_parameters": { "id": "<RULESET_ID>", "overrides": { // ruleset overrides "property-to-modify": "value", "property-to-modify": "value", // tag overrides "categories": [ { "category": "<TAG_NAME>", "property-to-modify": "value", "property-to-modify": "value" } ], // rule overrides "rules": [ { "id": "<RULE_ID>", "property-to-modify": "value", "property-to-modify": "value" } ] } }
È possibile sovrascrivere le seguenti proprietà della regola.
- "azione"
- "abilitato"
Alcune serie di regole gestite possono avere requisiti di sovrascrittura aggiuntivi oppure potrebbero sovrascrivere altre proprietà della regola.
Non è efficace abilitare tutte le regole in una serie di regole gestita a livello di istanza utilizzando una sovrascrittura. Questa modifica può influire su tutte le zone nella tua istanza. Alcune regole sono disabilitate per impostazione predefinita perché alla fine influenzano il traffico legittimo. Non abilitare queste regole tra le zone senza precedenti considerazioni.
Sovrascrittura delle regole gestite nella console
Per sovrascrivere un ruleset gestito nella console, procedere come segue:
-
Nella console CIS, passare alla sezione Sicurezza.
-
Selezionare la scheda WAF.
-
Fare clic sul nome del ruleset che si desidera sovrascrivere.
-
Dal pannello laterale Configurazione dell'installazione client, fare clic su Sfoglia regole.
-
Nel pannello laterale Override CIS Managed Ruleset rules è possibile:
- Selezionare un'azione per ogni regola che si desidera sovrascrivere.
- Selezionare la levetta Stato per attivare o disattivare una regola.
-
Dopo aver riconfigurato le regole del ruleset, fare clic su Continua.
-
Verificare l'elenco delle regole da sovrascrivere, quindi fare clic su Salva.
Fare clic su Ripristina impostazioni predefinite per ripristinare le impostazioni originali.
Elencare i set di regole gestiti dalla CLI
Per elencare tutti i set di regole di zona dalla CLI, eseguire il seguente comando:
ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]
Opzioni comando
DNS_DOMAIN_ID- L'ID del dominio.
-i, --instance value- Il nome o l'ID dell'istanza.
--output value- Specifica il formato di uscita; è supportato solo JSON.
Elencare le regole in un insieme di regole di zona dal CLI
Per elencare le regole in un set di regole di zona dal CLI, eseguire il seguente comando:
ibmcloud cis managed-waf ruleset DNS_DOMAIN_ID RULESET_ID [-i, --instance INSTANCE] [--output FORMAT]
Opzioni comando
DNS_DOMAIN_ID- L'ID del dominio.
RULESET_ID- L'ID del ruleset per le regole da elencare.
-i, --instance value- Il nome o l'ID dell'istanza.
--output value- Specifica il formato di uscita; è supportato solo JSON.
Sovrascrivere i set di regole gestiti dalla CLI
Per sovrascrivere una serie di regole WAF gestita dalla CLI, esegui questo comando:
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 value- Le condizioni che devono essere soddisfatte per l'esecuzione della regola. Vedere Uso di campi, funzioni ed espressioni per un elenco di valori da abbinare.
--enabled value- Indica se la regola è attiva. Il valore predefinito è "true".
--override-action value- L'azione del set di regole di eventuali sostituzioni. I valori validi sono "managed_challenge", "block", "js_challenge", "log", "challenge".
--paranoia-level value- Il livello di paranoia OWASP. I valori validi sono " PL1 ", " PL2 ", " PL3 ", " PL4 " ed è disponibile solo per
CIS OWASP Core Ruleset. --override-rules value- Le opzioni delle regole delle sovrascritture. Ad esempio,
--override-rules rule=RULE_ID,action=ACTION,enabled=STATUS. -i, --instance value- Il nome o l'ID dell'istanza.
--output value- Specifica il formato di uscita; è supportato solo JSON.
Elencare i set di regole delle zone dall'API
Per elencare tutti i set di regole di zona dall'API, eseguire il seguente comando:
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'
Elencare tutte le regole per un insieme di regole dall'API
Per elencare tutte le regole per un set di regole specifico, eseguire il seguente comando:
curl -X GET \
https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'x-auth-user-token: Bearer xxxxxx'
Dove:
$RULESET_IDè l'ID della serie di regole gestita per cui sono riportate le regole.
Sovrascrivere un set di regole di un punto di ingresso dall'API
Per aggiornare il set di regole del punto di ingresso dall'API con una sostituzione, eseguire il seguente comando:
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 '{"description":"Deploy managed ruleset, enabling a specific rule with log action","rules":[{"action":"execute","expression":"true","action_parameters":{"id":"<MANAGED_RULESET_ID>","overrides":{"rules":[{"id":"<RULE_ID>","enabled":true,"action":"log"}]}}}]}'
Dove:
$RULESET_PHASEè la fase del set di regole che viene implementata. Utilizzarehttp_request_firewall_managedper ignorare i set di regole WAF gestiti.-dè l'oggetto degli attributi necessari per creare il set di regole.descriptiondefinisce il proprio riassunto di ciò che un insieme di regole sta realizzando.rulesè l'insieme di regole da implementare con il set di regole.actionè l'azione da intraprendere per la regola. Vedere le azioni del set di regole WAF per una descrizione delle azioni disponibili.action_parametersè l'oggetto per la definizione del funzionamento dell'azione.idè l'ID della serie di regole da eseguire. Questo ID viene richiamato dall'operazione di elenco delle serie di regole della zona.overridesè l'oggetto delle sostituzioni da impostare sul set di regole selezionato.rulesè l'elenco di regole sovrascritte con le proprietà selezionate.idè l'ID della regola da sovrascrivere. Questo ID viene richiamato dall'operazione delle regole della serie di regole della zona di elenco.enabledsovrascrive anche quando la regola è abilitata.actionspecifica l'azione sovrascritta eseguita dalla regola.
expressionè la condizione in cui viene eseguita la regola. L'utilizzo di "true" significa che questa regola viene sempre eseguita.descriptiondefinisce il proprio riepilogo di ciò che la regola sta realizzando.
Elencare i set di regole gestiti con Terraform
L'esempio seguente elenca tutti 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 gli attributi, vedere ibm_cis_rulesets nel registro
di Terraform.
Elencare tutte le regole di un ruleset gestito con Terraform
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 gli attributi, vedere ibm_cis_ruleset nel registro
di Terraform.
Sovrascrivere una regola con Terraform
Questo esempio mostra come distribuire il ruleset gestito CIS con varie sovrascritture. In primo luogo, abilita e blocca il traffico per tutte le regole. Quindi, abilita e blocca il traffico per una regola specifica. Infine, abilita e blocca
il traffico per tutte le regole della categoria wordpress. In sostanza, questo esempio illustra i diversi metodi per sovrascrivere le regole distribuite (globali, specifiche, per categoria).
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"
}
}
}
}
}
}
L'esempio seguente mostra come creare un punto di ingresso WAF e sovrascrivere una regola con Terraform:
resource "ibm_cis_ruleset_entrypoint_version" "waf_config" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
phase = "http_request_firewall_managed"
rulesets {
description = "Entry Point rulesets"
}
lifecycle {
ignore_changes = [
rulesets
]
}
}
data "ibm_cis_ruleset_entrypoint_versions" "test"{
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
phase = "http_request_firewall_managed"
depends_on = [
ibm_cis_ruleset_entrypoint_version.waf_config
]
}
resource ibm_cis_ruleset_rule "rule1" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id
rule {
action = "execute"
description = "OWASP Core RuleSet"
enabled = true
expression = "true"
action_parameters {
id = "4814384a9e5d4991b9815dcfc25d2f1f"
overrides {
categories {
category = "paranoia-level-2"
enabled = false
}
categories {
category = "paranoia-level-3"
enabled = false
}
categories {
category = "paranoia-level-4"
enabled = false
}
override_rules {
rule_id = "6179ae15870a4bb7b2d480d4843b323c"
action = "block"
score_threshold = 60
enabled = true
}
override_rules {
rule_id = "8ac8bc2a661e475d940980f9317f28e1"
enabled = true
}
}
}
}
}
resource ibm_cis_ruleset_rule "rule2" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id
rule {
action = "execute"
description = "CIS exposed credential ruleset"
enabled = true
expression = "true"
action_parameters {
id = "c2e184081120413c86c3ab7e14069605"
overrides {
override_rules {
rule_id = "53f38cd8974a4cd3bc9a8a64fc731fb0"
enabled = true
action = "log"
}
}
}
}
}
resource ibm_cis_ruleset_rule "rule3" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id
rule {
action = "execute"
description = "CIS Managed ruleset"
enabled = true
expression = "true"
action_parameters {
id = "efb7b8c949ac4650a09736fc376e9aee"
overrides {
override_rules {
rule_id = "5de7edfa648c4d6891dc3e7f84534ffa"
enabled = true
action = "block"
}
}
}
}
}
Per ulteriori informazioni sugli argomenti e gli attributi, vedere ibm_cis_ruleset_entrypoint_version nel registro di Terraform.