# Proteger aplicações web contra ataques do OWASP Top 10 e zero-day

Uma equipe de segurança protege uma aplicação web voltada ao cliente que roda na sua própria origem, muitas vezes atrás de um WAF independente, de appliances ou de fornecedores separados de proteção contra bots e DDoS. Cada uma dessas ferramentas mantém a sua própria política, e a origem ainda responde a qualquer um que descubra o seu endereço. Esta página configura um firewall na frente da aplicação, que recusa redes listadas, pontua cada requisição com WAF e Bot Manager e faz a origem aceitar conexões só da Azion. O resultado é medido pelos ataques bloqueados antes da origem, pela taxa de falsos positivos no tráfego legítimo e pelo tempo para alterar uma política.

Este caso de uso não cobre o abuso específico de APIs, que [Proteger APIs públicas contra abuso](/pt-br/documentacao/casos-de-uso/proteger-aplicacoes-e-redes/proteger-apis-publicas-contra-abuso/) cobre, nem o account takeover, que [Bloquear account takeover em fluxos de login e checkout](/pt-br/documentacao/casos-de-uso/proteger-aplicacoes-e-redes/bloquear-account-takeover-em-fluxos-de-login-e-checkout/) cobre.

## Pré-requisitos

- Uma application que serve a aplicação web por meio de um connector e de um workload. Para criá-los, consulte [Primeiros passos com Applications](/pt-br/documentacao/plataforma/applications/primeiros-passos/).
- Um firewall vinculado ao deployment desse workload. Para vincular um, consulte [Vincule um firewall a um workload](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/proteja-seu-dominio/).
- WAF e Functions ativados em **Main Settings** › **Modules** do firewall. Um firewall novo vem com WAF desativado. Para ativá-lo, consulte [Defina as configurações principais de um firewall](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/firewall-definir-main-settings/).
- Bot Manager Lite instalado pelo Azion Marketplace, ou Bot Manager habilitado na conta. Para instalar o Bot Manager Lite, consulte [Instale o Bot Manager Lite](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/integracoes/bot-manager-lite/).
- Acesso ao firewall da sua origem, onde fica a allowlist dos endereços da Azion.
- Um personal token, para as abas de API. Para criar um, consulte [Gerencie personal tokens](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/).
- Os valores da sua aplicação. Esta página usa `www.example.com` como domínio, `198.51.100.7` como um endereço que a sua equipe já bloqueia e `webapp` como prefixo de cada objeto que cria. Substitua cada valor pelo seu em todos os passos.

---

## Produtos necessários

| A aplicação precisa de                                                      | O que significa                                                                                          | Produto          | Documentado em                                                                                                                                                            |
| --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Fontes em que a equipe já não confia recusadas antes de qualquer inspeção   | Uma network list que uma regra de negação lê pelo critério *Network*                                     | Network Shield   | [Network Lists](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/)                                                                                    |
| Requisições com padrões de ataque do OWASP Top 10 recusadas antes da origem | Um WAF rule set que o comportamento *Set WAF* de uma regra aplica a toda requisição                      | WAF              | [Primeiros passos com WAF](/pt-br/documentacao/plataforma/firewall/waf/primeiros-passos/)                                                                                 |
| Clientes automatizados distinguidos de pessoas                              | Uma instância de função do Bot Manager que uma regra *Run Function* executa em toda requisição de página | Bot Manager      | [Execute Bot Manager em caminhos selecionados](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/executar-bot-manager-em-caminhos-selecionados/)              |
| Uma origem que aceita conexões só da Azion                                  | Origin IP ACL no connector, e os prefixos de `Azion Origin Shield` permitidos no firewall da origem      | Origin Shield    | [Restrinja uma origem à Azion com Origin IP ACL](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/restringir-uma-origem-a-azion-com-origin-ip-acl/)          |
| Eventos de segurança no SIEM da equipe                                      | Um stream da fonte de dados *WAF Events* para o endpoint do SIEM                                         | Data Stream      | [Envie eventos do WAF para um SIEM](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/integrar-siems/)                                                     |
| Cada bloqueio explicado, requisição por requisição                          | Os campos de WAF do registro da requisição, encontrado pelo seu `x-azion-request-id`                     | Real-Time Events | [Encontre o score de uma requisição bloqueada](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/como-encontrar-score-de-requisicoes-bloqueadas-pelo-waf/) |

