Pregunta Estoy bajo DDoS. ¿Que puedo hacer?


Esto es un Pregunta canónica sobre DoS y DDoS mitigación.

Encontré un pico de tráfico masivo en un sitio web que alojo hoy; Estoy recibiendo miles de conexiones por segundo y veo que estoy usando todos los 100 Mbps de mi ancho de banda disponible. ¡Nadie puede acceder a mi sitio porque todas las solicitudes se agotan, y ni siquiera puedo iniciar sesión en el servidor porque SSH también se agota! Esto ha sucedido un par de veces antes, y cada vez dura un par de horas y desaparece por sí solo.

Ocasionalmente, mi sitio web tiene otro problema distinto pero relacionado: el promedio de carga de mi servidor (que generalmente es de alrededor de .25) se dispara hasta 20 o más y nadie puede acceder a mi sitio de la misma manera que en el otro caso. También desaparece después de unas horas.

Reiniciar mi servidor no ayuda; ¿Qué puedo hacer para volver a tener acceso a mi sitio y qué está sucediendo?

De manera relacionada, una vez descubrí que, por un día o dos, cada vez que comenzaba mi servicio, obtenía una conexión de una dirección IP en particular y luego fallaba. Tan pronto como lo volví a poner en marcha, esto volvió a suceder y se estrelló de nuevo. ¿En qué se parece, y qué puedo hacer al respecto?


171
2017-08-19 09:14


origen


Seguí esto después de leer (¿Crear una pregunta canónica de "¿Ayuda, me estoy haciendo DDOS-ed!"). ¿¡Solo quiero decir Buen Trabajo !!! - AngryWombat
Ver también security.stackexchange.com/a/792/2379 - Pacerier


Respuestas:


Usted está experimentando un ataque de denegación de servicio. Si ve tráfico proveniente de múltiples redes (diferentes IP en diferentes subredes), tiene una denegación de servicio distribuida (DDoS); si todo viene del mismo lugar, tienes un DoS viejo y simple. Puede ser útil verificar, si puede; Utilice netstat para comprobar. Sin embargo, esto podría ser difícil de hacer.

La denegación de servicio generalmente se divide en dos categorías: basadas en el tráfico y basadas en la carga. El último elemento (con el servicio de bloqueo) es DoS basado en explotación y es bastante diferente.

Si estás tratando de precisar qué tipo de ataque está ocurriendo, es posible que desees capturar algo de tráfico (usando wireshark, tcpdump o libpcap). Debería, si es posible, pero también tener en cuenta que probablemente capturará una gran cantidad de tráfico.

Tan a menudo como no, estos provendrán de redes de bots (redes de hosts comprometidos bajo el control central de algún atacante, cuya oferta harán). Esta es una buena manera para que el atacante adquiera (muy barato) el ancho de banda ascendente de muchos hosts diferentes en diferentes redes para atacarle, mientras cubre sus pistas. los Cañón de iones de órbita baja es un ejemplo de botnet (a pesar de ser voluntario en lugar de derivado de malware); Zeus es uno más típico.

Basado en el tráfico

Si estás bajo un DoS basado en el tráfico, estás encontrando que hay tanto tráfico llegando a su servidor que su conexión a internet está completamente saturada. Hay una alta tasa de pérdida de paquetes al hacer ping a su servidor desde otro lugar, y (dependiendo de los métodos de enrutamiento en uso) a veces también está viendo una latencia muy alta (el ping es alto). Este tipo de ataque suele ser un DDoS.

Si bien este es un ataque realmente "fuerte", y es obvio lo que está sucediendo, es difícil para un administrador de servidor mitigar (y básicamente imposible para un usuario de hosting compartido mitigar). Vas a necesitar ayuda de tu ISP; Hágales saber que está bajo un DDoS y que podrían ayudarlo.

Sin embargo, la mayoría de los proveedores de servicios de Internet y de tránsito se darán cuenta de forma proactiva de lo que está sucediendo y publicarán un ruta de agujero negro para su servidor. Lo que esto significa es que publican una ruta a su servidor con el menor costo posible, a través de 0.0.0.0: hacen que el tráfico a su servidor ya no sea enrutable en Internet. Estas rutas son típicamente / 32s y eventualmente son eliminadas. Esto no te ayuda en absoluto; el propósito es proteger la red del ISP del diluvio. Mientras tanto, su servidor perderá efectivamente el acceso a Internet.

La única forma en que su ISP (o usted, si tiene su propio AS) será capaz de ayudarlo es si están utilizando modeladores de tráfico inteligentes que pueden detectar y limitar el tráfico DDoS probable. No todos tienen esta tecnología. Sin embargo, si el tráfico proviene de una o dos redes, o de un host, también podrían bloquear el tráfico que está delante de usted.

En breve, hay muy poco que puedas hacer sobre este problema La mejor solución a largo plazo es alojar sus servicios en muchos lugares diferentes de Internet, que tendrían que ser DDoSed individual y simultáneamente, lo que hace que el DDoS sea mucho más caro. Las estrategias para esto dependen del servicio que necesita proteger; Los DNS pueden protegerse con múltiples servidores de nombres autorizados, SMTP con registros MX de respaldo e intercambiadores de correo, y HTTP con DNS round-robin o multihoming (de todos modos, se puede observar cierta degradación).

Los equilibradores de carga rara vez son una solución efectiva a este problema, ya que el equilibrador de carga en sí está sujeto al mismo problema y simplemente crea un cuello de botella. IPTables u otros reglas de firewall no ayudarán Porque el problema es que tu pipa está saturada. Una vez que el firewall ve las conexiones, ya es demasiado tarde; el ancho de banda en su sitio se ha consumido. No importa lo que hagas con las conexiones; el ataque se mitiga o finaliza cuando la cantidad de tráfico entrante vuelve a la normalidad.

Si puede hacerlo, considere usar un red de distribución de contenido (CDN) como Akamai, Limelight y CDN77, o use un servicio de limpieza DDoS como CloudFlare o Prolexic. Estos servicios toman medidas activas para mitigar este tipo de ataques, y también tienen tanto ancho de banda disponible en tantos lugares diferentes que no es posible en general inundarlos.

Si decide utilizar CloudFlare (o cualquier otro CDN / proxy) recuerde ocultar la IP de su servidor. Si un atacante descubre la IP, puede DDoS directamente a su servidor, sin pasar por CloudFlare. Para ocultar la IP, su servidor nunca debe comunicarse directamente con otros servidores / usuarios a menos que estén seguros. Por ejemplo, su servidor no debe enviar correos electrónicos directamente a los usuarios. Esto no se aplica si aloja todo su contenido en el CDN y no tiene un servidor propio.

Además, algunos proveedores de VPS y hosting son mejores para mitigar estos ataques que otros. En general, cuanto más grandes sean, mejor serán en esto; un proveedor que esté muy bien atendido y tenga mucho ancho de banda será naturalmente más resistente, y uno con un equipo de operaciones de red activo y con todo el personal podrá reaccionar más rápidamente.

Basado en la carga

Cuando experimenta un DDoS basado en la carga, observa que el el promedio de carga es anormalmente alto (o CPU, RAM, o uso de disco, dependiendo de su plataforma y los detalles). Aunque el servidor no parece estar haciendo nada útil, está muy ocupado. A menudo, habrá una gran cantidad de entradas en los registros que indiquen condiciones inusuales. La mayoría de las veces, esto proviene de muchos lugares diferentes y es un DDoS, pero ese no es necesariamente el caso. Ni siquiera tiene que haber muchos hosts diferentes.

