---
name: azion-bloqueie-requisicoes-por-ip-asn-ou-pais
description: >-
  Crie uma network list de endereços IP, ASNs ou países e negue-a em uma regra de firewall pelo Azion Console, pela Azion CLI ou pela API.
---

# Bloqueie requisições por IP, ASN ou país

Você pode bloquear requisições por endereço IP, Autonomous System Number (ASN) ou país com [Network Shield](/pt-br/documentacao/plataforma/firewall/#network-shield), pelo Azion Console, pela Azion CLI ou pela API.

O bloqueio usa dois objetos. Uma [network list](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/) guarda os itens a barrar. Uma regra no [Rules Engine](/pt-br/documentacao/plataforma/firewall/rules-engine/) de um [firewall](/pt-br/documentacao/plataforma/firewall/) nega toda requisição de um cliente que a lista cobre. A lista não bloqueia nada até que uma regra a referencie, e a regra só age sobre um [workload](/pt-br/documentacao/plataforma/workloads/) vinculado ao firewall dela.

Os exit nodes do Tor já têm uma lista que a Azion mantém. Para bloqueá-los, consulte [Bloqueie exit nodes do Tor](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/bloquear-redes-tor/).

---

Selecione uma interface. Os pré-requisitos e cada tarefa desta página mudam para ela.

## Pré-requisitos

- Um firewall vinculado ao workload que atende a sua aplicação. Para vincular um, consulte [Vincule um firewall a um workload](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/proteja-seu-dominio/), que cobre tanto Workloads quanto a configuração legada de [Domains](/pt-br/documentacao/plataforma/workloads/domains/).
- Network Shield ativado para esse firewall, que é o padrão de um firewall que você cria. Para conferir, 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).
- **Edit Network Lists** e **Edit Firewall** nas suas permissões de equipe. Para mais informações, consulte [Network Lists](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/#permissoes).

**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 desta página 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

Todo item de uma network list tem o tipo da lista, e o tipo define quantos clientes um item cobre. Escolha o tipo pelo que você quer barrar:

| Para barrar                                | Tipo        | Rótulo no Console | Formato do item                                              | Exemplo                                          |
| ------------------------------------------ | ----------- | ----------------- | ------------------------------------------------------------ | ------------------------------------------------ |
| Endereços ou intervalos específicos.       | `ip_cidr`   | *IP/CIDR*         | Um endereço IPv4 ou IPv6, com ou sem comprimento de prefixo. | `192.0.2.10`, `198.51.100.0/24`, `2001:db8::/32` |
| Todos os endereços de um sistema autônomo. | `asn`       | *ASN*             | O ASN, apenas dígitos.                                       | `64496`                                          |
| Todos os endereços localizados em um país. | `countries` | *Countries*       | Um código ISO 3166-1 alpha-2, com duas letras maiúsculas.    | `BR`                                             |

Um item de países ou de ASN cobre todos os clientes desse país ou dessa rede, inclusive os legítimos. Para saber como a Azion associa um cliente a um país ou a um ASN, consulte [Correspondência de listas](/pt-br/documentacao/plataforma/firewall/network-shield/correspondencia-de-listas/#correspondencia-de-listas).

O tipo nunca muda depois que você cria a lista, então um segundo tipo de item precisa de uma segunda lista. Itens duplicados exatos são removidos sem aviso. Notações equivalentes não são duplicatas, então `192.0.2.80` e `192.0.2.80/32` são mantidos.

Um item `ip_cidr` também pode ter uma data de expiração `--LT` e um comentário `#`. Para a sintaxe, consulte [Network Lists](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/#anotacoes-de-item).

**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: `blocked-addresses`. O dropdown **Select a Network** de uma regra oferece a lista por esse nome.

4. **Selecione o tipo**

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

5. **Informe os itens**

   Para *IP/CIDR* ou *ASN*, informe um item por linha no campo **List**. Por exemplo:

   ```text
   192.0.2.10
   198.51.100.0/24
   2001:db8::/32
   ```

   Nesse campo, um ASN também pode começar com `AS`. Para *Countries*, selecione um ou mais países pelo nome no campo **Countries**.

6. **Salve a lista**

   Selecione **Save**.

Azion Console confirma com a mensagem `Your network list has been created`. A lista aparece em **Network Lists**, e a coluna **List Type** dela mostra o tipo que você selecionou.

**CLI**

Para criar a lista pela Azion CLI:

1. **Execute o comando de criação do seu tipo**

   Passe os itens com `--items` ou `--file`. Sem nenhum dos dois, o comando pede os itens e falha quando nenhum terminal responde.

   Para uma lista `countries`, passe os códigos de duas letras, separados por vírgulas:

   ```bash
   azion create network-list --name "Blocked countries" --type countries --items "BR,US"
   ```

   Para uma lista `asn`, passe os números, apenas dígitos:

   ```bash
   azion create network-list --name "Blocked networks" --type asn --items "64496"
   ```

   Para uma lista `ip_cidr`, salve os campos da lista em um arquivo chamado `network-list.json`:

   ```json
   {"name":"Blocked addresses","type":"ip_cidr","items":["203.0.113.0/24","198.51.100.7"],"active":true}
   ```

   Depois, passe o arquivo:

   ```bash
   azion create network-list --file network-list.json
   ```

2. **Leia a saída**

   Cada comando responde com o ID da lista:

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

A lista guarda os itens que você passou. Anote o ID dela, que a regra de firewall recebe como argumento.

**API**

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

1. **Envie a requisição de criação do seu tipo**

   Substitua `[TOKEN VALUE]` pelo seu personal token. Para uma lista `ip_cidr`, envie os endereços e os intervalos:

   ```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":"Blocked addresses","type":"ip_cidr","items":["192.0.2.10","198.51.100.0/24","2001:db8::/32"]}'
   ```

   Para uma lista `asn`, envie cada número como uma string de dígitos:

   ```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":"Blocked networks","type":"asn","items":["64496"]}'
   ```

   Para uma lista `countries`, envie os códigos de duas letras:

   ```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":"Blocked countries","type":"countries","items":["BR"]}'
   ```

2. **Leia a resposta**

   A API armazena a lista imediatamente, então a resposta traz `201` e um `state` igual a `executed`. A requisição `ip_cidr` retorna:

   ```json
   {
     "state": "executed",
     "data": {
       "id": <network-list-id>,
       "name": "Blocked addresses",
       "type": "ip_cidr",
       "items": ["192.0.2.10", "198.51.100.0/24", "2001:db8::/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
     }
   }
   ```

   As requisições `asn` e `countries` retornam o mesmo objeto, com os próprios `type` e `items`:

   ```text
   {"state":"executed","data":{"id":<network-list-id>,"name":"Blocked networks","type":"asn","items":["64496"],…,"active":true,…}}
   {"state":"executed","data":{"id":<network-list-id>,"name":"Blocked countries","type":"countries","items":["BR"],…,"active":true,…}}
   ```

A lista guarda os itens que você enviou. Anote o valor de `data.id`, que a regra de firewall envia como um número.

---

## Negue a lista em uma regra do firewall

A regra compara o endereço IP do cliente de cada requisição com a sua lista pelo critério *Network*, `${network}` na API. Com o operador *matches*, `is_in_list` na API, o critério é verdadeiro para um cliente da lista. O behavior *Deny (403 Forbidden)*, `deny` na API, então recusa a requisição. A regra desta página tem apenas esse critério, então ela se aplica a todos os caminhos do workload.

Network Shield disponibiliza o critério *Network* no firewall, enquanto o comportamento pertence ao Firewall. Para fechar a conexão sem resposta em vez de um `403`, use *Drop (Close Without Response)*, `drop` na API. Para ver todos os comportamentos que uma regra pode executar, consulte [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine/#comportamentos).

**Console**

Para criar a regra no Azion Console:

1. **Abra o firewall**

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

2. **Selecione a aba Rules Engine**

3. **Inicie uma regra**

   Selecione **Rule** para abrir o drawer **Create Rule**.

4. **Nomeie a regra**

   Na seção **General**, informe um **Name**. Por exemplo: `Deny blocked addresses`.

5. **(Opcional) Descreva a regra**

   Na seção **General**, informe uma **Description**.

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

   Na seção **Criteria**, defina a variável como *Network* e o operador como *matches*. A condição então fica *If* *Network* *matches*, e o campo seguinte recebe a lista.

   Uma variável que aparece como *Network - required Network Shield* indica que Network Shield está desativado para o firewall. Ative Network Shield na aba **Main Settings** e selecione **Save**. A variável então fica selecionável.

7. **Selecione a lista**

   Abra o dropdown **Select a Network** e selecione a sua lista. Se a lista ainda não existir, selecione **Create Network List** no mesmo dropdown, que abre o drawer **Create Network**.

8. **Adicione o behavior Deny**

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

9. **Mantenha a regra ativa**

   Na seção **Status**, mantenha **Active** ativado.

10. **Salve a regra**

    Selecione **Save**.

Azion Console confirma com a mensagem `Rule successfully created`. A aba **Rules Engine** lista a regra, e a coluna **Status** dela mostra *Active*.

**CLI**

O `azion create firewall-rule` lê a regra de um arquivo JSON. Para criar a regra pela Azion CLI:

1. **Salve a regra como JSON**

   Escreva esta regra em um arquivo chamado `rule.json`, com o ID da sua lista no lugar de `<network-list-id>`. O ID é um número, então deixe-o sem aspas:

   ```json
   {
     "name": "Deny blocked addresses",
     "active": true,
     "criteria": [
       [
         { "variable": "${network}", "conditional": "if", "operator": "is_in_list", "argument": <network-list-id> }
       ]
     ],
     "behaviors": [ { "type": "deny" } ]
   }
   ```

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

   Passe o ID do seu firewall no lugar de `<firewall-id>`:

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

3. **Leia a saída**

   A saída informa o ID da regra:

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

O firewall carrega a regra, e a regra nega os clientes da lista assim que chega ao tráfego.

**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. O ID da sua lista vai no lugar de `<network-list-id>`, 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 blocked addresses","active":true,
          "criteria":[[{"variable":"${network}","conditional":"if","operator":"is_in_list","argument":<network-list-id>}]],
          "behaviors":[{"type":"deny"}]}'
   ```

2. **Leia a resposta**

   A resposta traz `202`, um `state` igual a `pending` e a regra armazenada:

   ```json
   {
     "state": "pending",
     "data": {
       "id": <rule-id>,
       "name": "Deny blocked addresses",
       "active": true,
       "criteria": [[{"conditional": "if", "variable": "${network}", "operator": "is_in_list", "argument": <network-list-id>}]],
       "behaviors": [{"type": "deny"}],
       "description": "",
       "order": 0
     }
   }
   ```

A API recusa uma regra que envia o `argument` como string, com `25042 Invalid Operator Argument Type`. Ela recusa `matches`, o rótulo do Console, como operador, com `25039 Invalid Operator`. Em um firewall com Network Shield desativado, ela recusa a regra com `25047 Missing Required Modules`.

Uma lista pode servir a regras em vários firewalls, e uma alteração nos itens dela muda as correspondências de cada uma dessas regras. Enquanto uma regra referenciar a lista, você não pode excluir a lista (`22018`) nem desativar Network Shield no firewall (`24005`). Para fazer qualquer um dos dois, exclua ou altere a regra primeiro.

---

## Confirme o bloqueio

Uma regra que você adiciona leva vários minutos para chegar ao tráfego em toda a infraestrutura distribuída da Azion. Uma regra nova entra em vigor de 6 minutos e 29 segundos a 9 minutos e 18 segundos depois que você a cria. Até lá, os clientes da lista ainda chegam à sua aplicação. Para mais informações, consulte [Como Firewall funciona](/pt-br/documentacao/plataforma/firewall/como-funciona/#propagacao).

Uma requisição confere a regra, qualquer que seja a interface que a criou. De um cliente que a lista cobre, envie uma requisição para o domínio do seu workload:

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

O firewall recusa a requisição com `403`:

```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>
```

A resposta traz a página de erro padrão da Azion, encabeçada por **Forbidden**. A linha Your IP mostra o endereço do cliente que o firewall comparou com a lista. A resposta não nomeia nenhum firewall, regra ou lista, e o header `x-azion-request-id` identifica a requisição em [Real-Time Events](/pt-br/documentacao/plataforma/real-time-events/).

Um cliente fora da lista recebe, em vez disso, a resposta da sua aplicação. Uma regra com *Drop (Close Without Response)* não envia nenhuma resposta HTTP, então o `curl` termina com um erro:

```text
curl: (92) HTTP/2 stream 1 was not closed cleanly: PROTOCOL_ERROR (err 1)
```

Para testar primeiro um bloqueio no seu próprio endereço e em um único caminho, consulte [Primeiros passos com Network Shield](/pt-br/documentacao/plataforma/firewall/network-shield/primeiros-passos/). Se um cliente da lista ainda chegar à aplicação depois dessa espera, consulte [Solucionar problemas de Firewall](/pt-br/documentacao/plataforma/firewall/solucao-de-problemas/#um-cliente-listado-ainda-alcanca-a-aplicacao).

O firewall recusa toda requisição dos clientes da sua lista, em todos os caminhos do workload.

---

## Próximos passos

- [Network Lists](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists.md): Consulte os campos, os formatos de item, as anotações e os erros da lista que você criou.
- [Correspondência de listas](/pt-br/documentacao/plataforma/firewall/network-shield/correspondencia-de-listas.md): Veja como a regra corresponde a um cliente, o que cada comportamento retorna e com que rapidez uma alteração na lista entra em vigor.
- [Negue requisições de uma lista de países](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/negar-paises.md): Monte a versão por países deste bloqueio, da lista até a requisição recusada.
- [Permita somente os endereços de uma lista](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/allowlist.md): Inverta a regra com does not match, para que ela recuse todos os clientes fora da lista.
