---
name: azion-bloqueie-exit-nodes-do-tor
description: >-
  Descarte toda requisição de um exit node do Tor com uma regra de firewall na lista Azion IP Tor Exit Nodes, pelo Azion Console, pela Azion CLI ou pela API.
---

# Bloqueie exit nodes do Tor

Você pode descartar as requisições de exit nodes do Tor com uma regra de [firewall](/pt-br/documentacao/plataforma/firewall/), pelo Azion Console, pela Azion CLI ou pela API. Para bloquear endereços, redes ou países que você escolhe, consulte [Bloqueie requisições por IP, ASN ou país](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/blocklists-enderecos-ip-edge/). Para implantar um novo firewall que também pontua bots, consulte [Bloqueie bots e Tor exit nodes com um template](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/frameworks/bot-manager-lite-and-tor-block-starter-kit/).

Um exit node do Tor é o ponto final em que a rede Tor se conecta à internet. A criptografia do Tor termina nesse nó, então o nó pode ver os dados que uma requisição carrega. Por isso, o tráfego de exit nodes pode levantar preocupações de segurança e pode ser malicioso.

A Azion mantém a [network list](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/) `Azion IP Tor Exit Nodes` em todas as contas, com o ID `2`. Ela guarda os endereços IP de exit nodes do Tor, a Azion os atualiza e nenhuma conta pode alterar a lista. Você não precisa criar nem manter uma lista atualizada, apenas adicionar uma regra. Uma regra no [Rules Engine](/pt-br/documentacao/plataforma/firewall/rules-engine/) compara as requisições com a lista pelo critério *Network*. [Network Shield](/pt-br/documentacao/plataforma/firewall/#network-shield) disponibiliza esse critério em um firewall. Uma ou várias regras podem referenciar a lista, e cada regra corresponde aos endereços que a lista guarda depois de cada atualização.

---

Selecione a interface em que você trabalha. Os pré-requisitos e as duas tarefas desta página seguem essa escolha.

## 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/).
- Network Shield ativado para esse firewall, que é o padrão de um novo firewall. 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).
- A permissão **Edit Firewall** para adicionar a regra e a **View Network Lists** para ler a lista do Tor. 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.

---

## Adicione a regra que descarta a lista do Tor

