ataques ddos

Todo lo que aprendí después de perder 120.000 visitas por un ataque DDoS

Buenas!

Hoy quiero contar mi experiencia con algo que espero que no te pase nunca pero que depende del nicho en el que estés acabarás sufriendo alguna que  otra vez.

Se trata de los ataques DDoS, hace unas semanas sufrí un ataque bastante potente en una de mis web y hoy te cuento toda la experiencia.

Lo bueno es que aprendí muchísimo y como encontré bastante poca información al respecto he decidido exponer todo lo que aprendí en este post.

Este post tiene una finalidad didáctica y experiencial sobre el ataque sufrido en un servidor Apache.

Espero que te sirva como guía para frenar cualquier ataque DDoS que sufras.

¡Al turrón!

Qué es un ataque DDoS

Un ataque DDoS es una (de las muchas) maneras de atacar una web para que deje de funcionar o para que el tiempo de carga se dispare.

Las siglas significan lo siguiente: Distributed Denial of Service.

Cuando estás sufriendo un ataque de este tipo, lo que ocurre es que una persona maravillosa empieza a realizar muchísimas peticiones a tu servidor a través de diferentes máquinas con el objetivo de que tu server colapse.

Te lo cuento con un ejemplo que leí en su momento y me hizo mucha gracia.

Imagina que tu servidor es un hombre que vende helados. Cada vez que un persona pide un helado ( su máquina hace una petición al servidor) el heladero le da un helado ya que es lo que le ha pedido (el servidor muestra la web) y si hay pocas personas pues el heladero es capaz de dar helados de forma más o menos rápida.

El del camión de helados de al lado ve que a nuestro heladero le va genial y se muere de rabia por lo que decide mandar a miles de personas a pedirle un helado. Para más inri, todas le piden el helado a la vez.

Nuestro querido heladero irá sirviendo helados  lo más rápido que pueda pero al final se colapsará porque no podrá atender a todas las personas.

Nuestro heladero se cogerá la baja por depresión por no ser capaz de dar todos los helados que le estaban pidiendo.

Pues algo similar ocurre con un ataque DDoS, tu web empieza a recibir miles y miles de peticiones de muchos ordenadores y el servidor no es capaz de devolverlas todas y acaba devolviendo un error.

Hay diferentes tipos de ataques DDoS y si te interesa el tema investiga por los foros que existen ya que es donde mejor documentación hay al respecto.

DDos vs DoS

Si has investigado sobre el tema, es posible que hayas oído que hay una tipología de ataque llamado DoS.

La diferencia entre el DDoS vs DoS radica en el número de máquinas atacando el servidor.

En el ataque DDoS son varias máquinas que hacen varias peticiones al server pero en el ataque DoS solo es una máquina la encargada de hacer múltiples peticiones.

Creo que no es necesario destacar que el primero es mucho más efectivo y más difícil de parar.

Tal vez te preguntes cómo es posible que una persona tenga a su disposición miles de máquinas para hacer un ataque DDoS, un ordenador lo tiene cualquiera pero mil no.

Lo logra gracias a las llamadas Botnets, si te interesa lee más aquí.

¿Cómo pararlo?

No se si alguna vez has sufrido uno o si lo estás sufriendo ahora pero sea la opción que sea, guárdate bien esta guía ya que el tiempo de respuesta puede ser un factor crucial para que no haya secuelas.

Lo que te voy a contar a continuación es todo lo que se tuvo que hacer para parar el ataque DDoS..

El alcance era el siguiente:

ataque ddos

En un período de casi dos semanas se han recibido más de 600.000 Threats hacia la web así que el ataque tenía cierta potencia.

La primera recomendación que te hago es que contactes con tu servidor para que te lo intenten solucionar pero si te gestionas tu propio hosting o eres un culo inquieto entonces sigue leyendo.

Identificar todas las IPs conectadas a tu servidor

Lo primero que tendrías que hacer es intentar identificar aquellas IP que están conectadas al servidor.

Para ello necesitarás hacerlo a través de la consola SSH.

Descárgate este programa para acceder.

ssh

Una vez descargada e instalada (no tiene misterio, todo por defecto y finalizar) necesitarás la siguiente información para poder acceder al servidor.

Unix

Una vez puestos los datos y de haber introducido el puerto si no viene por defecto le damos al login y se nos mostrará un mensaje de acceso con éxito junto con la apertura de la consola.

Con la consola abierta es momento de añadir el siguiente comando UNIX:

netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

Este comando mostrará todas las IPs conectadas a tu servidor en el puerto 80 (“donde está la web”) junto con el número de peticiones que han realizado ordenadas de mayor a menor.

Si quieres saber qué significa cada comando lee este post.

Cuando ponemos este comando nos aparece lo siguiente:

shell

Ahora estas viendo toda una serie de IPs  conectadas actualmente a una de mis webs.

Durante el ataque DDoS no tenía 4-9 peticiones por IP, tenía más de 10.000:

bloquear ddos

