Pular para conteúdo

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"
    }
}