Konstantin Ryabtsev, administrador de infraestructura de kernel.org, publicó los resultados del análisis de tráfico del servicio git.kernel.org, que permite visualizar el contenido de repositorios git de proyectos relacionados con el desarrollo del núcleo de Linux. Diariamente, el servicio procesa aproximadamente 6 millones de solicitudes de información sobre commits, de las cuales el 66% son bots que se logran bloquear con el sistema Anubis. El 33% de las solicitudes pasan la verificación del sistema Anubis, que permite la entrada solo después de que se haya adivinado en JavaScript un valor cuyo hash SHA-256, combinado con una cadena emitida por el servidor, contiene un número determinado de ceros a la izquierda (esta tarea requiere recursos de CPU para la solución, pero no requiere recursos para la verificación).
Es imposible determinar con exactitud quiénes de ese 33% son personas y quiénes son bots avanzados, pero por la naturaleza de las solicitudes se ha concluido que la proporción total de solicitudes legítimas es aproximadamente el 2%, mientras que el 98% restante son scrapers. Uno de los signos de los bots son las solicitudes directas de commits antiguos en ramas aleatorias, que es poco probable que sean necesarias para las personas en su trabajo. La actividad de los bots crea una enorme carga parasitaria en servidores ya que en lugar de cargar todo el código y el historial de commits una sola vez a través de la operación «git clone», los bots envían miles de millones de solicitudes, probando todas las posibles variaciones de acceso a través de la interfaz web y solicitando repetidamente los mismos datos con diferentes parámetros.
El bloqueo de bots por direcciones IP y sistemas autónomos dejó de funcionar bastante rápido, ya que los bots comenzaron a enviar solicitudes desde millones de direcciones IP aleatorias de redes domésticas o móviles, obtenidas a partir de la actividad de botnets o monetización de extensiones de navegador. Desde cada dirección se envían solo 4-5 solicitudes, por lo que bloquearlas a nivel de cortafuegos es inútil.
Durante un tiempo, el sistema Anubis ayudó a bloquear los bots, pero con el tiempo los bots se adaptaron para ejecutar los cálculos propuestos en Anubis. Entre otras cosas, los bots aprendieron a resolver problemas de nivel 5 de dificultad, y luego aumentar el nivel se vuelve problemático, ya que incluso el quinto nivel requiere varios segundos de cálculos y molesta mucho a los usuarios legítimos.
En consecuencia, se gasta más recursos en la atención a las solicitudes de los scrapers en la infraestructura de kernel.org que en todos los demás tipos de operaciones legítimas, incluyendo «git clone». En 5 como en entornos de nube públicos o privados., que sirven a git.kernel.org, en cualquier momento entre 14 y 16 de los 90 núcleos de CPU disponibles están constantemente ocupados mostrando los git commits para los bots. Para reducir la carga, los administradores ahora están tratando de restringir las capacidades del servicio, desactivar algunas operaciones que consumen muchos recursos, limitar el acceso anónimo y disminuir el número de enlaces disponibles para la navegación.
Fuente: opennet.ru
