Mitigación simple de bots malos con Signal Sciences

Hay un montón de actividad de bots en Internet. Cualquiera que tenga la tarea de defender sitios web de alto tráfico lo sabrá bien. Algunos bots son buenos y deseados; piense en los rastreadores de motores de búsqueda. Algunos bots son benignos, como los scripts que realizan llamadas API o monitorean la disponibilidad del sitio. Pero a menudo, los bots pueden ser una molestia que afecta el rendimiento o pueden ser completamente maliciosos. Estos son los bots "malos" que desearía poder bloquear fácilmente y no tratar más. En esta publicación, me gustaría compartir un enfoque automatizado simplista para implementar una mitigación de bots maliciosos bastante buena utilizando el Firewall de aplicaciones web (WAF) de Signal Sciences.
Definición de tipos de bots
Antes de entrar en detalles, me gustaría ofrecer cómo defino un bot y un bot malo. Un bot es cualquier cliente que realiza solicitudes a su sitio que no es un ser humano que utiliza un navegador web moderno. Los bots son scripts, herramientas de línea de comandos, programas, malware, etc., que funcionan de forma autónoma o son invocados por un ser humano. Lo que hace que un bot sea malo es su comportamiento. Por ejemplo, ¿está enviando cargas maliciosas o sondeando directorios y archivos privados?
Ejemplo de solicitud de bot:

Ejemplo de solicitud de bot defectuoso:
Identificación de robots
El primer paso es identificar cualquier bot que pueda estar sondeando, rastreando o hurgando en su sitio. Manteniendo las cosas simples, podemos usar un método muy rudimentario para identificar bots, simplemente basado en la longitud de la cadena del agente de usuario. Una cadena de agente de usuario es un encabezado de solicitud, establecido por el cliente, que permite que los servidores y los pares de red lo identifiquen. Los humanos normales que usan un navegador moderno siempre tendrán una longitud mínima de cadena de agente de usuario de algún número, x . Si bien los bots pueden falsificar la cadena de agente de usuario, la mayoría de los bots no lo hacen. Sus cadenas de agente de usuario tienden a ser mucho más cortas que una cadena de agente de usuario del navegador. Como resultado, podemos suponer que x menos un número n no es un ser humano, es un bot. Puede decidir su umbral de lo que deberían ser x y n .
Hay varias fuentes en Internet donde puede encontrar listas de cadenas de agentes de usuario. Aquí hay un ejemplo de una de estas fuentes:
- https://useragentstring.com/pages/Chrome/
- https://useragentstring.com/pages/Firefox/
- https://useragentstring.com/pages/Edge/

Con esta regla y señal en su lugar, vale la pena revisar los datos que produce a lo largo del tiempo. Puede proporcionar visibilidad al tráfico interesante del que quizás no haya tenido conocimiento anteriormente.
Resultados de ejemplo de la regla Bot:
Para obtener una explicación rápida de las reglas a nivel de empresa y las reglas a nivel de sitio si no está familiarizado con los conceptos. Las reglas aplicadas a nivel corporativo se pueden implementar en todos los sitios que ejecutan el agente de Signal Sciences. Las reglas aplicadas a nivel de sitio solo se implementan en los agentes para ese sitio en particular. Utilice la opción que tenga más sentido en su entorno.
Identificar bots malos
Ahora que puede identificar los bots, ¿cómo se comportan? En Signal Sciences, podemos crear otro nivel corporativo simple para definir el mal comportamiento de los bots. La primera condición para esta regla busca la señal de Bot y la segunda condición busca cualquier cantidad de ataques, anomalías o señales personalizadas. Puede ajustar fácilmente la regla para incluir señales que tengan más sentido para su escenario. En el siguiente ejemplo, también incluimos una coincidencia de lista de IP con datos de inteligencia de amenazas. Para resumir la regla, si es un bot y está haciendo una cantidad de cosas malas, entonces es un bot malo y agregue la señal "Bot malo" a la solicitud.

Resultados de ejemplo de la regla Bad Bot:
Aplicación
El paso final es crear nuestra regla de aplicación, ya sea un límite de tasa o una regla de bloqueo. Tenga en cuenta que las reglas de límite de frecuencia se aplican en el nivel del sitio. Se puede implementar una regla de bloqueo a nivel de empresa o de sitio y bloqueará todo el tráfico con la señal de Bad Bot. Tenga cuidado con este nivel de bloqueo agresivo. Considere monitorear los datos a lo largo del tiempo para asegurarse de que la regla de bloqueo no afecte el tráfico de producción legítimo. Alternativamente, una regla de límite de velocidad brinda flexibilidad para determinar su nivel de tolerancia antes de bloquear el tráfico de bots dañinos. En el ejemplo a continuación, la condición de la regla de límite de tasa es en cualquier solicitud con la señal de Bad Bot y comenzará a bloquearse después de ver 10 señales de Bad Bot en 1 minuto. La decisión de bloqueo estará activa durante 5 minutos. El umbral de conteo y la duración de la acción se pueden modificar fácilmente a los valores deseados.
Conclusión
Aprovechar la longitud de la cadena del agente de usuario para la detección de bots es un enfoque simple y, según mi experiencia, efectivo para identificar la mayoría del tráfico de bots. Al determinar la longitud de la cadena de agente de usuario para su escenario, identificar el mal comportamiento y aplicar la limitación de velocidad, tendrá un comienzo sólido para mitigar el tráfico de bots no deseado. Signal Sciences hace que este enfoque sea fácil de implementar con su capacidad de reglas. Sin embargo, si no tiene Signal Sciences, dado este enfoque simple, valdría la pena explorar la capacidad de las herramientas que tiene disponibles para identificar bots, bots malos y aplicación.