---
name: azion-encontre-os-ips-por-tras-do-trafego-de-ataque
description: >-
  Liste pela GraphQL API os endereços IP que enviam mais requisições que WAF marca como ataques, com a família de ataque de cada um.
---

# Encontre os IPs por trás do tráfego de ataque

Você pode listar os cinco endereços IP que enviam mais requisições que [WAF](/pt-br/documentacao/plataforma/firewall/#waf) marca como ataques, com a família de ataque de cada um, a partir do dataset `workloadEvents` da GraphQL API. O dataset guarda um registro por requisição, e o endpoint de eventos o atende. Para classificar os mesmos endereços a partir de dados agregados, ou no Azion Console, consulte [Encontre as principais origens de ameaças do WAF](/pt-br/documentacao/guias/plataforma/observabilidade/encontrar-principais-origens-de-ameacas-waf/).

---

## Pré-requisitos

- Um personal token. Para criar um, consulte [Personal tokens](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/).
- WAF ativado em um firewall vinculado ao workload que recebe o tráfego. Para configurá-lo, consulte [Primeiros passos com WAF](/pt-br/documentacao/plataforma/firewall/waf/primeiros-passos/).
- Uma forma de enviar uma query GraphQL, como o GraphiQL ou o `curl`. Para as duas, consulte [Primeiros passos com a GraphQL API](/pt-br/documentacao/devtools/graphql/primeiros-passos/).

---

## Consulte os principais IPs

A query conta os registros que WAF identificou, agrupa-os por endereço do cliente e por família de ataque e retorna as cinco maiores contagens. O endpoint de eventos guarda os registros por cerca de 7 dias, então defina uma janela dentro dos últimos 7 dias. Para a retenção de cada endpoint, consulte [Limites](/pt-br/documentacao/devtools/graphql/limites/).

Para encontrar os principais IPs:

1. **Envie a query ao endpoint de eventos**

   Envie uma requisição `POST` para `https://api.azion.com/v4/events/graphql` com o header `Authorization: Token [TOKEN VALUE]`. Substitua os valores de `begin` e `end` pela sua janela, no formato `YYYY-MM-DDTHH:mm:ss`:

   ```graphql
   query TOP5IPsWAFRequests {
     workloadEvents(
       limit: 5
       filter: {
         tsRange: {
           begin:"2026-09-26T14:00:00"
           end:"2026-10-03T14:00:00"
         },
         wafMatchNe: "-"
         wafAttackFamilyNe: "-"
       }
       aggregate: {
         count: rows
       }
       groupBy:[remoteAddress, wafAttackFamily]
       orderBy:[count_DESC]
     )
     {
       remoteAddress
       wafAttackFamily
       count
     }
   }
   ```

   Cada argumento define uma parte da classificação:

   | Argumento                | O que faz                                                                                                       |
   | ------------------------ | --------------------------------------------------------------------------------------------------------------- |
   | `limit`                  | Retorna no máximo este número de linhas, aqui `5`.                                                              |
   | `tsRange`                | Dentro de `filter`, define a janela com `begin` e `end`.                                                        |
   | `wafMatchNe: "-"`        | Exclui os registros cujo `wafMatch` é `-`, o valor de uma requisição em que WAF não encontrou nenhuma infração. |
   | `wafAttackFamilyNe: "-"` | Exclui os registros cujo `wafAttackFamily` é `-`, o valor de uma requisição sem família de ataque.              |
   | `count: rows`            | Dentro de `aggregate`, conta os registros de cada grupo e retorna o total em `count`.                           |
   | `groupBy`                | Agrupa os registros por endereço do cliente e depois por família de ataque.                                     |
   | `orderBy`                | Ordena as linhas por `count`: `count_DESC` coloca a maior primeiro, e `count_ASC` a menor.                      |

2. **Leia as linhas**

   A resposta traz um array `workloadEvents` dentro de `data`, com um objeto por endereço e família de ataque:

   | Campo             | Descrição                                                                                     |
   | ----------------- | --------------------------------------------------------------------------------------------- |
   | `remoteAddress`   | O endereço IP do cliente que enviou as requisições.                                           |
   | `wafAttackFamily` | A família de ataque que WAF detectou, como `$SQL`, `$XSS`, `$RFI`, `$TRAVERSAL` ou `$OTHERS`. |
   | `count`           | O número de requisições do endereço que WAF marcou como ataques da família.                   |

Um endereço que enviou ataques de várias famílias retorna uma linha por família. As linhas chegam na ordem que `orderBy` define, com a maior contagem primeiro. Para todos os campos do dataset, consulte [Campos do Real-Time Events](/pt-br/documentacao/devtools/graphql/campos-gql-real-time-events/).

---

## Próximos passos

- [Network Lists](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists.md): Coloque os endereços em uma lista que uma regra de firewall identifica.
- [Encontre os principais ataques com GraphQL](/pt-br/documentacao/guias/plataforma/observabilidade/consultar-top-attacks-com-graphql.md): Classifique as famílias de ataque pelas ameaças que WAF contou.
- [Campos do Real-Time Events](/pt-br/documentacao/devtools/graphql/campos-gql-real-time-events.md): Consulte cada campo de workloadEvents, incluindo os outros campos do WAF.
- [Ajuste um WAF rule set](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/tune-waf.md): Ajuste o rule set depois de ver quais famílias chegam ao seu workload.