Esto es una pequeña muestra pero se ve muy fácilmente que IP son las que están haciendo peticiones a mansalva en el servidor.

No sólo se ve que IPs están realizando el ataque sino que podemos observar que hay ciertos rangos de IP realizando miles de peticiones.

Otro de los posts que me ayudaron muchísimo para comprender todo el tema de IPs.

Bloqueando las IPs con el Firewall

Una vez tengas listadas las IPs que realizan el ataque DDoS toca bloquearlas.

Esta parte del post depende del tipo de servidor que tengas contratado, es posible que algunas de las acciones tengas que pedirlas a la asistencia técnica de hosting.

Lo que tienes que hacer es irte al panel de control y buscar una opción llamada firewall.

Tal y como dice la propia explicación en el panel:

Un firewall (o cortafuegos) es un sistema diseñado para bloquear el acceso no autorizado a la vez que permite que se establezcan conexiones predefinidas.

Es una de las herramientas perfectas para lidiar con ese tipo de ataques.

En un apartado del Firewall debería haber un cuadro para bloquear las IP que has listado anteriormente.

firewall ip

Te voy a explicar que debes añadir en cada una de las celdas del cuadro.

Las dos primeras celdas dejalas por defecto en “Interfaz Pública” e “IP”, en dirección de origen has de poner una de las IP listadas como maliciosa, en el puerto de destino has de poner 80 ya que el puerto 80 es donde se hacen las peticiones a la web, deja el protocolo como TCP y en comando modifica el valor “ACCEPT” por “DROP”.

Debería quedar algo así:

bloquear ips

De esta manera le estaremos indicando al Firewall que bloquee todas las conexiones de la IP 183.3.202.200 del puerto 80.

Ya has observado que el problema no es una IP, sino varios rangos de IPs.

Y me preguntarás, ¿cómo se bloquea un rango?

Te lo cuento.

Yo en su momento aplique la lógica y fue un error colosal.

Me dije:

Vale, si cada octeto de una IP va de 0 a 255 pues lo único que tengo que hacer es poner la IP de esta manera: 183.3.202.0/255 y ya está

En estos casos deja la lógica al lado e infórmate muy bien porque lo que acaba de bloquear no eran 256 IPs.

La manera correcta de bloquear un rango es empleando el /24. En este caso tendría que haber puesto: 183.3.202.0/24.

Si quieres bloquear ciertos rangos de IPs te dejo con este otro recurso que te vendrá genial.

Cloudfare

Una de las soluciones más famosas para evitar ataques DDoS es la plataforma online Cloudfare.

Cloudfare es un servicio de seguridad para evitar ataques DDoS con diferentes funcionalidades según el plan en el que estés. Con la versión gratuita ya puedes parar ataques pequeñitos y mitigar otros más grandes.

Registrarse en Cloudfare es tan fácil como clicar en el botón de “Sign Up” y seguir las instrucciones que nos van mostrando ellos.

cloudfare
Habrá un momento en el que te pedirán que modifiques tus NameServers por los suyos. Esto lo hacen por la manera que tienen de tratar con los ataques DDoS.

Cloudfare funciona como un filtro que bloquea a los atacantes del resto de usuarios o crawlers que quieren acceder a tu web a través de su CDN.

CDN

Si quieres conocer el funcionamiento exacto de Cloudfare te recomiendo que leas cómo funciona.

DDoS Deflate

Este es otro excelente complemento para mitigar ataques DDoS.  Se trata de un Script que tiene la función de ir monitorizando las peticiones que se hacen a la web y cuando una IP supera un número determinado de peticiones que tú decides la bloqueas un tiempo determinado que también debes elegir.

En nuestro caso bloqueamos la IP durante 72 horas si hacía más de ciertas peticiones. Si dominas en temas de servidor te dejo aquí otro enlace más sobre cómo puedes instalar este script en tu servidor.

Repercusiones para el SEO

Dependiendo de la escala del ataque puede afectar al SEO o no. En mi caso el ataque se prologó lo suficiente como para afectar mis rankings.

El ataque se dividió en dos oleadas. El primer ataque surgió durante un fin de semana y para el domingo ya estaba mitigado, pensaba que ya lo tenía bajo control pero el siguiente fin de semana hubo un segundo ataque menor que el anterior.

Mira la caída que mostró Analytics:

ataque ddos

Viendo el gráfico puede parecer que casi no se notó pero en una web con una media de 13.000 visitas al día una caída como la que ves supones una pérdida del 80% del tráfico durante un ataque.

El problema no es sólo que esos ataques provoquen que estés sin monetizar esos días sino que ahora he pasado de 13.000 visitas diarias de media a 9.000.

Lo que se traduce en perder 4.000 visitas al día, es decir 120.000 al mes si siguiera así.

Un ataque DDoS es muy

efectivo.

Utilizar un ataque DDoS a tu favor

Aquí viene mi último tip y creo que es de lo mejorcito que puedes encontrar no solo para mitigar un ataque DDoS sino que para aprovecharte de él.

