WAF
Suporte a namespace
Alguns endpoints permitem configuração com granularidade de domínio ou de namespace, são os endpoints com {dominio_ou_namespace_id}
, é possível adquirir o id do namespace na api de namespaces.
Listar Grupos de Regras
Lista as configurações de grupos de regras de WAF que estão aplicadas no domínio ou namespace.
GET /v1/waf/groups/{dominio_ou_namespace_id}
$ curl -i https://api.gocache.com.br/v1/waf/groups/seudominio.com.br \
-X GET \
-H 'GoCache-Token:seu_token'
HTTP/1.1 200 OK
{
"status_code": 200,
"response": {
"v1": [
{
"http violation": {
"status": "enable",
"name": "v1:20000_http_violation"
}
},
{
"http anomaly": {
"status": "enable",
"name": "v1:21000_http_anomaly"
}
},
{
"user agent": {
"status": "enable",
"name": "v1:35000_user_agent"
}
},
{
"generic attack": {
"status": "enable",
"name": "v1:40000_generic_attack"
}
},
{
"sqli": {
"status": "enable",
"name": "v1:41000_sqli"
}
},
{
"xss": {
"status": "enable",
"name": "v1:42000_xss"
}
},
{
"custom": {
"status": "enable",
"name": "v1:90000_custom"
}
}
]
},
"success": true
}
Alterar Grupos de Regras
Altera como o grupo de regra de WAF irá atuar no domínio ou namespace.
PUT /v1/waf/groups/{dominio_ou_namespace_id}
$ curl -i https://api.gocache.com.br/v1/waf/groups/seudominio.com.br \
-X PUT \
-H 'Content-Type: application/json' \
-H 'GoCache-Token: seu_token' \
--data-binary \
'{
"disable": [
"v1:90000_custom",
"v1:40000_generic_attack"
],
"enable": [
"v1:42000_xss"
]
}'
Parâmetros
Campo | Opcional | Tipo | Descrição |
---|---|---|---|
disable | ✓ | Lista | Lista de grupo de regras que serão desabilitadas no WAF Valores permitidos: "v1:20000_http_violation", "v1:21000_http_anomaly", "v1:35000_user_agent", "v1:40000_generic_attack", "v1:41000_sqli", "v1:42000_xss", "v1:90000_custom" |
enable | ✓ | Lista | Lista de grupo de regras que serão habilitadas no WAF Valores permitidos: "v1:20000_http_violation", "v1:21000_http_anomaly", "v1:35000_user_agent", "v1:40000_generic_attack", "v1:41000_sqli", "v1:42000_xss", "v1:90000_custom" |
HTTP/1.1 200 OK
{
"status_code": 200,
"response": {
"v1": [
{
"http violation": {
"status": "enable",
"name": "v1:20000_http_violation"
}
},
{
"http anomaly": {
"status": "enable",
"name": "v1:21000_http_anomaly"
}
},
{
"user agent": {
"status": "enable",
"name": "v1:35000_user_agent"
}
},
{
"generic attack": {
"status": "disable",
"name": "v1:40000_generic_attack"
}
},
{
"sqli": {
"status": "enable",
"name": "v1:41000_sqli"
}
},
{
"xss": {
"status": "enable",
"name": "v1:42000_xss"
}
},
{
"custom": {
"status": "disable",
"name": "v1:90000_custom"
}
}
]
},
"success": true
}
Alterar Exceção
Altera uma exceção de WAF existente de um domínio ou namespace.
PUT /v1/rules/waf/{dominio_ou_namespace_id}/{id}
$ curl -i https://api.gocache.com.br/v1/rules/waf/seudominio.com.br/aabbccddeeffgghh \
-X PUT \
-H 'GoCache-Token:seu_token' \
-d 'match[request]=https://www.gocache.com.br/static/js/*' \
-d 'match[request_method]=GET' \
-d 'match[request_method]=POST' \
-d 'match[remote_address]=255.255.255.0/24' \
-d 'match[cookie]=mycookie1,mycookie2,mycookie3' \
-d 'match[cookie_content]=mycookie1=123*' \
-d 'match[header]=Accept:*' \
-d 'match[http_referer]=www.google.com.br' \
-d 'match[http_user_agent]=*Mozilla*' \
-d 'match[origin_country]=US|UK' \
-d 'match[origin_continent]=SA' \
-d 'match[origin_continent]=EU' \
-d 'match[http_version]=HTTP/1.0' \
-d 'match[http_version]=HTTP/1.1' \
-d 'match[device_type]=mobile' \
-d 'match[device_type]=bot' \
-d 'action[waf_rule_action]=SIMULATE:gocache-v1/41*'
Parâmetros
Campo | Opcional | Tipo | Descrição |
---|---|---|---|
metadata | Object | ||
status | ✓ | Boolean | Indica se a exceção está ativa ou inativa Valor padrão: true Valores permitidos: true, false |
notes | ✓ | String | Descrição da exceção |
match | Object | Critério da exceção | |
request | ✓ | String | A URL completa da requisição, composta do protocolo HTTP, de um host e da URI. Ex: https://www.gocache.com.br/static/js/* |
http_version | ✓ | Array | Versão do HTTP utilizada Valores permitidos: "HTTP/1.0", "HTTP/1.1", "HTTP/2.0" |
device_type | ✓ | Array | Tipo do dispositivo que está realizando a requisição Valores permitidos: "desktop", "mobile", "bot", "na" |
http_user_agent | ✓ | String | User agent. Suporta wildcard (*). Ex: *Mozilla* |
cookie | ✓ | String | Se possui um cookie, de uma lista de um ou mais cookies, presente. Pode ser mais de um, separado por vírgula. Suporta wildcard (*). Ex: wp_login,wp_test |
cookie_content | ✓ | String | Se um cookie possui um valor específico. O nome e o valor são separados igual (=). Suporta wildcard (*) no valor do cookie. Ex: wp_test=yes |
request_method | ✓ | Array | Método da requisição Valores permitidos: GET, POST, PUT, DELETE |
http_referer | ✓ | String | Referer da requisição |
remote_address | ✓ | String | IP ou range de IP da origem da requisição. Para ranges apenas as máscaras /32, /24 e /16 estão disponíveis |
header | ✓ | String | Se a requisiço possui um cabeçalho específico. O nome e o valor são separados por dois-pontos (:). Suporta wildcard (*) no valor do cabeçalho. Ex Accept:* |
origin_country | ✓ | String | País de origem Valores permitidos: "BR", "US", "CN", "RU", "..." |
origin_continent | ✓ | Array | Continente de origem Valores permitidos: "SA", "NA", "OC", "EU", "AF", "AS" |
action | Object | Ação | |
waf_rule_action | String | Customiza o comportamento de uma ou mais regras de WAF, redefinindo a ação individual de cada uma delas ao dar match com uma requisição. Para configurar, você deve enviar pelo menos um par, formado pela ação desejada, seguida de dois pontos e os seletores de regras separados por vírgulas. As ações possíveis são DISABLE, SIMULATE. Um seletor identifica uma regra, seu grupo de regras, ou todo o ruleset. O seletor de uma regra começa com o nome do ruleset, seguido de uma barra, e o id da regra (ex.: gocache-v1/41010). Para selecionar um grupo de regras, no lugar do id da regra, deve se inserir os digitos que identificam o grupo, seguidos de asterisco (ex.: gocache-v1/41*). Já para selecionar todo o ruleset, insira asterisco no lugar do id de regra (ex.: gocache-v1/*). Exemplos: Apenas uma regra: SIMULATE:gocache-v1/90015 Para um grupo de regras: DISABLE:gocache-v1/90* Para um ruleset: SIMULATE:gocache-v1/* Mais de uma regra: SIMULATE:gocache-v1/90015,gocache-v1/41*; Mais de um grupo: DISABLE:gocache-v1/90015;SIMULATE:gocache-v1/41*; |
HTTP/1.1 200 OK
{
"response": {
"msg": "Success"
}
}
Criar Exceção
Cria uma exceção de WAF de um domínio ou namespace.
POST /v1/rules/waf/{dominio_ou_namespace_id}
$ curl -i https://api.gocache.com.br/v1/rules/waf/seudominio.com.br \
-X POST \
-H 'GoCache-Token:seu_token' \
-d 'match[request]=https://www.gocache.com.br/static/js/*' \
-d 'match[request_method]=GET' \
-d 'match[request_method]=POST' \
-d 'match[remote_address]=255.255.255.0/24' \
-d 'match[cookie]=mycookie1,mycookie2,mycookie3' \
-d 'match[cookie_content]=mycookie1=123*' \
-d 'match[header]=Accept:*' \
-d 'match[http_referer]=www.google.com.br' \
-d 'match[http_user_agent]=*Mozilla*' \
-d 'match[origin_country]=US|UK' \
-d 'match[origin_continent]=SA' \
-d 'match[origin_continent]=EU' \
-d 'match[http_version]=HTTP/1.0' \
-d 'match[http_version]=HTTP/1.1' \
-d 'match[device_type]=mobile' \
-d 'match[device_type]=bot' \
-d 'action[waf_rule_action]=DISABLE:gocache-v1/41*'
Parâmetros
Campo | Opcional | Tipo | Descrição |
---|---|---|---|
metadata | Object | ||
status | ✓ | Boolean | Indica se a exceção está ativa ou inativa Valor padrão: true Valores permitidos: true, false |
notes | ✓ | String | Descrição da exceção |
match | Object | Critério da exceção | |
request | ✓ | String | A URL completa da requisição, composta do protocolo HTTP, de um host e da URI. Ex: https://www.gocache.com.br/static/js/* |
http_version | ✓ | Array | Versão do HTTP utilizada Valores permitidos: "HTTP/1.0", "HTTP/1.1", "HTTP/2.0" |
device_type | ✓ | Array | Tipo do dispositivo que está realizando a requisição Valores permitidos: "desktop", "mobile", "bot", "na" |
http_user_agent | ✓ | String | User agent. Suporta wildcard (*). Ex: *Mozilla* |
cookie | ✓ | String | Se possui um cookie, de uma lista de um ou mais cookies, presente. Pode ser mais de um, separado por vírgula. Suporta wildcard (*). Ex: wp_login,wp_test |
cookie_content | ✓ | String | Se um cookie possui um valor específico. O nome e o valor são separados igual (=). Suporta wildcard (*) no valor do cookie. Ex: wp_test=yes |
request_method | ✓ | Array | Método da requisição Valores permitidos: GET, POST, PUT, DELETE |
http_referer | ✓ | String | Referer da requisição |
remote_address | ✓ | String | IP ou range de IP da origem da requisição. Para ranges apenas as máscaras /32, /24 e /16 estão disponíveis |
header | ✓ | String | Se a requisiço possui um cabeçalho específico. O nome e o valor são separados por dois-pontos (:). Suporta wildcard (*) no valor do cabeçalho. Ex Accept:* |
origin_country | ✓ | String | País de origem Valores permitidos: "BR", "US", "CN", "RU", "..." |
origin_continent | ✓ | Array | Continente de origem Valores permitidos: "SA", "NA", "OC", "EU", "AF", "AS" |
action | Object | Ação | |
waf_rule_action | String | Customiza o comportamento de uma ou mais regras de WAF, redefinindo a ação individual de cada uma delas ao dar match com uma requisição. Para configurar, você deve enviar pelo menos um par, formado pela ação desejada, seguida de dois pontos e os seletores de regras separados por vírgulas. As ações possíveis são DISABLE, SIMULATE. Um seletor identifica uma regra, seu grupo de regras, ou todo o ruleset. O seletor de uma regra começa com o nome do ruleset, seguido de uma barra, e o id da regra (ex.: gocache-v1/41010). Para selecionar um grupo de regras, no lugar do id da regra, deve se inserir os digitos que identificam o grupo, seguidos de asterisco (ex.: gocache-v1/41*). Já para selecionar todo o ruleset, insira asterisco no lugar do id de regra (ex.: gocache-v1/*). Exemplos: Apenas uma regra: SIMULATE:gocache-v1/90015 Para um grupo de regras: DISABLE:gocache-v1/90* Para um ruleset: SIMULATE:gocache-v1/* Mais de uma regra: SIMULATE:gocache-v1/90015,gocache-v1/41*; Mais de um grupo: DISABLE:gocache-v1/90015;SIMULATE:gocache-v1/41*; |
HTTP/1.1 200 OK
{
"response": {
"id": "itlzfvzxiagdfsia"
}
}
Listar Exceções
Lista as exceções de WAF de um domínio ou namespace.
GET /v1/rules/waf/{dominio_ou_namespace_id}
$ curl -i https://api.gocache.com.br/v1/rules/waf/seudominio.com.br \
-X GET \
-H 'GoCache-Token:seu_token'
HTTP/1.1 200 OK
{
"response": {
"rules": [
{
"action": {
"exception_waf_rule_action": "DISABLE:gocache-v1/40012,gocache-v1/40014,gocache-v1/20*;"
},
"match": {
"request_method": [
"GET",
"POST"
],
"cookie_content": "mycookie1=123*",
"http_referer": "www.google.com.br",
"remote_address": "255.255.255.0/24",
"http_version": [
"HTTP/1.0",
"HTTP/1.1"
],
"cookie": "mycookie1,mycookie2,mycookie3",
"origin_continent": [
"SA",
"EU"
],
"device_type": [
"mobile",
"bot"
],
"header": "Accept:*",
"http_user_agent": "*Mozilla*",
"origin_country": "US|UK"
},
"metadata": {
"created_on": "1681321138",
"status": "true"
},
"id": "itlzfvzxiagdfsia"
}
]
}
}
Remover Exceção
Remove uma exceção de WAF de um domínio ou namespace.
$ curl -i https://api.gocache.com.br/v1/rules/waf/seudominio.com.br/aabbccddeeffgghh \
-X DELETE \
-H 'GoCache-Token:seu_token'
HTTP/1.1 200 OK
{
"response": {
"msg": "Success"
}
}