Como identificar os principais IPs gerando tráfego de ataque com a API GraphQL
Você pode usar informações do conjunto de dados httpEvents para monitorar padrões de tráfego, detectar anomalias e analisar potenciais ameaças. Este guia explica como filtrar os 5 IPs que geraram o maior número de requisições identificadas pelo WAF como ataques.
Consulte os dados
Para consultar os 5 principais IPs gerando tráfego de ataque, de acordo com o WAF, siga os passos abaixo:
- Acesse o GraphiQL Playground neste link: 
https://api.azion.com/v4/metrics/graphql.- Você deve estar logado na sua conta Azion. Caso contrário, você receberá uma mensagem de erro.
 
 - Envie uma consulta seguindo este formato:
 
query TOP5IPsWAFRequests {  httpEvents(    limit: 5    filter: {      tsRange: {        begin:"2025-01-15T00:00:00"        end:"2025-01-15T20:00:00"      },      wafMatchNe: "-"      wafAttackFamilyNe: "-"    }    aggregate: {      count: rows    }    groupBy:[remoteAddress, wafAttackFamily]    orderBy:[count_DESC]  )  {    remoteAddress    wafAttackFamily    count  }}Onde:
| Campo | Descrição | 
|---|---|
limit | Especifica o número máximo de resultados a serem retornados. Neste caso, 5 | 
filter | Define os critérios usados para filtrar os dados retornados pela consulta | 
tsRange | Um subcampo de filter. Especifica um intervalo de tempo para filtrar os dados. Inclui campos begin e end para definir a data e hora de início e fim. Formato: "YYYY-MM-DDTHH:mm:ss"; exemplo: "2024-04-11T00:00:00" | 
wafMatchNe | Filtra entradas onde o campo wafMatch é igual a ”-”, significando que inclui apenas eventos com correspondências válidas do WAF | 
wafAttackFamilyNe | Filtra entradas onde o campo wafAttackFamily é igual a ”-”, garantindo que apenas eventos com famílias de ataque do WAF identificadas sejam incluídos | 
count: rows | Como um subcampo de aggregate, conta o número de eventos que correspondem aos filtros da consulta e agrupa | 
orderBy | Especifica a ordem em que os resultados devem ser retornados. Exemplos: [count_DESC], para ordem decrescente, e [count_ASC], para ordem crescente | 
groupBy | Especifica os campos pelos quais os resultados da consulta devem ser agrupados. No exemplo: [remoteAddress, wafAttackFamily] para agrupar por IP e pela família de ataques detectados pelo WAF | 
- Você receberá uma resposta semelhante a esta:
 
{  "data": {    "httpEvents": [      {        "remoteAddress": "123.456.789.123",        "wafAttackFamily": "$SQL, $XSS",       "count": 1384      },       {        "remoteAddress": "987.654.321.123",        "wafAttackFamily": "$TRAVERSAL",       "count": 1224      },      {        "remoteAddress": "12.123.1.123",        "wafAttackFamily": "$SQL, $XSS",       "count": 1194      },       {        "remoteAddress": "123.321.123.321",        "wafAttackFamily": "$OTHERS",       "count": 690      },      {        "remoteAddress": "123.456.456.000",        "wafAttackFamily": "$RFI",       "count": 363      }    ]  }}Onde:
| Campo | Descrição | 
|---|---|
remoteAddress | Endereço IP da origem que gerou as requisições. Exemplo: 127.0.0.1 | 
wafAttackFamily | Categoria ou tipo de ataque detectado pelo Web Application Firewall (WAF), com base em suas características. Exemplo: $SQL, $RFI, $SQL, $XSS, $OTHERS | 
count | Requisições identificadas pelo WAF como ataques. Exemplo: 1194 |