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!
índice
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:
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.
Una vez descargada e instalada (no tiene misterio, todo por defecto y finalizar) necesitarás la siguiente información para poder acceder al servidor.
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:
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:
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.
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í:
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.
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.
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:
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.
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!

Nacho Mascort

Latest posts by Nacho Mascort (see all)
- Hablemos de Accesibilidad Web para SEO (I) - 29 marzo, 2017
- ¿Cómo montar un protocolo https gratis para WordPress? - 22 diciembre, 2016
- Optimizando el Crawl Budget con códigos de estado HTTP 304 - 24 agosto, 2016
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 ;=)
Hey Roger!
Gracias por pasarte, siempre se agradece 🙂
Buenas, gran post, una duda…Has recuperado tus posiciones tras el ataque?
Buenas Jaime,
Tardaron un par de semanas pero sí se recuperaron.
Un saludo
en mi caso es al wp-content para atacar los plugins, he usado firewall y bloqueado las ips pero no parece funcionar.
Hola Alex,
¿Has usado cloudfare para intentar mitigar el ataque?
Un saludo,
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.
Buenas Sergio,
La verdad es que puede ser desesperante. Ahora a ser paciente y a confiar en el server.
Un abrazo
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?
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,
Chico me ayudarías personalmente cn un súper ataque DDos q tengo a mi web? contactame porfa
Hola Mirna,
No soy un experto en seguridad informática, en el post te cuento mi experiencia por si puede ayudarte. No me dedico a ello por lo que siento no poder ayudarte.
Un saludo,
Hola Nacho gracias por el post me parecio muy interesante 🙂 Saludos
Muchas gracias Nestor 🙂
Un saludo,
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
Hola Nacho.
Tu post está genial. Siempre hay que estar preparados.
Saludos.
Nacho. cuando utilizas el recurzo del htaccess, como haces para identificar a las ips atacantes, supongo que te apoyas en alguna herramienta que determine la cantidad de solicitudes provenientes desde un grupo de ips especifico «octeto» y cuando supera un limite de peticiones establecido creas la entrada en el archivo htaccess
te comento esto porque no creo que el hosting bloquera las peticiones si no provienen de la misma ip y mucho menos el firewall si es un servidor personal.
¿en este caso no seria mejor cambiar los dns del sitio mientras solucionas el problema del atacante.?
soy novato en el asunto y agradeceria tu ayuda, ya que estoy realizando un sitio web donde espero un trafico considerable y tengo dudas sobre las peticiones ajax que estoy realizando al servidor, creo que pueden ser una brecha de seguridad.
dicho todo esto me gustaria implementar algun mecanismo en mi web que evite multiples solicitudes simultaneas desde una misma ubicacion los ataques Dos y bueno los ataques DDos mitigarlos con el firewall y otro conjunto de herramientas.
si conoces mecanismos para enjaular las solicitudes desde una misma ip te los agradeceria.
Hola Nacho
Un saludo desde Chile.
tremendo post muy explicativo sobre todo que muchos podemos tener este tipo de ataque y no somos muy expertos.
Usamos Clauflare y nos a salvado en varias oportunidades aparte que ayuda muchísimo al Rendiminto web después del cambio de algoritmo.
Saludos
esto vale para una web en joomla?