Quiero enseñarte a usar htacces para hacer rebotar un ataque a la persona que te está atacando.

¿Qué es htaccess?

El nombre de .htaccess viene del inglés Hypertext Access y es un tipo de archivo que permite realizar directivas personalizadas a tu web.  Uno de los casos más comunes en SEO de un archivo .htacces es para hacer redirecciones 301.

Este tipo de archivos funcionan con las llamadas expresiones regulares (RegEx) y si no dominas bien el lenguaje mejor que no toques mucho el htaccess o podrías tener un problema bien gordo con tu web. Si quieres saber más sobre htaccess consulta este artículo si por el contrario quieres saber más sobre las expresiones regulares insto a que practiques con estos ejercicios.

Devolviendo el ataque

A continuación déjame enseñarte tres directivas de .htaccess para que puedas olvidarte de cualquier ataque DDoS.

Las siguientes directivas de .htacces no son mías, las encontré aquí.

Como verás, todas las líneas son idénticas y solo se modifica la última en función de lo que pretendas que haga htaccess.

Devolver el ataque a la IP

RewriteEngine on
RewriteCond %{QUERY_STRING} ^([0-9]+)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)\?([0-9]+)(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^([0-9]+\.[0-9])(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)\?([0-9]+\.[0-9])(.*)$ [NC]
RewriteRule ^(.*)$ http://%{REMOTE_ADDR} [L]

Devolver el ataque al referrer

RewriteEngine on
RewriteCond %{QUERY_STRING} ^([0-9]+)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)\?([0-9]+)(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^([0-9]+\.[0-9])(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)\?([0-9]+\.[0-9])(.*)$ [NC]
RewriteRule ^(.*)$ %{HTTP_REFERER} [L]

Enviar el ataque a otro sitio

RewriteEngine on
RewriteCond %{QUERY_STRING} ^([0-9]+)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)\?([0-9]+)(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^([0-9]+\.[0-9])(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)\?([0-9]+\.[0-9])(.*)$ [NC]
RewriteRule ^(.*)$ http://urldelsitio.com/ [L]

Próximos pasos

Ahora queda esperar y tener paciencia.  Mientras Google vea que toda la web se ha recuperado debería ir recuperando las posiciones que tenía anteriormente. Será un proceso progresivo e igualmente habrá que tirarle algún enlace para ayudar pero ya os contaré.

Espero que te haya gustado el post de hoy y que el día que tengas cualquier ataque a tu web puedas protegerte sin problemas.

No te olvides de comentar si conoces otras maneras de proteger tu web de este tipo de ataques y compartelo!

The following two tabs change content below.
Nacho Mascort

Nacho Mascort

SEO Specialist
Soy consultor SEO en la ciudad de Barcelona pero trabajo con clientes de todo el mundo. Me encanta el SEO, por eso he decidido montar este blog en el que te contaré todo lo que voy descubriendo para posicionar una web en las primeras posiciones.
Nacho Mascort

Nacho Mascort

Soy consultor SEO en la ciudad de Barcelona pero trabajo con clientes de todo el mundo. Me encanta el SEO, por eso he decidido montar este blog en el que te contaré todo lo que voy descubriendo para posicionar una web en las primeras posiciones.

15 comentarios en “Todo lo que aprendí después de perder 120.000 visitas por un ataque DDoS

  1. Hola Nacho, hacia tiempo que no me pasaba jejjeej. No he tenido el placer o el disgusto de enfrentarme directamente a ello, pero se más o menos como lo viviste, y la verdad es que la última parte del post me la guardo en una de mis carpetas más preciadas.

    Nos vemos ;=)

  2. Madre mia NACHO como me estoy acordando de tu post, estoy recibiendo un ataque durante dos semanas a mi VPS y me tiene frito literalmente. Como cualquiera literalmente puede poner en jaque todo tu trabajo. Ando en manos del servidor a ver que soluciones me da. Esto no es una tonteria tomen toda la seguridad que puedan.

      1. Nacho tu sabes que sucede si hago una redireccion 302 de la web donde me atacan a quien estoy seguro que esta realizando el ataque. Le pasas el ataque? funciona?

        1. Buenas Sergio,

          No lo veo una muy buena solución ya que tendrás toda tu web redireccionada a tu competidor.

          Piensa que si es un poco espabilado tendrá bloqueadas las IPs que emplea para atacar para evitar un contraataque.

          También te digo que no lo he probado por lo que si te animas a probar cuéntamelo y tal vez da para un post interesante, dicho esto yo no lo recomendaría.

          Un saludo,

  3. Hola Nacho en mi caso crearon carpetas y dentro pusieron archivos .htaccess con el siguiente contenido:

    Options Indexes FollowSymLinks
    DirectoryIndex jancox.htm
    AddType text/plain .php
    AddHandler text/plain .php
    Satisfy Any

    Este ataque cual de los dos que expones seria? y cual la solucion? mil gracias x adelantado

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *