{"id":31924,"date":"2019-10-31T21:44:01","date_gmt":"2019-10-31T18:44:01","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy\/"},"modified":"2019-10-31T21:44:01","modified_gmt":"2019-10-31T18:44:01","slug":"ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","title":{"rendered":"DDoS como ayuda: c\u00f3mo realizamos pruebas de estr\u00e9s y carga","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"DDoS como ayuda: c\u00f3mo realizamos pruebas de estr\u00e9s y carga\" src=\"\/wp-content\/uploads\/2019\/04\/9e01506f9103d69af131c7a419b10e42.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>La empresa Variti desarrolla protecci\u00f3n contra bots y ataques DDoS, as\u00ed como realiza pruebas de estr\u00e9s y carga. En la conferencia HighLoad++ 2018, hablamos sobre c\u00f3mo proteger los recursos de diversos tipos de ataques. En resumen: a\u00edsle partes del sistema, utilice servicios en la nube y CDN, y mant\u00e9ngase actualizado regularmente. Pero sin empresas especializadas en protecci\u00f3n, usted a\u00fan no podr\u00e1 manejarlo \ud83d\ude42<\/i><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAntes de leer el texto, puede consultar un resumen breve <noindex><a rel=\"nofollow\" href=\"http:\/\/www.highload.ru\/moscow\/2018\/abstracts\/4201\">en el sitio web de la conferencia<\/a><\/noindex>.<br \/>\nY si no le gusta leer o simplemente quiere ver el video, la grabaci\u00f3n de nuestra presentaci\u00f3n est\u00e1 a continuaci\u00f3n bajo el spoiler.<\/p>\n<p><b class=\"spoiler_title\">Grabaci\u00f3n del informe<\/b><center><div class=\"youtube-placeholder\" data-id=\"Lu4tsUvfYRc\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/Lu4tsUvfYRc\/hqdefault.jpg\" alt=\"Reproducir video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Muchas empresas ya saben c\u00f3mo realizar pruebas de carga, pero no todas hacen pruebas de estr\u00e9s. Algunos de nuestros clientes piensan que su sitio es invulnerable porque tienen un sistema de alta carga, y este protege bien contra ataques. Sin embargo, nosotros mostramos que esto no es del todo cierto. <br \/>\nPor supuesto, antes de realizar las pruebas, obtenemos permiso del cliente, con firma y sello, y con nuestra ayuda, no se puede realizar un ataque DDoS a nadie. La prueba se lleva a cabo en el momento elegido por el cliente, cuando la asistencia a su recurso es m\u00ednima, y los problemas de acceso no afectar\u00e1n a los clientes. Adem\u00e1s, dado que en el proceso de prueba siempre puede salir algo mal, mantenemos contacto constante con el cliente. Esto permite no solo informar sobre los resultados alcanzados, sino tambi\u00e9n hacer ajustes durante la prueba. Al finalizar la prueba, siempre elaboramos un informe en el que se\u00f1alamos las deficiencias encontradas y damos recomendaciones para corregir los puntos d\u00e9biles del sitio. <\/p>\n<h3>C\u00f3mo trabajamos<\/h3>\n<p>\nAl realizar las pruebas, emulamos una botnet. Dado que trabajamos con clientes que no se encuentran en nuestras redes, para que la prueba no finalice en el primer minuto debido a l\u00edmites o protecciones activadas, generamos carga no desde una IP, sino desde nuestra propia subred. Adem\u00e1s, para crear una carga considerable, contamos con nuestro propio servidor de pruebas bastante potente.<\/p>\n<h3>Postulados<\/h3>\n<p><\/p>\n<blockquote><p><b>Mucho no significa bien<\/b><br \/>\nCuanto menor sea la carga que podamos llevar al recurso hasta el fallo, mejor. Si logramos que el sitio deje de funcionar con una solicitud por segundo, o incluso con una solicitud por minuto, ser\u00eda excelente. Porque, por ley de Murphy, los usuarios o delincuentes acabar\u00e1n cayendo en esa vulnerabilidad. <\/p><\/blockquote>\n<blockquote><p><b>Un fallo parcial es mejor que un fallo total.<\/b><br \/>\nSiempre aconsejamos que los sistemas sean heterog\u00e9neos. Adem\u00e1s, deben separarse a nivel f\u00edsico, no solo a trav\u00e9s de la contenedorizaci\u00f3n. En caso de separaci\u00f3n f\u00edsica, incluso si algo falla en el sitio, es probable que no deje de funcionar por completo, y los usuarios mantendr\u00e1n al menos un acceso parcial a la funcionalidad.<\/p><\/blockquote>\n<blockquote><p><b>La arquitectura correcta es la base de la resiliencia.<\/b><br \/>\nLa resiliencia del recurso y su capacidad para soportar ataques y cargas deben incorporarse desde la fase de dise\u00f1o, de hecho, desde el momento en que se dibujan los primeros diagramas de bloques en un cuaderno. Porque si se cometen errores fatales, se pueden corregir m\u00e1s adelante, pero ser\u00e1 muy dif\u00edcil.<\/p><\/blockquote>\n<blockquote><p><b>No solo el c\u00f3digo debe ser bueno, tambi\u00e9n la configuraci\u00f3n.<\/b><br \/>\nMuchos piensan que un buen equipo de desarrollo garantiza la resiliencia del servicio. Un buen equipo de desarrollo es realmente necesario, pero tambi\u00e9n debe haber una buena operaci\u00f3n, un buen DevOps. Es decir, se necesitan especialistas que configuren Linux y la red correctamente, que redacten las configuraciones en nginx de manera adecuada, que configuren los l\u00edmites, etc. De lo contrario, el recurso solo funcionar\u00e1 bien en pruebas, pero en producci\u00f3n, en alg\u00fan momento, todo fallar\u00e1.<\/p><\/blockquote>\n<blockquote><p><b>Diferencias entre pruebas de carga y pruebas de estr\u00e9s.<\/b><br \/>\nLas pruebas de carga permiten identificar los l\u00edmites de funcionamiento del sistema. Las pruebas de estr\u00e9s se centran en encontrar los puntos d\u00e9biles del sistema y se utilizan para romper ese sistema y observar c\u00f3mo se comporta durante la falla de ciertas partes. Sin embargo, la naturaleza de la carga suele ser desconocida para el cliente antes de comenzar las pruebas de estr\u00e9s.<\/p><\/blockquote>\n<p><\/p>\n<h3>Caracter\u00edsticas distintivas de los ataques L7.<\/h3>\n<p>\nLos tipos de carga los dividimos normalmente en cargas de nivel L7 y L3&amp;4. L7 es carga a nivel de aplicaci\u00f3n, y con frecuencia se entiende solo HTTP, pero nosotros consideramos cualquier carga a nivel del protocolo TCP.<br \/>\nLos ataques L7 tienen ciertas caracter\u00edsticas distintivas. En primer lugar, se dirigen directamente a la aplicaci\u00f3n, lo que significa que es poco probable que se puedan mitigar mediante medios de red. Estos ataques utilizan l\u00f3gica y, gracias a eso, consumen de manera muy efectiva y con poco tr\u00e1fico, CPU, memoria, disco, base de datos y otros recursos.<\/p>\n<h3>Inundaci\u00f3n HTTP<\/h3>\n<p>\nEn el caso de cualquier ataque, es m\u00e1s f\u00e1cil generar la carga que manejarla, y esto tambi\u00e9n es cierto para L7. El tr\u00e1fico de ataque no siempre es f\u00e1cil de distinguir del leg\u00edtimo, y a menudo esto se logra por la frecuencia, pero si todo est\u00e1 bien planificado, es imposible determinar a partir de los registros d\u00f3nde est\u00e1 el ataque y d\u00f3nde est\u00e1n las solicitudes leg\u00edtimas. <br \/>\nComo primer ejemplo, consideremos el ataque de Inundaci\u00f3n HTTP. En el gr\u00e1fico se puede ver que, por lo general, estos ataques son muy potentes; en el ejemplo a continuaci\u00f3n, el n\u00famero m\u00e1ximo de solicitudes super\u00f3 los 600 mil por minuto.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS como ayuda: c\u00f3mo realizamos pruebas de estr\u00e9s y carga\" src=\"\/wp-content\/uploads\/2019\/04\/a2bcd4b2babbb3362a717f93a3f3d1b3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa Inundaci\u00f3n HTTP es la forma m\u00e1s simple de generar carga. Generalmente, se utiliza alguna herramienta de prueba de carga, como ApacheBench, y se establecen la solicitud y el objetivo. Con este enfoque sencillo, hay una alta probabilidad de encontrarse con el almacenamiento en cach\u00e9 del servidor, pero es f\u00e1cil de eludir. Por ejemplo, agregando cadenas aleatorias a la solicitud, lo que obligar\u00e1 al servidor a entregar una p\u00e1gina nueva constantemente. <br \/>\nTampoco hay que olvidar el user-agent al generar carga. Muchos user-agents de herramientas de prueba populares son filtrados por administradores de sistemas, y en tal caso, la carga puede simplemente no llegar al backend. Se puede mejorar significativamente el resultado al insertar en la solicitud un encabezado m\u00e1s o menos v\u00e1lido de un navegador. <br \/>\nA pesar de la simplicidad del ataque, la Inundaci\u00f3n HTTP tambi\u00e9n tiene sus desventajas. En primer lugar, se requieren grandes recursos para generar carga. En segundo lugar, estos ataques son muy f\u00e1ciles de detectar, especialmente si provienen de una sola direcci\u00f3n. Como resultado, las solicitudes comienzan a ser filtradas por administradores de sistemas o incluso a nivel del proveedor. <\/p>\n<h3>Qu\u00e9 buscar<\/h3>\n<p>\nPara reducir la cantidad de solicitudes por segundo sin perder eficiencia, es necesario ser un poco creativo e investigar el sitio web. As\u00ed, se puede cargar no solo el canal o el servidor, sino tambi\u00e9n partes espec\u00edficas de la aplicaci\u00f3n, como bases de datos o sistemas de archivos. Tambi\u00e9n se pueden buscar \u00e1reas en el sitio que realicen grandes c\u00e1lculos: calculadoras, p\u00e1ginas de selecci\u00f3n de productos, entre otros. Finalmente, a menudo hay alg\u00fan script php en el sitio que genera una p\u00e1gina a partir de cientos de miles de l\u00edneas. Este script tambi\u00e9n carga significativamente al servidor y puede convertirse en un objetivo de ataque.<\/p>\n<h3>D\u00f3nde buscar<\/h3>\n<p>\nCuando escaneamos un recurso antes de realizar pruebas, lo primero que miramos, por supuesto, es el propio sitio. Buscamos todo tipo de campos de entrada, archivos pesados, en resumen, todo lo que pueda causar problemas al recurso y ralentizar su funcionamiento. Aqu\u00ed ayudan las herramientas de desarrollo en Google Chrome y Firefox, que muestran los tiempos de respuesta de la p\u00e1gina. <br \/>\nTambi\u00e9n escaneamos subdominios. Por ejemplo, hay una tienda en l\u00ednea, abc.com, y tiene un subdominio admin.abc.com. Probablemente sea un panel de administraci\u00f3n con autenticaci\u00f3n, pero si se le aplica carga, puede causar problemas al recurso principal. <br \/>\nEl sitio puede tener un subdominio api.abc.com. Lo m\u00e1s probable es que sea un recurso para aplicaciones m\u00f3viles. Se puede encontrar la aplicaci\u00f3n en App Store o Google Play, establecer un punto de acceso especial, explorar la API y registrar cuentas de prueba. El problema es que a menudo las personas piensan que todo lo que est\u00e1 protegido por autenticaci\u00f3n es invulnerable a los ataques de denegaci\u00f3n de servicio. Supuestamente, la autenticaci\u00f3n es la mejor CAPTCHA, pero eso no es cierto. Crear 10-20 cuentas de prueba es sencillo, y al hacerlo, obtenemos acceso a funcionalidad compleja y sin proteger. <br \/>\nPor supuesto, miramos el historial, el robots.txt y WebArchive, ViewDNS, y buscamos versiones antiguas del recurso. A veces, ocurre que los desarrolladores lanzaron, digamos, mail2.yandex.net, y una versi\u00f3n antigua, mail.yandex.net, qued\u00f3. Este mail.yandex.net deja de ser mantenido, no se asignan recursos para su desarrollo, pero sigue consumiendo la base de datos. Por lo tanto, con la versi\u00f3n antigua se pueden utilizar eficazmente los recursos del backend y todo lo que est\u00e1 detr\u00e1s del dise\u00f1o. Claro, esto no sucede siempre, pero nos encontramos con algo similar con bastante frecuencia. <br \/>\nPor supuesto, analizamos todos los par\u00e1metros de la solicitud, la estructura de las cookies. Se podr\u00eda, por ejemplo, inyectar un valor en un array JSON dentro de una cookie, crear una gran anidaci\u00f3n y hacer que el recurso funcione de manera ineficaz durante mucho tiempo.<\/p>\n<h3>Carga en la b\u00fasqueda<\/h3>\n<p>\nLo primero que se me ocurre al investigar un sitio web es cargar la base de datos, ya que casi todos tienen una funci\u00f3n de b\u00fasqueda, y desafortunadamente, en muchos casos est\u00e1 mal protegida. Por alguna raz\u00f3n, los desarrolladores no prestan suficiente atenci\u00f3n a la b\u00fasqueda. Pero hay una recomendaci\u00f3n: no se deben hacer consultas homog\u00e9neas, porque se puede encontrar con problemas de almacenamiento en cach\u00e9, como en el caso de un ataque por inundaci\u00f3n HTTP. <br \/>\nHacer consultas aleatorias en la base de datos tampoco siempre es efectivo. Es mucho mejor crear una lista de palabras clave relacionadas con la b\u00fasqueda. Volviendo al ejemplo de una tienda en l\u00ednea: supongamos que el sitio vende neum\u00e1ticos para autom\u00f3viles y permite ajustar el radio de las llantas, el tipo de coche y otros par\u00e1metros. Por lo tanto, las combinaciones de palabras relevantes har\u00e1n que la base de datos funcione en condiciones mucho m\u00e1s complejas. <br \/>\nAdem\u00e1s, vale la pena utilizar paginaci\u00f3n: es mucho m\u00e1s complicado para una b\u00fasqueda devolver la pen\u00faltima p\u00e1gina de resultados que la primera. Es decir, mediante la paginaci\u00f3n se puede diversificar un poco la carga. <br \/>\nEn el ejemplo a continuaci\u00f3n mostramos la carga en la b\u00fasqueda. Se puede ver que desde el primer segundo de la prueba, a diez solicitudes por segundo, el sitio colaps\u00f3 y no respondi\u00f3.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS como ayuda: c\u00f3mo realizamos pruebas de estr\u00e9s y carga\" src=\"\/wp-content\/uploads\/2019\/04\/dd888d9f3cc0e5058ac9508cee8cc3d5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>\u00bfY si no hay b\u00fasqueda?<\/h3>\n<p>\nSi no hay b\u00fasqueda, no significa que el sitio no contenga otros campos de entrada vulnerables. Un campo de este tipo puede ser la autenticaci\u00f3n. Hoy en d\u00eda a los desarrolladores les gusta crear hashes complejos para proteger la base de datos de nombres de usuario de ataques de tablas arco\u00edris. Esto es bueno, pero tales hashes consumen muchos recursos de CPU. Un gran flujo de intentos de autenticaci\u00f3n falsos puede llevar a la sobrecarga del procesador, lo que resulta en que el sitio deje de funcionar. <br \/>\nLa presencia en el sitio de todo tipo de formularios para comentarios y retroalimentaci\u00f3n es una raz\u00f3n para enviar textos muy grandes o simplemente crear un gran spam. A veces, los sitios aceptan archivos adjuntos, incluidos aquellos en formato gzip. En tal caso, tomamos un archivo de 1TB, lo comprimimos a trav\u00e9s de gzip a unos pocos bytes o kilobytes y lo enviamos al sitio. Luego se descomprime y se obtiene un efecto muy interesante. <\/p>\n<h3>Rest API<\/h3>\n<p>\nMe gustar\u00eda dedicar un poco de atenci\u00f3n a servicios tan populares hoy en d\u00eda como el Rest API. Proteger un Rest API es mucho m\u00e1s complicado que proteger un sitio web ordinario. Incluso los m\u00e9todos b\u00e1sicos de protecci\u00f3n contra ataques de fuerza bruta y otras actividades ileg\u00edtimas no funcionan para un Rest API. <br \/>\nEs muy f\u00e1cil romper un Rest API porque se conecta directamente a la base de datos. Adem\u00e1s, la interrupci\u00f3n de este servicio puede tener consecuencias bastante graves para el negocio. Esto se debe a que el Rest API no solo est\u00e1 vinculado al sitio principal, sino tambi\u00e9n a aplicaciones m\u00f3viles y a ciertos recursos internos del negocio. Si todo esto falla, el efecto es mucho m\u00e1s fuerte que en el caso de un simple sitio web que deja de funcionar. <\/p>\n<h3>Carga de contenido pesado<\/h3>\n<p>\nSi nos proponen probar una aplicaci\u00f3n de una sola p\u00e1gina, una p\u00e1gina de aterrizaje o una tarjeta de visita con funcionalidad sencilla, buscamos contenido pesado. Por ejemplo, grandes im\u00e1genes que proporciona el servidor, archivos binarios, documentaci\u00f3n en PDF; intentamos descargar todo esto. Estas pruebas sobrecargan bien el sistema de archivos y saturan los canales, por lo que son efectivas. Es decir, incluso si no haces caer el servidor al descargar un archivo grande a velocidades bajas, simplemente saturar\u00e1s el canal del servidor objetivo y entonces ocurrir\u00e1 una denegaci\u00f3n de servicio. <br \/>\nEn el ejemplo de esta prueba, se puede ver que a una velocidad de 30 RPS el sitio dej\u00f3 de responder o dio errores de servidor 500.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS como ayuda: c\u00f3mo realizamos pruebas de estr\u00e9s y carga\" src=\"\/wp-content\/uploads\/2019\/04\/615e212d3a95b36a4f8c492d18508d7c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNo debemos olvidar la configuraci\u00f3n de los servidores. A menudo se puede ver que una persona compr\u00f3 una m\u00e1quina virtual, instal\u00f3 Apache, lo configur\u00f3 todo por defecto, coloc\u00f3 una aplicaci\u00f3n PHP y abajo se puede ver el resultado. <\/p>\n<p><img decoding=\"async\" alt=\"DDoS como ayuda: c\u00f3mo realizamos pruebas de estr\u00e9s y carga\" src=\"\/wp-content\/uploads\/2019\/04\/532a478528f8cd80285209f654411b79.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAqu\u00ed la carga fue al ra\u00edz y alcanz\u00f3 solo 10 RPS. Esperamos 5 minutos y el servidor fall\u00f3. Aunque no se sabe con certeza por qu\u00e9 fall\u00f3, se sospecha que simplemente se qued\u00f3 sin memoria y por eso dej\u00f3 de responder.<\/p>\n<h3>Basado en ondas<\/h3>\n<p>\nEn los \u00faltimos uno o dos a\u00f1os, los ataques basados en ondas se han vuelto bastante populares. Esto se debe a que muchas organizaciones compran ciertos equipos para protegerse contra DDoS, los cuales requieren un tiempo espec\u00edfico para acumular estad\u00edsticas antes de empezar a filtrar el ataque. Es decir, no filtran el ataque en los primeros 30-40 segundos, ya que est\u00e1n acumulando datos y aprendiendo. Por lo tanto, durante esos 30-40 segundos se puede lanzar tal cantidad de tr\u00e1fico al sitio que el recurso estar\u00e1 ca\u00eddo durante un tiempo prolongado, hasta que se procesen todas las solicitudes. <br \/>\nEn el caso del ataque a continuaci\u00f3n, hubo un intervalo de 10 minutos, despu\u00e9s del cual lleg\u00f3 una nueva porci\u00f3n de ataque, modificada.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS como ayuda: c\u00f3mo realizamos pruebas de estr\u00e9s y carga\" src=\"\/wp-content\/uploads\/2019\/04\/1bcc609697e255c6051cd215175801f3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs decir, la protecci\u00f3n aprendi\u00f3, activ\u00f3 la filtraci\u00f3n, pero lleg\u00f3 una nueva porci\u00f3n de ataque completamente diferente, y la protecci\u00f3n comenz\u00f3 a aprender de nuevo. De hecho, la filtraci\u00f3n deja de funcionar, la protecci\u00f3n se vuelve ineficaz y el sitio no est\u00e1 disponible. <br \/>\nLos ataques basados en ondas se caracterizan por valores muy altos en el pico; pueden alcanzar hasta cien mil o un mill\u00f3n de solicitudes por segundo en el caso de L7. Si hablamos de L3&amp;4, puede haber cientos de gigabits de tr\u00e1fico, o, en consecuencia, cientos de mpps, si los contamos en paquetes. <br \/>\nEl problema de estos ataques est\u00e1 en la sincronizaci\u00f3n. Los ataques provienen de un botnet, y para crear un pico muy grande en un solo momento, se requiere un alto grado de sincronizaci\u00f3n. Y esta coordinaci\u00f3n no siempre se logra: a veces, el resultado es un pico parab\u00f3lico que se ve bastante pobre.<\/p>\n<h3>No solo HTTP<\/h3>\n<p>\nAdem\u00e1s de HTTP en el nivel L7, nos gusta explotar otros protocolos. Por lo general, un sitio web com\u00fan, especialmente en un hosting est\u00e1ndar, expone protocolos de correo y MySQL. Los protocolos de correo son menos susceptibles a la carga que las bases de datos, pero tambi\u00e9n se pueden sobrecargar de manera bastante efectiva, resultando en un CPU sobrecargado en el servidor. <br \/>\nLogramos tener \u00e9xito utilizando la vulnerabilidad SSH de 2016. Ahora esta vulnerabilidad ha sido pr\u00e1cticamente corregida por todos, pero eso no significa que no se pueda cargar SSH. Se puede. Simplemente se genera una carga enorme de autorizaciones, SSH consume casi toda la CPU del servidor y el sitio web comienza a fallar con solo una o dos solicitudes por segundo. Por lo tanto, estas una o dos solicitudes no se pueden distinguir de la carga leg\u00edtima en los registros. <br \/>\nSiguen siendo relevantes muchas conexiones que abrimos en los servidores. Antes, esto era un problema en Apache, y ahora tambi\u00e9n lo es en nginx, ya que a menudo se configura por defecto. El n\u00famero de conexiones que nginx puede mantener abiertas est\u00e1 limitado, por lo que si alcanzamos este n\u00famero de conexiones, nginx no aceptar\u00e1 una nueva conexi\u00f3n y, como resultado, el sitio web deja de funcionar. <br \/>\nNuestro cl\u00faster de prueba tiene suficiente CPU para atacar el SSL handshake. En principio, como muestra la pr\u00e1ctica, los botnets tambi\u00e9n a veces les gusta hacer esto. Por un lado, est\u00e1 claro que sin SSL no se puede evitar, debido a la presentaci\u00f3n en Google, el ranking y la seguridad. Por otro lado, el SSL, lamentablemente, tiene un problema con la CPU. <\/p>\n<h3>L3&amp;4<\/h3>\n<p>\nCuando hablamos de un ataque en niveles L3&amp;4, generalmente nos referimos a un ataque a nivel de canal. Esta carga es casi siempre distinguible de la carga leg\u00edtima, a menos que se trate de un ataque SYN-flood. El problema de los ataques SYN-flood para los medios de protecci\u00f3n radica en su gran volumen. El m\u00e1ximo registrado en L3&amp;4 fue de 1.5-2 Tbps. Este tipo de tr\u00e1fico es muy dif\u00edcil de manejar incluso para grandes empresas, incluyendo Oracle y Google. <br \/>\nSYN y SYN-ACK son paquetes que se utilizan para establecer una conexi\u00f3n. Por lo tanto, es dif\u00edcil distinguir un SYN-flood de una carga leg\u00edtima: no est\u00e1 claro si es un SYN que lleg\u00f3 para establecer una conexi\u00f3n o parte de un flood.<\/p>\n<h3>UDP-flood<\/h3>\n<p>\nNormalmente, los atacantes no tienen la capacidad que tenemos nosotros, por lo que pueden usar amplificaci\u00f3n para llevar a cabo ataques. Es decir, el atacante escanea internet y encuentra servidores vulnerables o mal configurados que, por ejemplo, responden con tres SYN-ACK a un solo paquete SYN. Al falsificar la direcci\u00f3n de origen desde la direcci\u00f3n del servidor objetivo, se puede aumentar la capacidad, digamos, hasta tres veces, redirigiendo el tr\u00e1fico hacia la v\u00edctima.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS como ayuda: c\u00f3mo realizamos pruebas de estr\u00e9s y carga\" src=\"\/wp-content\/uploads\/2019\/04\/33c5f42dc437a0bd2a4676a63d753fa6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nEl problema de las amplificaciones radica en su dif\u00edcil detecci\u00f3n. Un ejemplo reciente es el conocido caso con memcached vulnerable. Adem\u00e1s, ahora hay muchos dispositivos IoT y c\u00e1maras IP, que a menudo est\u00e1n configurados por defecto y, en su mayor\u00eda, de manera incorrecta, por lo que los atacantes utilizan estos dispositivos para realizar ataques con mayor frecuencia. <\/p>\n<p><img decoding=\"async\" alt=\"DDoS como ayuda: c\u00f3mo realizamos pruebas de estr\u00e9s y carga\" src=\"\/wp-content\/uploads\/2019\/04\/c7e5d01f94db9c5426d50bf21ed85822.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>SYN-flood complicado<\/h3>\n<p>\nEl SYN-flood es probablemente el tipo de ataque m\u00e1s interesante para los desarrolladores. El problema es que a menudo los administradores de sistemas utilizan el bloqueo por IP como medida de protecci\u00f3n. De hecho, no solo los administradores que act\u00faan siguiendo gu\u00edas se ven afectados por el bloqueo por IP, sino que, lamentablemente, tambi\u00e9n ciertas soluciones de seguridad que se compran a un alto costo. <br \/>\nEste m\u00e9todo puede resultar en un desastre, ya que si los atacantes suplantan <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/es\/lir\/ipv4\/\"   title=\"IP\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"623\">IP<\/a>, la empresa bloquear\u00e1 su propia subred. Cuando el firewall bloquea su propio cl\u00faster, las interacciones externas colapsar\u00e1n y el recurso fallar\u00e1. <br \/>\nAdem\u00e1s, lograr bloquear la propia red no es complicado. Si en la oficina del cliente hay una red Wi-Fi, o si el rendimiento de los recursos se mide mediante diversos monitoreos, tomamos la direcci\u00f3n IP de ese sistema de monitoreo o del cliente de Wi-Fi de la oficina y la utilizamos como fuente. Aparentemente, el recurso est\u00e1 disponible, pero las direcciones IP dirigidas est\u00e1n bloqueadas. As\u00ed, una red Wi-Fi de una conferencia como HighLoad, donde se presenta un nuevo producto de la empresa, puede quedar bloqueada, lo que implica ciertos costos empresariales y econ\u00f3micos. <br \/>\nDurante la prueba, no podemos utilizar amplificaci\u00f3n a trav\u00e9s de memcached con recursos externos, porque hay acuerdos para enviar tr\u00e1fico solo a direcciones IP permitidas. Por lo tanto, utilizamos amplificaci\u00f3n a trav\u00e9s de SYN y SYN-ACK, cuando al enviar un SYN, el sistema responde con dos o tres SYN-ACK, multiplicando as\u00ed el ataque por dos o tres. <\/p>\n<h3>Herramientas<\/h3>\n<p>\nUna de las principales herramientas que utilizamos para carga en el nivel L7 es Yandex-tank. En particular, se utiliza un fantasma como ca\u00f1\u00f3n, adem\u00e1s de varios scripts para generar municiones y analizar resultados. <br \/>\nPara analizar el tr\u00e1fico de red se utiliza Tcpdump y para el an\u00e1lisis del servidor Nmap. Para crear carga en los niveles L3&amp;4 se utilizan OpenSSL y un poco de magia propia con la biblioteca DPDK. DPDK es una biblioteca de Intel que permite trabajar con la interfaz de red, omitiendo el stack de Linux, aumentando as\u00ed la eficiencia. Por supuesto, no usamos DPDK solo en los niveles L3&amp;4, sino tambi\u00e9n en el nivel L7, ya que permite generar un flujo de carga muy alto, de varios millones de solicitudes por segundo desde una sola m\u00e1quina. <br \/>\nTambi\u00e9n utilizamos ciertos generadores de tr\u00e1fico y herramientas especiales que desarrollamos para pruebas espec\u00edficas. Si recordamos la vulnerabilidad bajo SSH, el conjunto mencionado anteriormente no puede ser explotado. Si atacamos un protocolo de correo, utilizamos utilidades de correo o simplemente escribimos scripts para ellas.<\/p>\n<blockquote>\n<h3>Conclusiones<\/h3>\n<p>\nComo conclusi\u00f3n, me gustar\u00eda decir:<\/p>\n<ul>\n<li>Adem\u00e1s de las pruebas de carga cl\u00e1sicas, tambi\u00e9n es fundamental realizar pruebas de estr\u00e9s. Tenemos un ejemplo real en el que un subcontratista del socio solo llev\u00f3 a cabo pruebas de carga. Esto mostr\u00f3 que el recurso soporta una carga normal. Pero luego apareci\u00f3 una carga anormal, los visitantes del sitio comenzaron a utilizar el recurso de manera diferente, y al final el subcontratista colaps\u00f3. Por lo tanto, vale la pena buscar vulnerabilidades, incluso si ya est\u00e1 protegido contra ataques DDoS.<\/li>\n<li>Es necesario aislar algunas partes del sistema de otras. Si tiene b\u00fasqueda, debe trasladarla a m\u00e1quinas separadas, es decir, ni siquiera en Docker. Porque si falla la b\u00fasqueda o la autorizaci\u00f3n, al menos algo seguir\u00e1 funcionando. En el caso de una tienda en l\u00ednea, los usuarios seguir\u00e1n encontrando productos en el cat\u00e1logo, accediendo desde un agregador, comprando si ya est\u00e1n autorizados o autoriz\u00e1ndose a trav\u00e9s de OAuth2.<\/li>\n<li>No hay que despreciar todos los servicios en la nube. <\/li>\n<li>Utilice CDN no solo para optimizar la latencia de red, sino tambi\u00e9n como un medio de protecci\u00f3n contra ataques de agotamiento de canal y simplemente inundaciones en est\u00e1tica.<\/li>\n<li>Es necesario utilizar servicios de protecci\u00f3n especializados. No podr\u00e1 protegerse solo contra ataques L3&amp;4 a nivel de canal, porque probablemente no tiene suficiente ancho de banda. Tampoco podr\u00e1 defenderse de los ataques L7, ya que suelen ser muy grandes. Adem\u00e1s, la b\u00fasqueda de peque\u00f1os ataques sigue siendo el privilegio de servicios especiales y algoritmos especializados. <\/li>\n<li>Actual\u00edcese regularmente. Esto se aplica no solo al n\u00facleo, sino tambi\u00e9n al daemon SSH, especialmente si est\u00e1n abiertos al exterior. En general, debe actualizar todo, porque es poco probable que pueda rastrear usted mismo ciertas vulnerabilidades.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/variti\/blog\/448626\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0442\u0443 \u043e\u0442 \u0431\u043e\u0442\u043e\u0432 \u0438 DDoS-\u0430\u0442\u0430\u043a, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u0435\u0441\u0441- \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 HighLoad++ 2018 \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438, \u043a\u0430\u043a \u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0438\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u0430\u0442\u0430\u043a. \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e: \u0438\u0437\u043e\u043b\u0438\u0440\u0443\u0439\u0442\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 CDN \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0439\u0442\u0435\u0441\u044c. \u041d\u043e \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u0432\u044b \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u0441\u044c \ud83d\ude42 \u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23782,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31924","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47DDoS \u0432 \u043f\u043e\u043c\u043e\u0449\u044c: \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0441\u0442\u0440\u0435\u0441\u0441- \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:44:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:44:01+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47DDoS como ayuda: c\u00f3mo realizamos pruebas de estr\u00e9s y carga | ProHoster","description":"La empresa Variti est\u00e1 desarrollando.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47DDoS \u0432 \u043f\u043e\u043c\u043e\u0449\u044c: \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0441\u0442\u0440\u0435\u0441\u0441- \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b | ProHoster","og:description":"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:44:01+00:00","article:modified_time":"2019-10-31T18:44:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31924","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-08 20:27:18","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:46:57","updated":"2026-02-08 20:27:18","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=31924"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31924\/revisions"}],"predecessor-version":[{"id":157814,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31924\/revisions\/157814"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/23782"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=31924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=31924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=31924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}