Este ataque se basa en hacer que tu servicio haga muchas cosas caras. Esto podría ser algo así como abrir una cantidad gigantesca de conexiones TCP y obligarlo a mantener el estado para ellas, o cargar archivos excesivamente grandes o numerosos en su servicio, o quizás realizar búsquedas realmente costosas, o realmente hacer algo que sea costoso de manejar. El tráfico está dentro de los límites de lo que planeó y puede asumir, pero los tipos de solicitudes que se realizan son demasiado caros para manejar tantos de.

En primer lugar, que este tipo de ataque es posible es a menudo indicativo de una problema de configuración o error en su servicio Por ejemplo, puede tener activado el registro excesivamente detallado y puede estar almacenando registros en algo que es muy lento para escribir. Si alguien se da cuenta de esto y hace un montón de cosas que le permiten escribir grandes cantidades de registros en el disco, su servidor se reducirá a un rastreo. Su software también podría estar haciendo algo extremadamente ineficiente para ciertos casos de entrada; las causas son tan numerosas como los programas, pero dos ejemplos serían una situación que hace que su servicio no cierre una sesión que, de lo contrario, finaliza y una situación que hace que se genere un proceso secundario y se abandone. Si terminas con decenas de miles de conexiones abiertas con el estado para realizar un seguimiento de, o decenas de miles de procesos secundarios, tendrás problemas.

Lo primero que podrías hacer es Usa un firewall para bajar el tráfico.. Esto no siempre es posible, pero si hay una característica que puede encontrar en el tráfico entrante (tcpdump puede ser bueno para esto si el tráfico es escaso), puede dejarlo en el firewall y ya no causará problemas. La otra cosa que hacer es corregir el error en su servicio (póngase en contacto con el proveedor y prepárese para una larga experiencia de soporte).

Sin embargo, Si es un problema de configuración, comience allí. Disminuye el registro en los sistemas de producción a un nivel razonable (dependiendo del programa, este suele ser el valor predeterminado y, por lo general, implica asegurarse de que los niveles de "depuración" y "detallado" del registro estén desactivados; buen detalle, su registro es demasiado detallado). Adicionalmente, Consultar proceso infantil y solicitar límites., posiblemente acelerador solicitudes entrantes, conexiones por IP y la cantidad de procesos secundarios permitidos, según corresponda.

No hace falta decir que cuanto mejor configurado y mejor aprovisionado esté su servidor, más difícil será este tipo de ataque. Evita ser tacaño con RAM y CPU en particular. Asegúrese de que sus conexiones a cosas como las bases de datos backend y el almacenamiento en disco sean rápidas y confiables.

Basado en explotaciones

Si su servicio misteriosamente se estrella extremadamente rápido después de activarse, especialmente si puede establecer un patrón de solicitudes que precede a la falla y la solicitud es atípica o no coincide con los patrones de uso esperados, es posible que esté experimentando un DoS basado en la explotación. Esto puede provenir de tan solo un host (con prácticamente cualquier tipo de conexión a Internet) o muchos hosts.

Esto es similar a un DoS basado en carga En muchos aspectos, y tiene básicamente las mismas causas y mitigaciones. La diferencia es que, en este caso, el error no hace que su servidor se desperdicie, sino que muera. El atacante generalmente está explotando una vulnerabilidad de bloqueo remoto, como una entrada confusa que causa una anulación de nula o algo en su servicio.

Maneje esto de manera similar a un ataque de acceso remoto no autorizado. Cortafuegos contra los hosts de origen y el tipo de tráfico si se pueden determinar. Utilice validar proxies inversos si es aplicable. Reunir evidencia forense (intente capturar parte del tráfico), presente un ticket de error al proveedor y considere presentar una queja por abuso (o queja legal) contra el origen también.

Estos ataques son bastante baratos de montar, si se puede encontrar una vulnerabilidad, y pueden ser muy potentes, pero también relativamente fáciles de rastrear y detener. Sin embargo, las técnicas que son útiles contra el DDoS basado en el tráfico generalmente son inútiles contra el DoS basado en la explotación.