DDoS Protection mitiga ataques DoS e DDoS em todo workload, antes de qualquer regra de firewall rodar, sem nada para criar ou configurar. Para os tipos de ataque que cobre, consulte [Mitigação de ataques](/pt-br/documentacao/plataforma/workloads/ddos-protection/ddos-mitigation/).

---

## Arquitetura de referência

Esta página constrói o *perímetro de proteção de aplicações web e APIs (WAAP)*: uma política de firewall na frente do workload, com a origem fechada a qualquer outro caminho.

```mermaid
%%{init: {"layout": "dagre", "themeVariables": {"fontSize": "13px"}, "flowchart": {"nodeSpacing": 12, "rankSpacing": 12, "padding": 6, "wrappingWidth": 70, "minNodeWidth": 40, "useMaxWidth": true}}}%%
flowchart TD
  Visitor["Visitante"] -->|"requisição HTTPS"| DDoS["DDoS Protection"]
  DDoS --> Net["regra 1: listas do Network Shield"]
  Net -->|"fonte listada"| Deny["403"]
  Net -->|"não listada"| WAF["regra 2: WAF rule set"]
  WAF -->|"score no threshold, Blocking"| Bad["400"]
  WAF -->|"abaixo do threshold"| Bot["regra 3: instância do Bot Manager"]
  Bot -->|"score abaixo do threshold"| App["application"]
  App --> Conn["connector com Origin IP ACL"]
  Conn --> Origin["origem: permite só prefixos da Azion"]
  WAF -.->|"WAF Events"| Stream["Data Stream"]
  Stream --> SIEM["SIEM"]
```

Leia o diagrama de cima para baixo. DDoS Protection age antes de qualquer regra, e as regras do firewall decidem então cada requisição em ordem. Network Shield, WAF e Bot Manager agem cada um só pela regra que os chama, então a ordem dessas regras é a ordem da política. Toda requisição que passa termina em um connector, e o próprio firewall da origem fecha qualquer outro caminho até ela. A aresta pontilhada carrega registros, não requisições: os eventos do WAF saem para o SIEM pelo Data Stream.

### Fluxo de dados

1. A requisição de um visitante chega ao workload em `www.example.com`. DDoS Protection a avalia primeiro, e o firewall vinculado ao workload a recebe em seguida.
2. A primeira regra compara o endereço do cliente com a network list da equipe e com a lista de nós de saída do Tor. Um cliente listado recebe `403`, e nenhuma regra seguinte roda.
3. A segunda regra entrega a requisição ao WAF rule set. Em *Blocking*, uma requisição cujo score atinge o threshold de uma família recebe `400`.
4. A terceira regra executa a instância do Bot Manager em toda requisição que não é um asset estático. Um score no threshold executa a action da instância.
5. Uma requisição que nenhuma regra para chega à application, que a encaminha à origem pelo connector. O firewall da origem aceita a conexão porque ela vem de um prefixo de `Azion Origin Shield`, e recusa conexões de qualquer outro lugar.
6. Data Stream envia ao SIEM cada requisição que o WAF analisou. Real-Time Events guarda o registro de cada requisição para investigação, ligado a uma recusa pelo seu `x-azion-request-id`.

### Componentes

- **firewall**: o Platform Resource que aplica a política. O deployment de um workload o nomeia, e ele roda as suas regras em toda requisição a esse workload antes que a application a veja.
- **DDoS Protection**: a Feature que mitiga ataques DoS e DDoS em todo workload, sempre ativa e sem nada para configurar. Ela age antes de qualquer regra de firewall.
- **WAF**: pontua cada requisição que uma regra *Set WAF* lhe entrega contra oito famílias de ameaças, e recusa a requisição no modo *Blocking* quando um score atinge o seu threshold. Ele filtra o OWASP Top 10 e outros padrões de ataque.
- **Bot Manager**: pontua cada requisição que uma regra *Run Function* lhe entrega em busca de sinais de automação, e executa a action que a sua instância define quando o score atinge o threshold.
- **Network Shield**: adiciona o critério *Network*, que compara o endereço do cliente com uma lista de endereços, ASNs ou países. Ele recusa fontes sabidamente maliciosas antes que WAF e Bot Manager as pontuem.
- **application**: o Platform Resource que entrega as requisições que o firewall deixa passar e as encaminha à origem.
- **connector**: o Platform Resource que alcança a origem. Toda requisição que passa pela política termina nele.
- **Origin Shield**: Origin IP ACL no connector publica a lista `Azion Origin Shield` com os prefixos da Azion, que o firewall da origem permite enquanto recusa qualquer outra fonte. Nenhum cliente consegue então alcançar a origem contornando a política.
- **Data Stream**: envia as requisições que o WAF analisou, com o seu score, as regras correspondidas e a action, a um endpoint que o SIEM lê.
- **SIEM**: a integração que correlaciona os eventos do firewall com as outras fontes de segurança da equipe.
- **Real-Time Events**: guarda o registro de cada requisição, com os seus campos de WAF, para que um bloqueio possa ser explicado a partir do request ID que o cliente informa.

