# Primeiros passos com Network Shield

Este guia orienta você a bloquear a sua primeira requisição com uma network list no [Network Shield](/pt-br/documentacao/plataforma/firewall/#network-shield).

- Crie uma network list que guarda o seu próprio endereço IP público.
- Negue essa lista em um caminho de teste com uma regra de firewall.
- Envie uma requisição para o caminho de teste e leia a recusa.

Quatro objetos participam do bloqueio, e cada um se liga ao seguinte:

1. Uma [network list](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/) guarda os endereços a comparar. Neste guia, ela guarda o seu próprio endereço IP público.
2. Uma regra no [Rules Engine](/pt-br/documentacao/plataforma/firewall/rules-engine/) de um [firewall](/pt-br/documentacao/plataforma/firewall/) compara a requisição com essa lista pelo critério *Network* e nega a requisição. Um segundo critério limita a regra ao caminho `/network-shield-test`, para que o restante da sua aplicação continue respondendo a você.
3. O firewall carrega a regra e precisa ter Network Shield ativado. Um firewall tem Network Shield ativado por padrão.
4. O [workload](/pt-br/documentacao/plataforma/workloads/) que atende a sua aplicação está vinculado a esse firewall, então as requisições dele passam pela regra.

Uma network list não bloqueia nada por conta própria. Enquanto nenhuma regra em um firewall vinculado a um workload a referenciar, a lista não corresponde a nenhuma requisição.

---

Selecione uma interface para este guia. Os pré-requisitos e cada etapa mudam para a interface que você selecionar.

## Pré-requisitos

- Uma conta Azion. Para criar uma, consulte [Como criar uma conta na Azion](/pt-br/documentacao/fundamentos/criar-uma-conta/).
- Um workload que atende a sua aplicação e está vinculado a um firewall. Para vincular um, consulte [Vincule um firewall a um workload](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/proteja-seu-dominio/).
- Network Shield ativado para esse firewall, que é o padrão. Para conferir a configuração, consulte [Defina as configurações principais de um firewall](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/firewall-definir-main-settings/#altere-os-produtos-habilitados-em-um-firewall).
- As permissões **Edit Network Lists** e **Edit Firewall**. Para mais informações, consulte [Network Lists](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/#permissoes).
- O seu endereço IPv4 público, de onde partem as suas requisições ao workload.

**Console**

- Acesso ao Azion Console. Para entrar, consulte [Como acessar o Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).

**CLI**

- [Azion CLI](/pt-br/documentacao/devtools/cli/) instalada e autorizada. Os comandos deste guia correspondem à Azion CLI 4.23.0.
- O ID do firewall vinculado ao seu workload.

**API**

- Um personal token e o `curl`. Para criar um token, consulte [Personal Tokens](/pt-br/documentacao/fundamentos/personal-tokens/).
- O ID do firewall vinculado ao seu workload.

---

## Crie a network list

Uma network list guarda os itens que uma regra compara, e o tipo da lista define que espécie de item eles são. A lista desta etapa tem o tipo `ip_cidr`, *IP/CIDR* no Azion Console. Ela guarda um item: o seu endereço IPv4 público com o prefixo `/32`, que cobre apenas esse endereço. O tipo de uma lista nunca muda depois da criação.

**Console**

Para criar a lista no Azion Console:

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

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

2. **Inicie uma lista**

   Selecione **Network List**.

3. **Nomeie a lista**

   Na seção **General**, informe um **Name**. Por exemplo: `network-shield-quickstart`.

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

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

5. **Informe o seu endereço**

   No campo **List**, informe `<your-ip>/32`, com o seu endereço IPv4 público no lugar de `<your-ip>`.

6. **Salve a lista**

   Selecione **Save**.

Azion Console exibe a mensagem `Your network list has been created`. A lista aparece em **Network Lists**, com *IP/CIDR* na coluna **List Type**.

**CLI**

Para criar a lista pela Azion CLI:

1. **Execute o comando de criação**

   Substitua `<your-ip>` pelo seu endereço IPv4 público:

   ```bash
   azion create network-list --name "network-shield-quickstart" --type ip_cidr --items "<your-ip>/32"
   ```

2. **Leia a saída**

   O comando imprime o ID da lista que ele criou:

   ```text
   Created Network List with ID <network-list-id>
   ```

A lista guarda um item, o seu endereço. Anote o ID dela, que você passa para a regra.

**API**

Para criar a lista, envie uma requisição `POST` para `/v4/workspace/network_lists`:

1. **Envie a requisição de criação**

   Substitua `[TOKEN VALUE]` pelo seu personal token e `<your-ip>` pelo seu endereço IPv4 público:

   ```bash
   curl -X POST https://api.azion.com/v4/workspace/network_lists \
     -H "Authorization: Token [TOKEN VALUE]" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{"name":"network-shield-quickstart","type":"ip_cidr","items":["<your-ip>/32"]}'
   ```

2. **Leia a resposta**

   Uma criação responde `201`, e um `state` igual a `executed` significa que a API armazenou a lista imediatamente:

   ```json
   {
     "state": "executed",
     "data": {
       "id": <network-list-id>,
       "name": "network-shield-quickstart",
       "type": "ip_cidr",
       "items": ["<your-ip>/32"],
       "last_editor": "<your-email>",
       "last_modified": "2026-01-01T12:00:00.000000Z",
       "created_at": "2026-01-01T12:00:00.000000Z",
       "active": true,
       "version_id": null,
       "version_state": null,
       "is_versioned": false,
       "version": null
     }
   }
   ```

A lista guarda um item, o seu endereço. Anote o valor de `data.id`, que você passa para a regra como um número.

---

## Negue a lista em um caminho de teste

Uma regra do Rules Engine para Firewall executa o seu comportamento apenas quando os seus critérios são verdadeiros. A regra desta etapa une dois critérios com `and` em um bloco, então os dois precisam ser verdadeiros. O critério *Network* corresponde aos endereços da sua lista, e um critério *Request Uri* corresponde aos caminhos que começam com `/network-shield-test`. O behavior *Deny (403 Forbidden)* então recusa a requisição.

O caminho de teste é como este guia testa um bloqueio sem recusar tráfego real. A regra nega apenas as requisições do seu endereço para `/network-shield-test` e deixa passar todas as outras.

**Console**

Para criar a regra no Azion Console:

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

   Acesse [Azion Console](https://console.azion.com/) > **Secure** > **Firewalls** e selecione o firewall.

2. **Selecione a aba Rules Engine**

3. **Inicie uma regra**

   Selecione **Rule**. O drawer **Create Rule** abre.

4. **Nomeie a regra**

   Na seção **General**, informe um **Name**. Por exemplo: `Deny my address on the test path`.

5. **Defina o critério Network**

   Na seção **Criteria**, selecione a variável *Network* e o operador *matches*.

   Se a variável aparecer como *Network - required Network Shield*, o firewall está com Network Shield desativado. A variável fica selecionável depois que você ativa Network Shield em **Main Settings** e salva.

6. **Selecione a sua lista**

   No dropdown **Select a Network**, selecione a lista que você criou. Por exemplo: `network-shield-quickstart`.

7. **Adicione uma segunda condição**

   Para adicionar uma condição que também precisa ser verdadeira, selecione **And**.

8. **Limite a regra ao caminho de teste**

   Na condição adicionada, selecione a variável *Request Uri* e o operador *starts with*, e informe `/network-shield-test`.

9. **Adicione o behavior Deny**

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

10. **Salve a regra**

    Selecione **Save**.

Azion Console exibe a mensagem `Rule successfully created`. A regra aparece na aba **Rules Engine**, com *Active* na coluna **Status**.

**CLI**

O `azion create firewall-rule` aceita apenas duas flags, `--firewall-id` e `--file`, então a regra vai em um arquivo JSON. Para criá-la pela Azion CLI:

1. **Escreva a regra em um arquivo**

   Salve o seguinte como `rule.json`. Substitua `<network-list-id>` pelo ID da sua lista, como um número sem aspas:

   ```json
   {
     "name": "Deny my address on the test path",
     "active": true,
     "criteria": [
       [
         { "variable": "${network}", "conditional": "if", "operator": "is_in_list", "argument": <network-list-id> },
         { "variable": "${request_uri}", "conditional": "and", "operator": "starts_with", "argument": "/network-shield-test" }
       ]
     ],
     "behaviors": [
       { "type": "deny" }
     ]
   }
   ```

2. **Crie a regra**

   Substitua `<firewall-id>` pelo ID do seu firewall:

   ```bash
   azion create firewall-rule --firewall-id <firewall-id> --file rule.json
   ```

3. **Leia a saída**

   O comando imprime o ID da regra que ele criou:

   ```text
   Created Firewall Rule with ID <rule-id>
   ```

A regra está ativa no firewall. A última etapa confirma que ela nega a sua requisição.

**API**

Para criar a regra, envie uma requisição `POST` para `/v4/workspace/firewalls/{firewall_id}/request_rules`:

1. **Envie a requisição de criação**

   Substitua `[TOKEN VALUE]` pelo seu personal token e `<firewall-id>` pelo ID do seu firewall. Substitua `<network-list-id>` pelo ID da sua lista, como um número sem aspas:

   ```bash
   curl -X POST https://api.azion.com/v4/workspace/firewalls/<firewall-id>/request_rules \
     -H "Authorization: Token [TOKEN VALUE]" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{
     "name": "Deny my address on the test path",
     "active": true,
     "criteria": [
       [
         { "variable": "${network}", "conditional": "if", "operator": "is_in_list", "argument": <network-list-id> },
         { "variable": "${request_uri}", "conditional": "and", "operator": "starts_with", "argument": "/network-shield-test" }
       ]
     ],
     "behaviors": [
       { "type": "deny" }
     ]
   }'
   ```

2. **Leia a resposta**

   Uma criação responde `202` com a regra como foi armazenada. O campo `order` é a posição da regra entre as regras do firewall, contada a partir de `0`:

   ```json
   {
     "state": "pending",
     "data": {
       "id": <rule-id>,
       "name": "Deny my address on the test path",
       "active": true,
       "criteria": [
         [
           { "conditional": "if", "variable": "${network}", "operator": "is_in_list", "argument": <network-list-id> },
           { "conditional": "and", "variable": "${request_uri}", "operator": "starts_with", "argument": "/network-shield-test" }
         ]
       ],
       "behaviors": [{ "type": "deny" }],
       "description": "",
       "order": 0
     }
   }
   ```

Um `argument` enviado como string, como `"<network-list-id>"` entre aspas, é recusado com `400` e `25042 Invalid Operator Argument Type`. Em um firewall com Network Shield desativado, a requisição é recusada com `25047 Missing Required Modules`.

---

## Verifique que a requisição é negada

A verificação é a mesma qualquer que seja a interface que criou a regra. O seu workload responde no domínio de workload dele, que termina em `.map.azionedge.net`. Os comandos o escrevem como `<your-workload-domain>`.

Uma regra que você adiciona leva vários minutos para entrar em vigor em toda a infraestrutura distribuída da Azion. Até lá, o caminho de teste responde como qualquer outro caminho. Espere e envie a requisição de novo. Para mais informações, consulte [Como Firewall funciona](/pt-br/documentacao/plataforma/firewall/como-funciona/#propagacao).

Envie uma requisição para o caminho de teste. A flag `-4` a envia por IPv4, a família de endereços do item da sua lista:

```bash
curl -4 -i https://<your-workload-domain>/network-shield-test
```

O firewall nega a requisição:

```text
HTTP/2 403
server: nginx
date: Thu, 01 Jan 2026 12:00:00 GMT
content-type: text/html; charset=utf-8
x-content-type-options: nosniff
x-azion-request-id: <request-id>
x-azion-edge-location: <edge-location>
alt-svc: h3=":443"; ma=86400

<title>Azion - Default error page</title>
...
<h1 class="error-header__title">Forbidden</h1>
...
Your IP         <your-ip>
Request ID      <request-id>
Status Code     403
Edge Location   <edge-location>
```

O body é a página de erro padrão da Azion, encabeçada por **Forbidden**. A linha Your IP mostra o endereço que o firewall comparou com a lista, que é o seu. Nenhum header nomeia o firewall, a regra ou a lista. O header `x-azion-request-id` identifica a requisição. Para buscar a requisição nos logs, consulte [Real-Time Events](/pt-br/documentacao/plataforma/real-time-events/).

Envie a mesma requisição para outro caminho do workload:

```bash
curl -4 -i https://<your-workload-domain>/
```

O firewall deixa a requisição passar, e a sua aplicação a responde:

```text
HTTP/2 204
server: nginx
date: Thu, 01 Jan 2026 12:00:00 GMT
x-azion-request-id: <request-id>
x-azion-edge-location: <edge-location>
alt-svc: h3=":443"; ma=86400
```

A sua aplicação decide esse status. Uma aplicação que não serve conteúdo responde `204`. O que importa é que a resposta não é a página de erro `403`.

Network Shield agora nega o seu endereço em `/network-shield-test`, e todos os outros caminhos continuam respondendo a você.

---

## Próximos passos

- [Correspondência de listas](/pt-br/documentacao/plataforma/firewall/network-shield/correspondencia-de-listas.md): O que o critério Network compara, o que cada comportamento retorna e quanto tempo uma alteração leva para chegar ao tráfego.
- [Network Lists](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists.md): Os tipos de lista, os formatos de item, as anotações e os erros, antes de você montar uma lista para tráfego real.
- [Bloqueie requisições por IP, ASN ou país](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/blocklists-enderecos-ip-edge.md): Monte uma lista de endereços, redes ou países para tráfego real e negue-a em uma regra de firewall.
- [Bloqueie exit nodes do Tor](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/bloquear-redes-tor.md): Bloqueie os endereços da lista de exit nodes do Tor que a Azion mantém e atualiza.
- [Permita somente os endereços de uma lista](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/allowlist.md): Troque o operador para does not match, para que uma regra negue todos os endereços fora da lista.
- [Limites de Firewall](/pt-br/documentacao/plataforma/firewall/limites.md#network-shield): Os limites de uma lista e dos seus itens, e o uso de Firewall que cada service plan inclui.
