Como criar um WAF rule set
Web Application Firewall (WAF) permite que você crie conjuntos de regras (rule set) referentes a possíveis tipos de ameaças. Você pode definir esses conjuntos de regras no Rules Engine para o Edge Firewall executar seus comportamentos.
Este guia criará um conjunto de regras para bloquear ameaças da família SQL Injection para prevenir ataques que tentam uma consulta select
, por exemplo. Após criar um edge firewall e ativar o módulo WAF, siga os passos descritos a seguir.
- Acesse o Azion Console > WAF Rules.
- Clique no botão + WAF Rule.
- No campo Name, dê um nome único e fácil de lembrar para o seu conjunto de regras WAF. Neste caso,
Conjunto de regras SQL Injection
. - Na seção Threat Type Configuration, procure pela opção SQL Injection.
- Escolha a opção Sensitivity High para esta ameaça, para que o WAF não permita requisições consideradas como uma ameaça de SQL Injection.
- Certifique-se de que o switch Active esteja habilitado.
- Clique no botão Save.
Repita este processo com outros tipos de ameaças para os quais você deseja criar um conjunto de regras.
Agora, você precisa aplicar o conjunto de regras que criou no Rules Engine. Para fazer isso:
- Ainda no Azion Console, vá para Edge Firewall.
- Selecione o edge firewall no qual você deseja aplicar a nova regra.
- Selecione a aba Rules Engine.
- Clique no botão + Rule.
- Dê um nome para sua regra e, opcionalmente, uma descrição.
- Na seção Criteria, selecione a variável
Request Args
. - Como operador de comparação, selecione
matches
. - Como argumento, adicione
content-type=select
. - Na seção Behaviors, selecione Set WAF Rule Set.
- Como argumentos:
- No primeiro menu suspenso, selecione o conjunto de regras que deseja usar. Neste caso,
SQL Injection rule set
. - No segundo menu suspenso, selecione o modo que você deseja que o edge firewall opere: Learning ou Blocking. Neste caso, Blocking.
- No primeiro menu suspenso, selecione o conjunto de regras que deseja usar. Neste caso,
- Clique no botão Save.
- Acesse o Real-Time Manager (RTM) > WAF Rules.
- Clique no botão Add WAF.
- Na aba Main Settings, dê um nome único e fácil de lembrar para o seu conjunto de regras WAF. Neste caso,
Conjunto de regras SQL Injection
. - Na seção Threat Type Configuration, procure pela opção SQL Injection.
- Escolha a opção Sensitivity High para esta ameaça, para que o WAF não permita requisições consideradas como uma ameaça de SQL Injection.
- Certifique-se de que o switch Active esteja habilitado.
- Clique no botão Save.
Repita este processo com outros tipos de ameaças para os quais você deseja criar um conjunto de regras.
Agora, você precisa aplicar o conjunto de regras que criou no Rules Engine. Para fazer isso:
- Ainda no Azion Console, vá para Edge Firewall.
- Selecione o edge firewall no qual você deseja aplicar a nova regra.
- Selecione a aba Rules Engine.
- Clique no botão New Rule.
- Dê um nome para sua regra e, opcionalmente, uma descrição.
- Na seção Criteria, selecione a variável
Request Args
. - Como operador de comparação, selecione
matches
. - Como argumento, adicione
content-type=select
. - Na seção Behaviors, selecione Set WAF Rule Set.
- Como argumentos:
- No primeiro menu suspenso, selecione o conjunto de regras que deseja usar. Neste caso,
SQL Injection rule set
. - No segundo menu suspenso, selecione o modo que você deseja que o edge firewall opere: Learning ou Blocking. Neste caso, Blocking.
- No primeiro menu suspenso, selecione o conjunto de regras que deseja usar. Neste caso,
- Clique no botão Save.
- Execute a seguinte requisição
POST
para criar uma regra, substituindo[TOKEN VALUE]
pelo seu personal token:
curl --location 'https://api.azionapi.net/waf/rulesets' \
--header 'Accept: application/json; version=3' \
--header 'Authorization: Token [TOKEN VALUE]' \
--header 'Content-Type: application/json' \
--data '{ "name": "SQL Injection rule set", "mode": "blocking", "active": true, "sql_injection": true, "sql_injection_sensitivity": "high", "bypass_addresses": []
}'
- Você receberá uma resposta semelhante a esta:
{ "id": 6421, "name": "SQL Injection rule set", "mode": "counting", "active": true, "sql_injection": true, "sql_injection_sensitivity": "high", "remote_file_inclusion": true, "remote_file_inclusion_sensitivity": "medium", "directory_traversal": true, "directory_traversal_sensitivity": "medium", "cross_site_scripting": true, "cross_site_scripting_sensitivity": "medium", "evading_tricks": true, "evading_tricks_sensitivity": "medium", "file_upload": true, "file_upload_sensitivity": "medium", "unwanted_access": true, "unwanted_access_sensitivity": "medium", "identified_attack": true, "identified_attack_sensitivity": "medium", "bypass_addresses": []
}
- Copie o valor de
id
. - Execute a seguinte requisição
POST
para criar uma regra, substituindo[TOKEN VALUE]
pelo seu personal token, a variável<edge_firewall_id>>
com o ID do edge firewall e<id_conjunto_regras_waf>
com o ID que você copiou:
curl --location 'https://api.azionapi.net/edge_firewall/<edge_firewall_id>/rules_engine' \
--header 'Accept: application/json; version=3' \
--header 'Authorization: Token azion5c2ecd92839e59b0cca662ada47b7382706' \
--header 'Content-Type: application/json' \
--data '{ "name": "SQL Injection rule", "is_active": true, "behaviors": [ { "name": "set_waf_ruleset", "argument": "<waf_rule_set_id>" } ], "criteria": [ [ { "variable": "request_args", "operator": "matches", "conditional": "if", "argument": "content-type=select" } ] ]
}'
Chave | Descrição |
---|---|
name | Nome da regra |
comportamentos | Array que armazena objetos que definem comportamentos |
criterios | Array que armazena objetos que definem critérios |
Consulte a documentação da API da Azion para saber mais sobre critérios e objetos de comportamento.
- Você receberá a seguinte resposta:
{ "results": { "name": "SQL Injection rule", "is_active": true, "behaviors": [ { "name": "set_waf_ruleset", "argument": "6421" } ], "criteria": [ [ { "variable": "request_args", "operator": "matches", "conditional": "if", "argument": "content-type=select" } ] ], "last_modified": "2023-12-01T21:43:14.580949Z", "last_editor": "user@email.com", "id": 28735, "order": 4 }, "schema_version": 3
}
Aguarde alguns minutos para que as alterações se propaguem.
Confira a documentação da API da Azion e a especificação OpenAPI para saber mais sobre todos os recursos disponíveis via API.