Cualquier proyecto de Internet, ya sea una vieja entrada en un blog o una nueva aplicación web, tiene una característica de funcionamiento muy importante llamada "carga máxima". Este indicador se da a conocer cuando una aplicación web, ya sea de forma parcial o completa, no logra cumplir con sus funciones asignadas para procesar las solicitudes del usuario. Para algunas personas, esto implica la pérdida de sus lectores del blog y, para otros, la de clientes que acaban escogiendo a la empresa rival que tiene una tienda en Internet en funcionamiento.
Cada recurso de Internet tiene su propia carga máxima respecto a la cantidad de solicitudes de usuario que puede procesar en un determinado momento. Es por eso que los desarrolladores y los dueños de aplicaciones web prestan especial atención a las pruebas de procedimientos de carga y de estrés.
Los servicios para probar las cargas hoy en día son muy útiles, pero a veces la forma en que están organizados dejan una abertura que los cibercriminales pueden aprovechar.
Pruebas de carga y estrés
Las pruebas de carga de los sistemas de datos son un procedimiento que evalúa las características de funcionamiento del sistema, que se pone a prueba sin alcanzar su carga máxima. La prueba de estrés, al contrario, es un procedimiento similar, pero evalúa al sistema con cargas que equiparan o exceden su carga máxima. En la mayoría de los casos, los sistemas que se someten a pruebas de estrés sufren comportamientos indeseados o fallas de servicio, similares a las que sufren cuando son blanco de ataques DDoS.
Escenarios de las pruebas de carga que se utilizan en los sistemas de datos.
Como podemos ver en la ilustración de arriba, las pruebas de carga se realizan en un sistema menor al de la carga máxima, mientras que las de estrés y DDoS se realizan en niveles que superan el de la carga máxima. Pero los objetivos finales cuando se realizan pruebas de estrés y ataques DDoS son muy diferentes entre sí. El objetivo de las pruebas de estrés es determinar la carga máxima del sistema que se está poniendo a prueba, mientras que los ataques DDoS se realizan para determinar qué métodos se necesitan para perjudicar el funcionamiento del objetivo hasta hacerlo colapsar.
Las pruebas de estrés son un procedimiento crítico cuando el dueño de un sistema de datos quiere descubrir cómo se comportará su sistema si se enfrenta a cargas que superan las máximas. A veces se utilizan las pruebas de estrés cuando los dueños quieren determinar cuánto resistirán los recursos de seguridad de un sistema a un ataque DDoS.
Reconocimiento por fuego
Las pruebas de estrés son parte del proceso para aumentar la protección de recursos informáticos externos dentro de la infraestructura de los objetivos para obtener los siguientes resultados:
- Determinar la carga máxima de servicios externos. Si conocemos el punto en que nuestro sistema de datos dejará de funcionar, podemos reestructurar los procesos que tenemos o incluir unos nuevos para aumentar la seguridad. En otras palabras, el conocimiento es poder.
- Probar la seguridad de los servicios externos en situaciones específicas que quieren desactivar el servicio con ataques distribuidos. Si vemos nuestros propios proyectos con los ojos de un usuario malicioso, podemos sacar algunas conclusiones sobre la necesidad de incluir protecciones anti-DDoS o para mejorar de alguna manera la efectividad de soluciones ya implementadas.
A diferencia de otras etapas del desarrollo de proyectos web, ya sea quitar los errores de una aplicación o hacer pruebas de funcionamiento (para ver cuán bien funcionan sus características), las pruebas de carga son importantes por una razón diferente que no es menos importante: se realizan en el mismo sistema de datos mientras se ejecuta. Hacer la prueba sobre una copia no sería práctico (a no ser que ese procedimiento de pruebas forme parte de los procesos de desarrollo de un proyecto de alta carga). Para tener una idea más clara sobre el funcionamiento del proyecto, hay que verlo en acción. Asimismo, probar un proyecto que está en funcionamiento podría causar una pérdida temporal del servicio de un proceso de negocios particular, lo que puede conllevar a una verdadera falla de servicio y todo lo que esto implica.
Es por eso, para probar aplicaciones web o recursos de datos externos accesibles por Internet (como servidores de correo, servicios FTP, etc.), que se han desarrollado servicios de pruebas en Internet, y en verdad hacen un buen trabajo.
Pruebas de estrés
El concepto de poner estas pruebas “como servicio” ofrece a los dueños de aplicaciones web una cosa menos de qué preocuparse en cuanto a la personalización de sistemas de prueba de carga complejos, preparación de una infraestructura en la nube y otras acciones relacionadas. Todo sucede en segundo plano, y ahora se ofrece como un servicio en línea: sólo ingresa tu nombre de usuario y contraseña y haz los pagos respectivos para saber más sobre el poder de tu ordenador, y descubre cómo tu proyecto web se comportará en diferentes situaciones.
Configuración de las pruebas de cargas en uno de los proyectos que se está poniendo a prueba: establecemos situaciones de carga, subimos la carga a su máxima capacidad, pagamos por los servicios de los recursos de prueba y recibimos un informe completo.
Ahora, el dueño de un recurso web sólo tiene que inscribirse en cualquiera de estos servicios para descubrir cómo se comportaría su proyecto si tuviera que lidiar con volúmenes de carga inusuales. Y, para los que quieren dedicarle menos tiempo, algunos servicios de prueba de cargas hasta ofrecen una prueba básica (que no requiere inscripción) y, aunque el servicio no es tan sólido, puede darte un vistazo general de la interfaz del servicio.
El informe de pruebas incluye una gran cantidad de datos estadísticos; es decir, la intensidad con la que se cargó durante las pruebas.
Resultado de las pruebas de carga de una aplicación web usando un servicio web.
Las pruebas de carga como servicio web son sin duda una herramienta muy útil y práctica. Pero la forma en la que se llevan a cabo no es tan inofensiva como parecería a primera vista.
¿Pruebas o DDoS?
Echemos un vistazo a uno de estos servicios de pruebas de cargas, pero desde el punto de vista de un usuario malicioso. Imaginemos que no nos preocupa para nada el aspecto ético de que un ataque distribuido deje sin conexión a un servicio, y que nuestra única meta es hacer que el recurso web de un competidor deje de funcionar. ¿Podemos lograrlo sólo usando servicios de pruebas de carga de Internet?
Como experimento, escogí varios servicios de pruebas populares y usé mi propio blog, que funciona en el servicio en la nube de Amazon EC2, que no es para nada malo. Resulta que, aun cuando usaba el modo de pruebas gratuito, que ofrece una cantidad muy pequeña de servicios de recursos computacionales, la carga era suficiente para congestionar el tiempo de respuesta de mi blog.
El modo de evaluación de un servicio de pruebas de carga puede imitar las visitas de hasta 10.000 usuarios al mes, lo que sería fatal para muchos proyectos web de pequeña escala. Hasta 50 usuarios en un intervalo de tres minutos pueden causar problemas a algunos proyectos básicos de Internet.
Además, muchos servicios de pruebas de carga por Internet no solicitan ninguna confirmación de que quien está realizando las pruebas es de verdad el dueño del recurso web y no un usuario malicioso, y no hay solicitudes adicionales de identificación más allá de un número de teléfono o de tarjeta de crédito.
De los seis servicios de pruebas en línea que revisamos, sólo uno pide al usuario que suba un archivo especial al recurso que se pondrá a prueba: cuando el servicio consigue acceder a ese recurso, confirma que de verdad es el administrador quien está poniendo a prueba el proyecto. Es más, dos de los servicios de pruebas en Internet que revisamos permiten que los usuarios realicen pruebas de carga sin ningún tipo de inscripción: todo lo que debes hacer es escribir la URL del objeto de pruebas.
La facilidad de uso de estas herramientas hace que cualquiera pueda “probar” un sitio web ajeno o algún otro proyecto sin necesidad de inscribirse y sin el consentimiento del dueño del recurso. El hecho de que puedas probar cualquier recurso de Internet sin haberte inscrito ni hecho ningún pago convierte a este tipo de servicios en una herramienta muy atractiva para lanzar ataques DDoS.
Pruebas de carga en un recurso de Internet usando un servicio que no requiere inscripción Sólo visita el sitio, escribe la URL del recurso que quieres poner a prueba y revisa el informe con el resultado.
Amenazas posibles
Es nuestra opinión que los servicios de pruebas de carga sirven como herramienta para llevar a cabo ataques DDoS de forma anónima. La facilidad de la creación de las situaciones de carga y la simplicidad y fácil manejo de estos servicios, combinados con la cantidad de recursos computacionales son lo que a fin de cuentas define este tipo de "red zombi". Los usuarios malintencionados pueden crear sin ningún problema cuentas independientes y coordinar “pruebas de carga” simultáneas en un mismo sitio.
Sabemos que los ataques DDoS más efectivos son aquellos en los que es prácticamente imposible distinguir el tráfico legítimo del ilegítimo (generado por bots). Basta imaginar que el número de lectores del blog ha aumentado de 100 al día a 100.000, y que todos se comportan como un usuario común: dedican tiempo a revisar el contenido de cada página, quieren publicar comentarios, revisar fotografías y además están ubicados en diferentes regiones. ¿Cómo puede un blogger sin conocimientos de este tipo diferenciar a los usuarios reales de los impostores?
Algunos servicios ofrecen una prueba de carga de muestra que no requiere de ningún tipo de inscripción, y eso significa que el dueño de una pequeña red zombi de sólo 50 o 100 equipos puede usar estos servicios para aumentar el poder de un ataque DDoS cientos de veces. Un solo bot puede generar 10 solicitudes independientes para una prueba de carga con diferentes servicios web. Esto significa que pueden generar cientos de solicitudes de forma independiente. ¿El resultado? El blanco de este ataque se saturará por el volumen de lo que parece tráfico "legítimo".
¿Qué se puede hacer?
¿Cómo se puede prevenir el uso ilegítimo de servicios de prueba en Internet? Para comenzar, hay que indicar que los dueños de estos servicios se han quitado de encima cualquier responsabilidad en el acuerdo del usuario:
<i>“El uso de este servicio y su capacidad de producir resultados precisos y efectivos depende en gran parte de la experiencia que tenga el usuario operándolo. Por lo tanto, usted debe responsabilizarse de que es lo suficientemente competente como para escribir los scripts necesarios para que el servicio le dé resultados óptimos…”</i>
En otras palabras: eres responsable de tus propias acciones.
Eso no significa que sea imposible evitar el uso ilegal de este tipo de servicios. Los servicios de pruebas de carga en Internet deberían, por lo menos, solicitar el consentimiento de los dueños de los recursos que se van a evaluar. Por ejemplo, pueden pedir que publiquen un código único o un anuncio especial en el recurso que se analizará y sólo realizar la prueba después de confirmar que el código sea válido. Los servicios de pruebas en Internet también pueden utilizar claves CAPTCHA cuando trabajen con un recurso web. Este tipo de servicios de verificación básicos haría que sea mucho más difícil para los bots enviar solicitudes automáticas para generar e inflar la carga de un recurso web.
Bajo presión