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.


  1. Acesse o Azion Console > WAF Rules.
  2. Clique no botão Add WAF.
  3. 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.
  4. Na seção Threat Type Configuration, procure pela opção SQL Injection.
  5. 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.
  6. Certifique-se de que o switch Active esteja habilitado.
  7. 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:

  1. Ainda no Azion Console, vá para Edge Firewall.
  2. Selecione a aba Rules Engine.
  3. Clique no botão New Rule*.
  4. Dê um nome para sua regra e, opcionalmente, uma descrição.
  5. Na seção Criteria, selecione a variável Request Args.
  6. Como operador de comparação, selecione matches.
  7. Como argumento, adicione content-type=select.
  8. Na seção Behaviors, selecione Set WAF Rule Set.
  9. 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.
  10. Clique no botão Save.

  1. Execute a seguinte requisição POST para criar uma regra, substituindo [TOKEN VALUE] pelo seu personal token:
Terminal window
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": []
}'
  1. 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": []
}
  1. Copie o valor de id.
  2. 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:
Terminal window
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"
}
]
]
}'
ChaveDescrição
nameNome da regra
comportamentosArray que armazena objetos que definem comportamentos
criteriosArray 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.

  1. 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.




Contributors