183
2017-08-19 09:14



Con respecto a tu último párrafo, ¿Y qué pasa si obtienes una base de exploits? re DoS? ¿Cómo podrías rastrearlo y detenerlo? - Pacerier


Si eres una empresa, tienes muchas opciones. Si eres un tipo pequeño como yo, si alquilas un VPS o un servidor dedicado para servir un sitio web pequeño, el costo puede volverse prohibitivo rápidamente.

Desde mi experiencia, creo que la mayoría de los proveedores dedicados y de VPS no configurarán reglas especiales de firewall solo para su servidor. Pero hoy en día, tienes algunas opciones.

CDN

Si está ejecutando un servidor web, considere ponerlo detrás de un CDN como CloudFlare o Amazon CloudFront.

Los CDN son caros. Para mantener el costo bajo control, sirva archivos grandes (imágenes grandes, audio, video) directamente desde su servidor en lugar de a través de la CDN. Sin embargo, esto puede exponer la dirección IP de su servidor a los atacantes.

Nube privada

Las nubes privadas suelen ser soluciones empresariales caras, pero Amazon VPC cuesta casi nada para configurar. Sin embargo, el ancho de banda de Amazon en general es caro. Si puede permitírselo, puede configurar el Grupo de seguridad de Amazon VPC y la ACL de la red para bloquear el tráfico antes de que llegue a su instancia. Debe bloquear todos los puertos excepto el puerto de su servidor TCP.

Tenga en cuenta que un atacante todavía puede atacar el puerto de su servidor TCP. Si se trata de un servidor web, considere usar algo como nginx que use IO sin bloqueo y que pueda manejar un gran número de conexiones. Más allá de eso, no hay mucho que pueda hacer además de asegurarse de ejecutar la última versión del software del servidor.

Cuando su puerto TCP es atacado y todo lo demás falla

Esta es una solución que desarrollé y que se aplica a servidores que no son web y que no se pueden ocultar detrás de una CDN, como WebSocket, contenido de medios / servidores de transmisión. CloudFlare es compatible con WebSocket pero solo para empresas en este momento.

El objetivo es cambiar su puerto de escucha TCP lo suficientemente rápido para que una botnet no pueda mantenerse al día, por ejemplo, una vez cada 10 segundos. Esto se logra mediante un programa proxy simple que realiza el roaming de puertos. La secuencia de puertos es pseudoaleatoria, pero debe basarse en la hora del servidor. Y el algoritmo para calcular la hora y el puerto del servidor debe estar oculto en el código de javascript / flash de su cliente. El programa también debe modificar el cortafuegos a medida que cambia el puerto de escucha, y el cortafuegos debe tener estado. Si alguien está interesado, subiré mi script node.js que funciona con Amazon, a GitHub.


6
2017-12-05 18:04





Cambia tu dominio para ir a un agujero negro como 0.0.0.0 por un período corto.

Comuníquese con su proveedor para ver si pueden proporcionarle otra dirección IP como una forma temporal de acceder al servidor o ver si el servidor tiene acceso a la consola remota (como si estuviera sentado frente a él). Desde aquí puede ver si es una única dirección IP y bloquearla desde el sitio o un ataque distribuido.


3
2018-02-26 07:44



Cambiar el DNS de esa manera probablemente haga más daño que bien. Al principio reduciría el TTL del registro A, pero no cambiaría la dirección IP, hasta que tenga una nueva IP para señalarla. - kasperd


Cuando está bajo DDoS, su ISP puede ayudarlo más, pero si no tienen protección DDoS es muy probable que esté fuera de servicio hasta que el ataque se detenga. Por lo general, verán la dirección IP atacada y anularán la red en su enrutador ascendente. Si no tiene mucho tráfico, hay muchos servicios en línea para la protección contra DDoS donde su tráfico se redirecciona, se filtra y se envía a su servidor.


0
2017-11-18 11:42