Mitigação Simples de Bots Ruins com Signal Sciences

Nov 29 2022
Há uma tonelada de atividade de bot na Internet. Qualquer pessoa encarregada de defender sites de alto tráfego saberá disso muito bem.
Foto de Owen Beard no Unsplash

Há uma tonelada de atividade de bot na Internet. Qualquer pessoa encarregada de defender sites de alto tráfego saberá disso muito bem. Alguns bots são bons e desejados – pense em rastreadores de mecanismos de pesquisa. Alguns bots são benignos, como scripts que fazem chamadas de API ou monitoram a disponibilidade do site. Mas, muitas vezes, os bots podem ser um incômodo que afeta o desempenho ou totalmente maliciosos. Esses são os bots “ruins” que você gostaria de poder bloquear facilmente e não lidar mais com eles. Nesta postagem, gostaria de compartilhar uma abordagem automatizada simplista para implementar uma boa mitigação de bot ruim usando o Signal Sciences Web Application Firewall (WAF).

Definindo tipos de bot

Antes de entrar em detalhes, gostaria de oferecer como defino um bot e um bot ruim. Um bot é qualquer cliente que faz solicitações ao seu site que não seja um humano operando um navegador moderno. Portanto, bots são scripts, ferramentas de linha de comando, programas, malware, etc., que operam de forma autônoma ou são invocados por um ser humano. O que torna um bot ruim é seu comportamento. Por exemplo, está enviando cargas maliciosas ou sondando diretórios e arquivos privados?

Exemplo de solicitação de bot:

Um bot de anúncios do Google enviando uma solicitação benigna

Exemplo de solicitação de bot inválido:

Uma ferramenta de verificação enviando solicitações maliciosas

Identificando bots

A primeira etapa é identificar qualquer bot que possa estar sondando, rastreando ou cutucando seu site. Mantendo as coisas simples, podemos usar um método muito rudimentar para identificar bots - simplesmente com base no comprimento da string do agente do usuário. Uma string de agente do usuário é um cabeçalho de solicitação, definido pelo cliente, que permite que servidores e pares de rede o identifiquem. Humanos normais usando um navegador moderno sempre terão um comprimento mínimo de string de agente do usuário de algum número, x . Embora os bots possam falsificar a string do agente do usuário, a maioria dos bots não o faz. Suas strings de user-agent tendem a ser muito mais curtas do que uma string de user-agent do navegador. Como resultado, podemos assumir que x menos algum número n não é humano — é um bot. Você pode decidir seu limite do que x e n devem ser.

Existem várias fontes na Internet onde você pode encontrar listas de strings de agente do usuário. Aqui está um exemplo de uma dessas fontes:

  • https://useragentstring.com/pages/Chrome/
  • https://useragentstring.com/pages/Firefox/
  • https://useragentstring.com/pages/Edge/

Com essa regra e sinal em vigor, vale a pena revisar os dados que ela produz ao longo do tempo. Ele pode fornecer visibilidade ao tráfego interessante que você talvez não conhecesse anteriormente.

Exemplo de resultados da regra Bot:

Para obter uma explicação rápida das regras de nível corporativo e regras de nível de site, se você não estiver familiarizado com os conceitos. As regras aplicadas no nível corporativo podem ser implementadas em todos os sites que executam o agente Signal Sciences. As regras aplicadas no nível do site são implementadas apenas nos agentes desse site específico. Use a opção que fizer mais sentido no seu ambiente.

Identificar bots ruins

Agora que você pode identificar os bots, como eles estão se comportando? Em Signal Sciences, podemos criar outro nível corporativo simples para definir o mau comportamento dos bots. A primeira condição para esta regra procura o sinal do Bot e a segunda condição procura qualquer número de ataques, anomalias ou sinais personalizados. Você pode ajustar facilmente a regra para incluir sinais que façam mais sentido para o seu cenário. No exemplo abaixo, também incluímos uma correspondência de lista de IP com dados de inteligência de ameaças. Para resumir a regra, se for um Bot e estiver fazendo várias coisas ruins, então é um bot ruim e adicione o sinal “Bad Bot” à solicitação.

Exemplo de resultados da regra Bad Bot:

Execução

A etapa final é criar nossa regra de imposição, seja um limite de taxa ou uma regra de bloqueio. Observe que as regras de limite de taxa são aplicadas no nível do site. Uma regra de bloqueio pode ser implementada no nível corporativo ou no nível do site e bloqueará todo o tráfego com o sinal Bad Bot. Tenha cuidado com este nível de bloqueio agressivo. Considere monitorar os dados ao longo do tempo para garantir que a regra de bloqueio não afetaria o tráfego de produção legítimo. Como alternativa, uma regra de limite de taxa fornece flexibilidade para determinar seu nível de tolerância antes de bloquear o tráfego de Bad Bot. No exemplo abaixo, a condição da regra de limite de taxa está em qualquer solicitação com o sinal Bad Bot e começará a bloquear depois de ver 10 sinais Bad Bot dentro de 1 minuto. A decisão de bloqueio ficará ativa por 5 minutos. O limite de contagem e a duração da ação podem ser facilmente modificados para os valores desejados.

Conclusão

Aproveitar o tamanho da string do agente do usuário para detecção de bot é uma abordagem simples e, em minha experiência, eficaz para identificar a maior parte do tráfego de bot. Ao determinar o comprimento da string do user-agent para o seu cenário, identificando o mau comportamento e aplicando a limitação de taxa, você terá um começo sólido para mitigar o tráfego indesejado de bots. A Signal Sciences torna essa abordagem fácil de implementar com sua capacidade de regras. No entanto, se você não tiver Signal Sciences, considerando essa abordagem simples, valeria a pena explorar a capacidade das ferramentas disponíveis para identificar bots, bots ruins e aplicação.