---

## Configure os bloqueios de rede

A regra de rede roda primeiro, então uma fonte em que a equipe já não confia é recusada antes que WAF e Bot Manager a pontuem. O WAF é cobrado pelas requisições que pontua, e o Bot Manager pelas requisições que avalia, então uma requisição que esta regra nega não custa nenhum dos dois. A regra lê duas listas. `webapp-blocked-addresses` guarda os endereços que a sua equipe bloqueia. `Azion IP Tor Exit Nodes`, a lista `2`, é mantida pela Azion, então a regra também corresponde aos nós de saída que a Azion adicionar depois.

O comportamento é *Deny (403 Forbidden)* em vez de *Drop*. Um visitante negado vê uma página com um request ID que uma pessoa bloqueada por engano pode informar. Quando a lista recusar só os clientes que você espera, você pode mudar para *Drop (Close Without Response)*.

**Console**

Para criar a lista:

1. **Abra a página Network Lists**

   Acesse [Azion Console](https://console.azion.com/) > **Edge Libraries** > **Network Lists**.

2. **Selecione Network List**

3. **Nomeie a lista**

   Na seção **General**, insira `webapp-blocked-addresses` em **Name**.

4. **Selecione o tipo IP/CIDR**

   Na seção **Network List Settings**, selecione *IP/CIDR*. O formulário abre com *ASN* selecionado.

5. **Insira os endereços**

   No campo **List**, insira `198.51.100.7 #blocked by the security team`, um endereço por linha.

6. **Selecione Save**

Para criar a regra que a lê:

1. **Abra o firewall vinculado ao seu workload**

   Acesse **Firewalls**, selecione o firewall e vá para a aba **Rules Engine**.

2. **Selecione Rule**

3. **Nomeie a regra**

   Insira `webapp - deny listed networks`.

4. **Corresponda à lista da equipe**

   Na seção **Criteria**, selecione a variável *Network* e o operador *matches*, e depois selecione `webapp-blocked-addresses` em **Select a Network**.

5. **Corresponda aos nós de saída do Tor**

   Adicione um critério unido por **Or**: *Network* *matches* `Azion IP Tor Exit Nodes`.

6. **Na seção Behaviors, selecione Deny (403 Forbidden)**

7. **Selecione Save**

**API**

Para criar a lista, envie-a às network lists:

```bash
curl --request POST \
  --url https://api.azion.com/v4/workspace/network_lists \
  --header 'Authorization: Token <personal-token>' \
  --header 'Content-Type: application/json' \
  --data '{"name":"webapp-blocked-addresses","type":"ip_cidr","items":["198.51.100.7 #blocked by the security team"]}'
```

A API responde `201` com um `state` igual a `executed`. Guarde o `id` da lista para a regra:

```json
{"state":"executed","data":{"id":<network-list-id>,"name":"webapp-blocked-addresses","type":"ip_cidr","items":["198.51.100.7 #blocked by the security team"],...}}
```

Para criar a regra, envie as duas listas em um bloco unido por `or`. Os IDs das listas são inteiros JSON, e `2` é a lista de nós de saída do Tor:

```bash
curl --request POST \
  --url https://api.azion.com/v4/workspace/firewalls/<firewall-id>/request_rules \
  --header 'Authorization: Token <personal-token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "webapp - deny listed networks",
  "active": true,
  "criteria": [
    [
      { "variable": "${network}", "conditional": "if", "operator": "is_in_list", "argument": <network-list-id> },
      { "variable": "${network}", "conditional": "or", "operator": "is_in_list", "argument": 2 }
    ]
  ],
  "behaviors": [{ "type": "deny" }]
}'
```

A API responde `202` com um `state` igual a `pending` e a `order` da regra. Crie esta regra antes das regras de WAF e de Bot Manager, para que ela ocupe a primeira posição.

Um cliente em qualquer uma das listas recebe `403` assim que a regra se propaga, o que leva de 6 a 10 minutos para uma regra nova. Uma alteração posterior nos itens de `webapp-blocked-addresses` chega ao tráfego em cerca de 100 segundos, sem alteração na regra.

---

## Configure o WAF rule set

O rule set `webapp-waf` pontua cada requisição contra as oito famílias de ameaças na sensibilidade `medium`, o nível em que toda família começa. A regra que o aplica corresponde a `${request_uri}` *starts with* `/`, o que corresponde a toda requisição. Um critério na query string deixaria de fora todo `POST` que carrega o seu payload no corpo.

A regra começa em *Logging*. Uma requisição que atinge um threshold é registrada e ainda é servida, e esses registros são a única descrição do seu tráfego como o rule set o vê. Mude a regra para *Blocking* quando 3 dias de **Tuning** não tiverem nenhuma requisição que deveria ter sido servida.

**Console**

Para criar o rule set:

1. **Abra a página WAF Rules**

   Acesse [Azion Console](https://console.azion.com/) > **Edge Libraries** > **WAF Rules**.

2. **Selecione + WAF Rule**

3. **Nomeie o rule set**

   Na seção **General**, insira `webapp-waf` em **Name**.

4. **Mantenha toda família em Sensitivity Medium**

   A seção **Threat Type Configuration** lista as oito famílias de ameaças, cada uma em *Sensitivity Medium*.

5. **Selecione Save**

Para aplicá-lo:

1. **Abra a aba Rules Engine do firewall**

   Acesse **Firewalls**, selecione o firewall e vá para a aba **Rules Engine**.

2. **Selecione + Rule**

3. **Nomeie a regra**

   Insira `webapp - apply webapp-waf`.

4. **Corresponda a toda requisição**

   Na seção **Criteria**, selecione `Request Uri`, *starts with* e `/`.

5. **Adicione o comportamento Set WAF**

   Na seção **Behaviors**, selecione **Set WAF**, depois `webapp-waf` e *Logging*.

6. **Selecione Save**

**API**

Para criar o rule set, envie as oito famílias em `medium`:

```bash
curl --request POST \
  --url https://api.azion.com/v4/workspace/wafs \
  --header 'Authorization: Token <personal-token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "webapp-waf",
  "active": true,
  "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" }
      ]
    }
  }
}'
```

A API responde `202` com um `state` igual a `pending`. Guarde o `id` do rule set:

```json
{"state":"pending","data":{"id":<waf-id>,"active":true,"name":"webapp-waf",...}}
```

Para aplicá-lo, crie a regra com `mode` definido como `logging`. O `mode` é obrigatório:

```bash
curl --request POST \
  --url https://api.azion.com/v4/workspace/firewalls/<firewall-id>/request_rules \
  --header 'Authorization: Token <personal-token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "webapp - apply webapp-waf",
  "active": true,
  "criteria": [
    [{ "variable": "${request_uri}", "conditional": "if", "operator": "starts_with", "argument": "/" }]
  ],
  "behaviors": [{ "type": "set_waf", "attributes": { "waf_id": <waf-id>, "mode": "logging" } }]
}'
```

A API responde `202` com um `state` igual a `pending` e a regra como foi armazenada.

O rule set pontua toda requisição que a regra de rede deixa passar e registra o que teria sido bloqueado. Para ler esses registros e transformar um falso positivo em uma exceção, consulte [Ajuste um WAF rule set](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/tune-waf/). Para mudar a regra para *Blocking*, consulte [Mude um rule set para blocking](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/mudar-para-blocking/).

---

## Configure a pontuação do Bot Manager

A instância do Bot Manager começa em modo de observação: `action` é `allow`, então ela não recusa nada, e `internal_logs` é `2`, então toda requisição grava uma linha de report. Execute-a por 24 a 72 horas, tempo suficiente para cobrir os horários de pico, os crawlers semanais e os jobs noturnos. `threshold` é `18`, o valor a partir do qual o Bot Manager documenta começar. Enquanto `action` for `allow`, o threshold só define o rótulo `classified` de cada linha. `log_tag` é `webapp-observe`, então cada linha nomeia esta instância.

A regra que executa a instância exclui os assets estáticos, porque uma imagem ou uma folha de estilo não é um cliente, e cada uma é uma requisição que o Bot Manager cobra. Ela não nomeia nenhum caminho, então todas as outras requisições da aplicação são pontuadas.

Crie a instância e a regra como [Execute Bot Manager em caminhos selecionados](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/executar-bot-manager-em-caminhos-selecionados/) descreve, com estes valores:

- **Instância**: `webapp-bot-observe`, com estes argumentos:

  ```json
  { "threshold": 18, "action": "allow", "internal_logs": 2, "log_tag": "webapp-observe" }
  ```

- **Regra**: `webapp - score page requests`, com um bloco de critérios: a exclusão de assets estáticos, `Request Uri` *does not match* a expressão do guia. A regra não carrega nenhum bloco de caminhos.

- **Comportamento**: *Run Function* com `webapp-bot-observe`.

Toda requisição de página é pontuada e servida, e cada uma grava uma linha de report marcada com `webapp-observe`. Quando a janela fechar, leia os scores, defina `threshold` no intervalo entre os grupos legítimo e automatizado e defina `action` como `deny`. Para o procedimento, consulte [Monitore e calibre o Bot Manager](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/monitorar-e-calibrar-bot-manager/).

---

## Configure a allowlist da origem

Origin IP ACL no connector dá à conta a network list `Azion Origin Shield`, que guarda todos os prefixos IPv4 e IPv6 que a infraestrutura da Azion usa para se conectar às origens. O firewall da sua origem permite então esses prefixos e nega qualquer outra fonte, para que um cliente que se conecta diretamente ao endereço da origem nunca alcance a aplicação contornando a política de firewall descrita nesta página.

A allowlist é o procedimento que [Restrinja uma origem à Azion com Origin IP ACL](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/restringir-uma-origem-a-azion-com-origin-ip-acl/) descreve, executado no connector que alcança a origem da aplicação web. O firewall da origem guarda os prefixos IPv4 e IPv6 da lista e nega qualquer outra fonte.

---

## Verifique a configuração

Espere as regras se propagarem antes de julgar um resultado: uma regra nova chega ao tráfego de 6 a 10 minutos depois de salva, e as respostas se alternam até ela se estabilizar. Repita cada requisição até a resposta se manter.

- **Uma fonte listada é recusada antes da inspeção.** A partir de um endereço em `webapp-blocked-addresses`, requisite a página inicial:

  ```bash
  curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/
  ```

  O comando imprime `403`.

- **O WAF pontua um padrão de ataque.** A partir de um endereço que não está listado, envie uma query string com formato de injeção:

  ```bash
  curl -i "https://www.example.com/?q=1%27%20OR%20%271%27%3D%271"
  ```

  Em *Logging*, a aplicação responde como de costume. Depois da mudança para *Blocking*, a mesma requisição recebe:

  ```text
  HTTP/2 400
  ```

  O `x-azion-request-id` da resposta encontra a requisição no dataset `workloadEvents` do Real-Time Events, onde `wafMatch` nomeia as regras internas que corresponderam, `1009` e `1013` para esta query string. Para a busca, consulte [Encontre o score de uma requisição bloqueada](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/como-encontrar-score-de-requisicoes-bloqueadas-pelo-waf/).

- **O Bot Manager pontua as requisições de página.** Envie uma requisição sem user agent, que é o que um cliente com script envia:

  ```bash
  curl -A "" https://www.example.com/
  ```

  A requisição é servida, e o dataset `functionConsoleEvents` do Real-Time Events guarda uma linha que começa com `[Bot-Protection][webapp-observe] Report:`, com o seu `score` e `matched_rules`. Para a query, consulte [Primeiros passos com Bot Manager](/pt-br/documentacao/plataforma/firewall/bot-manager/primeiros-passos/).

- **Os assets estáticos não são pontuados.** Requisite um asset, como `https://www.example.com/styles/main.css`. Nenhuma linha de report marcada com `webapp-observe` aparece para ele.

- **A origem recusa conexões diretas.** A partir de um host fora da Azion, conecte-se ao próprio endereço da origem. O firewall da origem recusa a conexão, enquanto as requisições a `www.example.com` ainda alcançam a aplicação.

- **Os eventos de segurança chegam ao SIEM.** No Real-Time Events, a fonte de dados *Data Stream* lista cada envio do stream, e um **Status Code** `200` significa que o endpoint do SIEM aceitou o lote.

---

## Medindo resultados

| Métrica                                      | Onde ler                                                                                                                                                                                                                                                                             | Como é o funcionamento correto                                                                                       |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- |
| Ataques bloqueados antes da origem           | **Threats vs Requests** no dashboard de WAF do Real-Time Metrics, que divide as requisições analisadas em ameaças bloqueadas, ameaças registradas e requisições permitidas. Consulte [Dashboards de Secure](/pt-br/documentacao/plataforma/real-time-metrics/dashboards-secure/#waf) | Depois da mudança para *Blocking*, as ameaças que o rule set encontra aparecem como bloqueadas, não como registradas |
| Taxa de falsos positivos no tráfego legítimo | A aba **Tuning** de `webapp-waf`, que lista as requisições que atingiram um threshold nos últimos 3 dias. Consulte [Tuning](/pt-br/documentacao/plataforma/firewall/waf/score-e-modos/#tuning)                                                                                       | Nenhuma requisição que você reconhece como legítima, e nenhuma exceção mais antiga que a requisição que a gerou      |
| Tempo para alterar uma política              | O tempo entre salvar uma alteração e a resposta se manter em uma requisição repetida, como em [Espere uma alteração se propagar antes de julgá-la](/pt-br/documentacao/plataforma/firewall/boas-praticas/#espere-uma-alteracao-se-propagar-antes-de-julga-la)                        | Uma alteração de lista se mantém em cerca de 100 segundos, e uma regra nova em 6 a 10 minutos                        |

---

## Boas práticas

- **Coloque a regra de rede primeiro.** O firewall roda as suas regras em ordem, e nenhuma regra seguinte roda para uma requisição que uma negação para. Uma fonte listada nunca chega então ao WAF ou ao Bot Manager, que cobram ambos pelas requisições que veem. Para a ordem das regras, consulte [Como Firewall funciona](/pt-br/documentacao/plataforma/firewall/como-funciona/#ordem-das-regras).
- **Altere uma lista, não uma regra, para uma fonte que muda com frequência.** Uma alteração nos itens de uma lista chega ao tráfego em cerca de 100 segundos, uma regra nova em 6 a 10 minutos, e a lista não soma nada às regras que o seu plano inclui por firewall.
- **Mantenha o critério da regra de WAF na URI da requisição.** `${request_args}` *matches* `.*` parece corresponder a toda requisição e deixa de fora toda requisição sem query string. `${request_uri}` *starts with* `/` corresponde a todas, como em [Corresponda à requisição, e não à query string dela](/pt-br/documentacao/plataforma/firewall/boas-praticas/#corresponda-a-requisicao-e-nao-a-query-string-dela).
- **Eleve uma família de ameaças por vez.** Elevar várias famílias de uma vez produz falsos positivos juntos, sem nada que diga qual elevação produziu qual bloqueio. Para os passos, consulte [Eleve a sensibilidade de uma família de ameaças](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/aumentar-uma-familia/).
- **Mantenha o IPv6 na allowlist da origem e atualize-a em até 7 dias.** A lista carrega prefixos IPv6 para todo data center, e os servidores atrás de um prefixo novo entram em produção 7 dias depois que a Azion o publica. Uma allowlist que deixa de fora qualquer um dos dois recusa conexões que a Azion abre. Para a atualização, consulte [Atualizações da lista](/pt-br/documentacao/plataforma/connectors/origin-shield/origin-ip-acl-e-hmac/#atualizacoes-da-lista).

---

## Guias deste caso de uso

- [Execute Bot Manager em caminhos selecionados](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/executar-bot-manager-em-caminhos-selecionados.md): Crie a instância de observação e a regra que pontua toda requisição, exceto os assets estáticos.
- [Restrinja uma origem à Azion com Origin IP ACL](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/restringir-uma-origem-a-azion-com-origin-ip-acl.md): Publique os prefixos de Azion Origin Shield e permita só eles no firewall da origem.
