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:

  1. Acesse o GraphiQL Playground neste link: https://manager.azion.com/metrics/graphql.
    • Você deve estar logado na sua conta Azion. Caso contrário, você receberá uma mensagem de erro.
  2. 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:

CampoDescrição
limitEspecifica o número máximo de resultados a serem retornados. Neste caso, 5
filterDefine os critérios usados para filtrar os dados retornados pela consulta
tsRangeUm 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"
wafMatchNeFiltra entradas onde o campo wafMatch é igual a ”-”, significando que inclui apenas eventos com correspondências válidas do WAF
wafAttackFamilyNeFiltra entradas onde o campo wafAttackFamily é igual a ”-”, garantindo que apenas eventos com famílias de ataque do WAF identificadas sejam incluídos
count: rowsComo um subcampo de aggregate, conta o número de eventos que correspondem aos filtros da consulta e agrupa
orderByEspecifica a ordem em que os resultados devem ser retornados. Exemplos: [count_DESC], para ordem decrescente, e [count_ASC], para ordem crescente
groupByEspecifica 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
  1. 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:

CampoDescrição
remoteAddressEndereço IP da origem que gerou as requisições. Exemplo: 127.0.0.1
wafAttackFamilyCategoria ou tipo de ataque detectado pelo Web Application Firewall (WAF), com base em suas características. Exemplo: $SQL, $RFI, $SQL, $XSS, $OTHERS
countRequisições identificadas pelo WAF como ataques. Exemplo: 1194

Contribuidores