Constantin Riabcev, administrador da infraestrutura do kernel.org, publicou os resultados da análise de tráfego do serviço git.kernel.org, que permite visualizar o conteúdo dos repositórios git dos projetos relacionados ao desenvolvimento do núcleo do Linux. Diariamente, o serviço processa cerca de 6 milhões de requisições de informações sobre commits, das quais 66% são de bots, que podem ser bloqueados pela sistema Anubis. 33% das requisições passam pela verificação do sistema Anubis, que permite a entrada apenas após um desafio em JavaScript, cuja solução, com um hash SHA-256 combinado com uma string fornecida pelo servidor, contém um número específico de zeros à frente (essa tarefa requer recursos de CPU para ser resolvida, mas não necessita de recursos para verificação).
Não é possível determinar precisamente quem, dentre esses 33%, são humanos e quem são bots avançados, mas pela natureza das requisições, chegou-se à conclusão de que a parte total de requisições legítimas é de cerca de 2%, enquanto os outros 98% são de scrapers. Um dos sinais de bots são as requisições diretas a commits antigos em ramos aleatórios, que é improvável que sejam úteis para as pessoas no trabalho. A atividade dos bots cria uma enorme carga parasitária sobre servidores já que, em vez de baixar todo o código e a história dos commits de uma só vez através da operação 'git clone', os bots enviam bilhões de requisições, tentando todas as variações de acesso através da interface web e solicitando repetidamente os mesmos dados com parâmetros diferentes.
O bloqueio de bots por endereços IP e sistemas autônomos rapidamente deixou de funcionar, pois os bots começaram a enviar requisições de milhões de endereços IP aleatórios de redes domésticas ou móveis, obtidos através da atividade de botnets ou monetização de extensões de navegador. De cada endereço, são enviadas apenas 4-5 requisições, tornando o bloqueio no nível do firewall inútil.
Por um tempo, o sistema Anubis ajudou a bloquear os bots, mas com o tempo os bots se adaptaram para realizar os cálculos propostos no Anubis. Entre outras coisas, os bots aprenderam a resolver problemas de nível 5 de dificuldade, e aumentar o nível se torna problemático, pois mesmo o quinto nível exige alguns segundos de cálculos e irrita muito os usuários legítimos.
Como resultado, a manutenção das solicitações dos scrapers na infraestrutura do kernel.org consome mais recursos do que todas as outras operações legítimas, incluindo o "git clone". Em 5 servidores, dos 90 núcleos de CPU que atendem ao git.kernel.org, a qualquer momento, 14 a 16 estão constantemente ocupados exibindo commits do git para bots. Para reduzir a carga, os administradores agora estão tentando limitar as capacidades do serviço, desativar algumas operações que consomem muitos recursos, restringir o acesso anônimo e reduzir o número de links disponíveis para navegação.
Fonte: opennet.ru
