Como investigar requisições com a API GraphQL de Real-Time Events GraphQL API
Um monitoramento constante pode ajudá-lo a identificar comportamentos incomuns em suas aplicações e possíveis ataques. Para este guia, você usará um cenário de exemplo em que há requisições vindas do Brasil, um país do qual você não deseja permitir acesso, e você deseja filtrar as requisições do Chile, o país de onde vêm a maioria das requisições seguras.
Veja os passos descritos neste guia para investigar requisições e os próximos passos para resolver a situação se estiver sendo atacado.
Use o playground da API GraphQL para investigação
- Certifique-se de estar logado na sua conta Azion, via Real-Time Manager ou via Console.
- Acesse o playground da API GraphQL do Real-Time Events nesse link
https://manager.azion.com/events/graphql
.
- Você deve estar logado na sua conta Azion. Caso contrário, você receberá uma mensagem de erro.
- Crie uma query com o filtro e o intervalo de tempo que deseja usar.
Passo 1. Investigue países
Inicie sua investigação com uma query focada nos países que estão fazendo requisições.
- Entre no playground no link
https://manager.azion.com/events/graphql
da API GraphQL Real-Time Events, adicione a seguinte query:
- Execute a query no playground da API GraphQL.
- Você receberá uma resposta semelhante a esta:
- Analise a resposta da query e verifique se existem requisições vindas dos países que você não deseja permitir. Neste caso, do Brasil.
Se você estiver executando uma query de investigação geral, pode verificar se o mesmo país que normalmente não acessa sua aplicação fez uma quantidade anormal de requisições para o seu host em um curto período de tempo, como no mesmo minuto. Este é um indicador comum de que sua aplicação está sendo atacada.
Crie uma network list
Depois de identificar um país ao qual você não deseja permitir acesso à sua aplicação, você pode criar uma network list para bloquear o país.
- Acesse Console da Azion > Network Lists.
- Clique em + Network List.
- Dê um nome único e fácil de lembrar para sua network list.
- Em Type, escolha Countries.
- Em Countries, selecione os países que você deseja adicionar à lista. Neste caso, Brazil.
Para que sua network list funcione, você precisa ir para Edge Firewall > Rules Engine e criar uma regra associada à lista de rede que você acabou de criar.
Consulte o guia de associar uma network list a uma regraApós o tempo de propagação da regra, seu domínio, associado ao edge firewall ao qual você adicionou na lista, bloqueará todas as requisições desse país. Neste caso, Brasil.
Monitore no playground novamente
Após criar a regra no Rules Engine para Edge Firewall, você precisa continuar monitorando o tráfego de sua aplicação para garantir que a regra tenha sido aplicada e que o tráfego da aplicação esteja normalizado.
Em sua query, atualize o tsRange
para corresponder ao período após você ter criado a regra. Lembre-se de dar tempo para propagar.
Agora, na resposta da query para o exemplo deste guia, as requisições vindas do Brasil devem ter um status
indicando bloqueio, como 403
.
Passo 2. Investigue o header User-Agent
A seguir, você investigará o header User-Agent
sendo usado nas requisições dos países que você bloqueou, para criar outras regras e melhorar ainda mais sua segurança.
- No playground da API GraphQL Real-Time Events, execute a seguinte query:
Você receberá uma resposta semelhante a esta:
- Analise a resposta da query e encontre o header
User-Agent
sendo usado pela requisição que você deseja bloquear. - Crie uma regra no Rules Engine para Edge Firewall para bloqueá-lo.
Crie uma regra no Rules Engine para Edge Firewall
Os atacantes podem alterar o país de onde vêm suas requisições, então, ao bloquear o header User-Agent
, você adicionará mais uma camada de proteção contra ataques conhecidos.
Neste exemplo, o User-Agent
Ubuntu será usado.
- Acesse o Console > Edge Firewall.
- Selecione um edge firewall existente ou crie um novo.
- Selecione a aba Rules Engine no edge firewall selecionado.
- Dê um nome à sua regra.
- Em Criteria, adicione o critério
if Header User Agent matches Ubuntu
. - Em Behaviors, selecione Deny (403 Forbidden).
Outras opções de configuração de segurança
Se você não quiser bloquear todas as requisições de um país por meio de uma network list, existem outros recursos dos produtos de Secure da Azion que você pode usar.
- Crie uma regra com o Set Rate Limit.
- Use WAF Tuning para monitorar e criar allowed rules específicas.
Se você usar outras configurações, modifique os filtros da sua query na API GraphQL para corresponder às outras configurações. Por exemplo, usando o campo stacktrace
ou adicionando outro status, como 429
para a regra de Set Rate Limit.
Outras queries de monitoramento
Aqui estão algumas outras opções de queries que você pode usar para investigar e monitorar ataques: