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 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 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 Firewall.
- Selecione o 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 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
POSTpara criar uma regra, substituindo[TOKEN VALUE]pelo seu personal token:
curl --request POST --url https://api.azion.com/v4/edge_firewall/wafs --header 'Accept: application/json' --header 'Authorization: Token [TOKEN]' --header 'Content-Type: application/json' --data '{ "active": true, "name": "My WAF", "product_version": "1.0", "engine_settings": { "engine_version": "2021-Q3", "type": "score", "attributes": { "rulesets": [1], "thresholds": [ { "threat": "cross_site_scripting", "sensitivity": "medium" }, { "threat": "directory_traversal", "sensitivity": "medium" }, { "threat": "evading_tricks", "sensitivity": "medium" }, { "threat": "file_upload", "sensitivity": "medium" }, { "threat": "identified_attack", "sensitivity": "medium" }, { "threat": "remote_file_inclusion","sensitivity": "medium" }, { "threat": "sql_injection", "sensitivity": "medium" }, { "threat": "unwanted_access", "sensitivity": "medium" } ] } }}'- Copie o valor de
id. - Execute a seguinte requisição
POSTpara criar uma regra, substituindo[TOKEN VALUE]pelo seu personal token, a variável<edge_firewall_id>>com o ID do firewall e<id_conjunto_regras_waf>com o ID que você copiou:
curl --request POST --url https://api.azion.com/v4/edge_firewall/firewalls/<edge_firewall_id>/request_rules --header 'Accept: application/json' --header 'Authorization: Token [TOKEN]' --header 'Content-Type: application/json' --data '{ "name": "SQL Injection rule", "active": true, "criteria": [ [ { "conditional": "if", "variable": "${request_args}", "operator": "matches", "argument": "content-type=select" } ] ], "behaviors": [ { "type": "set_waf", "attributes": { "waf_id": <waf_id> } } ]}'| 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.
Aguarde alguns minutos para que as alterações se propaguem.
Confira a documentação da API da Azion para saber mais sobre todos os recursos disponíveis via API.