A regra tem um critério, verdadeiro quando o endereço do cliente de uma requisição está na lista `2`. O behavior dela, *Drop (Close Without Response)*, fecha a conexão sem uma resposta HTTP. Já *Deny (403 Forbidden)* responde com a página de erro `403` da Azion. Para escolher entre os dois, consulte [Negue enquanto implanta um bloqueio e depois descarte](/pt-br/documentacao/plataforma/firewall/boas-praticas/#negue-enquanto-implanta-um-bloqueio-e-depois-descarte).

**Console**

Para adicionar a regra no Azion Console:

1. **Abra a página Firewalls**

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

2. **Selecione o firewall vinculado ao seu workload**

3. **Selecione a aba Rules Engine**

4. **Inicie uma regra**

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

5. **Nomeie a regra**

   Na seção **General**, informe um **Name**. Por exemplo: `Block Tor Exit Nodes`.

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

   No campo **Description**, informe um comentário curto sobre a regra.

7. **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. Ative Network Shield em **Main Settings** e salve, e a variável fica selecionável.

8. **Selecione a lista do Tor**

   No dropdown **Select a Network**, selecione *Azion IP Tor Exit Nodes*.

9. **Adicione o behavior Drop**

   Na seção **Behaviors**, selecione *Drop (Close Without Response)*.

10. **Salve a regra**

    Selecione **Save**.

Azion Console exibe a mensagem `Rule successfully created`, e a regra aparece na aba **Rules Engine**.

**CLI**

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

1. **Confirme o ID da lista do Tor**

   Liste as network lists da sua conta:

   ```bash
   azion list network-list
   ```

   A tabela mostra a lista do Tor com o ID `2`. As listas que a sua conta criou aparecem como linhas adicionais:

   ```text
   ID     NAME                              ACTIVE
   2      Azion IP Tor Exit Nodes           true
   ```

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

   Salve o seguinte como `rule.json`. O `argument` é `2`, o ID da lista do Tor, como um número sem aspas:

   ```json
   {
     "name": "Block Tor Exit Nodes",
     "active": true,
     "criteria": [
       [
         { "variable": "${network}", "conditional": "if", "operator": "is_in_list", "argument": 2 }
       ]
     ],
     "behaviors": [
       { "type": "drop" }
     ]
   }
   ```

3. **Crie a regra**

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

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

4. **Leia a saída**

   O comando imprime o ID da nova regra:

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

O firewall guarda a regra. Anote o ID dela para ler a regra depois.

**API**

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

1. **Confirme o ID da lista do Tor**

   Substitua `[TOKEN VALUE]` pelo seu personal token e leia a lista `2`:

   ```bash
   curl "https://api.azion.com/v4/workspace/network_lists/2?fields=id,name,type,active,last_editor,last_modified" \
     -H "Authorization: Token [TOKEN VALUE]" \
     -H "Accept: application/json"
   ```

   A leitura responde `200`. Um `last_editor` igual a `Azion` marca uma lista que a Azion mantém. O `last_modified` muda cada vez que a Azion atualiza os itens:

   ```json
   {
     "data": {
       "id": 2,
       "name": "Azion IP Tor Exit Nodes",
       "type": "ip_cidr",
       "last_editor": "Azion",
       "last_modified": "2026-01-01T12:00:00.000000Z",
       "active": true,
       "is_versioned": false,
       "version": null
     }
   }
   ```

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

   Substitua `<firewall-id>` pelo ID do seu firewall. No body, `name` nomeia a regra, `criteria` guarda as condições dela e `behaviors` guarda o que ela faz quando há correspondência. O `argument` é `2`, 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": "Block Tor Exit Nodes",
     "active": true,
     "criteria": [
       [
         { "variable": "${network}", "conditional": "if", "operator": "is_in_list", "argument": 2 }
       ]
     ],
     "behaviors": [
       { "type": "drop" }
     ]
   }'
   ```

3. **Leia a resposta**

   Uma criação responde `202`, e um `state` igual a `pending` significa que a API aceitou a regra. O campo `order` conta a posição da regra no firewall a partir de `0`:

   ```json
   {
     "state": "pending",
     "data": {
       "id": <rule-id>,
       "name": "Block Tor Exit Nodes",
       "active": true,
       "criteria": [
         [
           { "conditional": "if", "variable": "${network}", "operator": "is_in_list", "argument": 2 }
         ]
       ],
       "behaviors": [{ "type": "drop" }],
       "description": "",
       "order": 0
     }
   }
   ```

Anote o valor de `data.id`, o ID da regra. Um `argument` enviado como string é recusado com `400` e `25042 Invalid Operator Argument Type`. Em um firewall com Network Shield desativado, a regra é recusada com `25047 Missing Required Modules`. Para conhecer todos os critérios e comportamentos que uma regra pode ter, consulte [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine/#criterios).

Quando a regra chega à infraestrutura distribuída da Azion, o firewall descarta toda requisição de um endereço da lista do Tor. O cliente não recebe linha de status nem body. Uma regra que você adiciona leva vários minutos para chegar lá. Para ver os tempos de propagação, consulte [Como Firewall funciona](/pt-br/documentacao/plataforma/firewall/como-funciona/#propagacao).

---

## Confirme que a regra está salva

Uma requisição da sua própria conexão não testa a regra do Tor. O seu endereço não está na lista do Tor, e qualquer gravação que o adicionaria é recusada com `22004`. Em vez disso, leia a regra salva e confira que ela indica a lista `2` e o comportamento de descarte.

**Console**

Para ler a regra no Azion Console:

1. **Abra a página Firewalls**

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

2. **Selecione o firewall vinculado ao seu workload**

3. **Selecione a aba Rules Engine**

   A regra aparece na lista de regras, com *Active* na coluna **Status**.

4. **Abra a regra**

   Selecione a regra. O drawer **Edit Rule** abre.

5. **Leia o critério**

   Na seção **Criteria**, a regra mostra *Network*, *matches* e *Azion IP Tor Exit Nodes*.

6. **Leia o comportamento**

   Na seção **Behaviors**, a regra mostra *Drop (Close Without Response)*.

A regra está salva no firewall, com a lista do Tor como critério e o comportamento de descarte.

**CLI**

Para ler a regra pela Azion CLI:

1. **Liste as regras do firewall**

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

   ```bash
   azion list firewall-rule --firewall-id <firewall-id>
   ```

   A regra aparece na tabela, com `true` na coluna `ACTIVE`:

   ```text
   ID         NAME                   ACTIVE  DESCRIPTION
   <rule-id>  Block Tor Exit Nodes   true
   ```

2. **Imprima a regra completa**

   Substitua `<rule-id>` pelo ID da regra:

   ```bash
   azion describe firewall-rule --firewall-id <firewall-id> --rule-id <rule-id> --format json
   ```

   O comando imprime o registro completo da regra, com `argument` como o inteiro `2`.

A regra está salva no firewall com os critérios e o comportamento de `rule.json`.

**API**

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

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

   Substitua `<firewall-id>` pelo ID do seu firewall e `<rule-id>` pelo ID da regra:

   ```bash
   curl https://api.azion.com/v4/workspace/firewalls/<firewall-id>/request_rules/<rule-id> \
     -H "Authorization: Token [TOKEN VALUE]" \
     -H "Accept: application/json"
   ```

2. **Leia a resposta**

   Uma leitura responde `200` com a regra como foi armazenada:

   ```json
   {
     "data": {
       "id": <rule-id>,
       "name": "Block Tor Exit Nodes",
       "last_editor": "<your-email>",
       "last_modified": "2026-01-01T12:00:00.000000Z",
       "created_at": "2026-01-01T12:00:00.000000Z",
       "active": true,
       "criteria": [
         [
           { "conditional": "if", "variable": "${network}", "operator": "is_in_list", "argument": 2 }
         ]
       ],
       "behaviors": [{ "type": "drop" }],
       "description": "",
       "order": 0
     }
   }
   ```

A regra volta como você a enviou, com `argument` como o inteiro `2`. A plataforma preenche `last_editor`, `last_modified`, `created_at` e `order`.

Para ver a regra agir sobre o tráfego, ative **Debug Rules** nas **Main Settings** do firewall. O firewall então registra as regras executadas, e [Real-Time Events](/pt-br/documentacao/plataforma/real-time-events/) as exibe. Para mais informações sobre 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/#registre-as-regras-que-um-firewall-executa).

---

## Próximos passos

- [Listas mantidas pela Azion](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists.md#listas-mantidas-pela-azion): As listas que a Azion mantém em todas as contas, os IDs delas e por que uma gravação em uma delas é recusada.
- [Correspondência de listas](/pt-br/documentacao/plataforma/firewall/network-shield/correspondencia-de-listas.md): O que o cliente recebe quando a requisição é descartada e quanto tempo uma regra leva para chegar ao tráfego.
- [Bloqueie bots e Tor exit nodes com um template](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/frameworks/bot-manager-lite-and-tor-block-starter-kit.md): Implante um firewall que pontua bots com Bot Manager Lite e nega a lista do Tor.
- [Boas práticas de Firewall](/pt-br/documentacao/plataforma/firewall/boas-praticas.md#network-shield): Quando negar em vez de descartar e por que uma regra referencia a lista 2, e não uma cópia.
