Cómo verificar si un sito web está bajo ataque de denegación de servicio

Ataques DDOS

Cómo verificar si un sito web está bajo ataque de denegación de servicio

ATENCIÓN

Algunas de las recomendaciones de esta ficha requieren de un conocimiento técnico alto.</br> No recomendamos poner en práctica dichas recomendaciones sin conocimientos básicos de administración de sistemas.

Problema

  • Se sospecha que un sitio web está bajo ataque DDoS y la persona necesita solucionarlo.
  • Una persona quiere protegerse ante posibles ataques DDoS.

Solución

DDoS son las siglas de Distributed Denial of Service (Ataque Distribuido de Denegación de Servicio). El ataque consiste en saturar el servidor haciendo muchas peticiones de conexión al mismo tiempo a una página web. Cuando el servidor trata de responder tantas peticiones simultáneas se queda sin recursos, se cuelga y deja de funcionar: se apaga o simplemente deja de responder. El DDoS es un ataque muy común.

Reacción / Apagafuegos

Si has hecho un diagnóstico de por qué tu web está caída y sospechas que tu web ha sido objetivo de un ataque DDoS se pueden estudiar los registros (logs) para confirmarlo.

Acceder a los logs de tráfico

Lo primero que necesitas es acceder a los logs de tráfico del servidor. El procedimiento para llegar a ellos dependerá del tipo de servicio de alojamiento que hayas contratado.

  • cPanel: si tu servidor tiene instalado cPanel debes ir a la sección de métricas selecciona la opción Raw Access y podrás descargar los archivos de los logs en crudo.
  • Apache: accede a /var/log/apache/access.log, /var/log/apache2/access.log, y /etc/httpd/logs/access_log.
  • Nginx: accede a /var/log/nginx/access_log.

Si no tienes acceso al cPanel o al servidor donde está alojada tu página web, prueba buscar en el panel de administración de tu hosting alguna opción para acceder a los logs de acceso. Si tampoco así lo logras, contacta directamente con tu proveedor alojamiento web y solicita que te los envíen. Al ser información sensible, lo enviarán a la dirección de correo electrónico registrada.

Análisis de los logs de tráfico

Los logs son ficheros de texto muy largos con información como la hora de acceso, las IP desde las que se hacen las peticiones, el tipo de peticiones, etc. Como son registros con muchas entradas, te recomendamos usar awk, un lenguaje de programación para procesar datos basados en texto, como es el caso.

A continuación detallamos distintos comandos para analizar los logs y recabar información para conocer los detalles del ataque. Donde dice head -n X puede cambiarse X por el número de resultados que se desee obtener. También notar que los comandos siguientes son aplicables para Apache logs.

  • Fuente de las n (5) direcciones IP que más han visitado más la web:
       awk '{ print $1}' traffic.log | sort | uniq -c | sort -nr | head -n 5     
    
  • Las 5 aplicaciones (User-agents) más utilizadas para conectarse a la página web analizada:
       awk -F\" '{print $6}' traffic.log | sort | uniq -c | sort -nr | head -n 5
    
  • Los 5 directorios del sito web más demandados:
       awk -F\" '{print $2}' traffic.log | sort | uniq -c | sort -nr | head -n 5
    
  • Los 5 puntos en el tiempo con el mayor tráfico por minuto:
       awk '{ print $4}' traffic.log | sort | uniq -c | sort -nr | head -n 5
    
  • Las 5 principales páginas de origen de la petición (HTTP Referrers):
       awk -F\" '{print $4}' traffic.log | sort | uniq -c | sort -nr | head -n 5
    
  • Los 5 códigos HTTP más contestados por la servidora:
       awk '{ print $9}' traffic.log | sort | uniq -c | sort -nr | head -n 5
    
  • Obtén la media de tráfico por día:
       # Excluyendo la fecha del ataque indicado por ``'DD/Mmm'`` (ejemplo: 15/Mayo):
       awk '{print $4}' traffic.log | cut -d: -f1 | uniq -c | grep -v 'DD/Mmm' | awk '{s+=$1} END {print s/NR}'
    
       # Sólo las fechas del ataque, puestas después del parámetro -e
       awk '{print $4}' traffic.log | cut -d: -f1 | uniq -c | grep -e 'DD/Mmm' -e 'DD/Mmm'
    

    Si el cliente está alojado en GoDaddy, las estadísticas de tráfico pueden ser visualizadas aquí.

  • Obtener el tráfico total en kilobytes para la duración de los logs entregados:
       awk '{totalkb += $10} END {printf ("%9.2f Kb\n", totalkb/1024);}' traffic.log
    
Interpretación de los resultados del análisis de los logs de tráfico

Una vez que se dispone de la información relevante de los logs, se puede proceder a interpretala. Es momento de:

  • Comprobar la información sobre las direcciones IP: propietario, localización, si está en una lista negra (blacklist), etc.
  • Chequear cuáles son los User-Agent que se están utilizando: visitantes legítimos, rastreadores, bots, etc.
  • Verificar las carpetas que se están pidiendo: una página específica de la web, caracteres aleatorios, página no disponible, etc.
  • Comprobar si la fecha con el máximo de tráfico por minuto es la fecha del ataque sospechado y compararla con la media del tráfico en días normales. ¿Dice algo sobre el huso horario del atacante?
  • Revisar si los referrers (página web desde donde vienen las peticiones) son únicamente sitios de redes sociales, ya que el enlace puede haber sido compartidos en ellas. Las fuentes de las direcciones IP también deben ser verificadas de esta manera. Esto puede parecer la petición o peticiones de una persona, pero en realidad estar viniendo de un enlace compartido en una red social y pulsado por varios seguidores.
  • Verificar si los códigos enviados en respuesta por el servidor indican “Recurso no disponible”, “Acceso no autorizado”, “Error del servidor”, etc.
  • Comprobar si el tráfico diario durante los días normales y las fechas del ataque es diferente.
  • Chequear si el tráfico total para la duración de logs está dentro del ancho de banda del plan de alojamiento. Puede ser causa de un problema con la disponibilidad del sitio web si se ha gastado más allá de su límite.

Prevención / Sensibilización

  • Contratar suficiente ancho de banda en el alojamiento web.
  • Tener el sistema operativo y los programas actualizados.
  • Contratar un servicio de protección DDOS.

Comentarios

Analizar los registros (logs) web solo es útil para detectar ataques DDoS en la capa aplicación (conocidos como “ataques de nivel 7”). Estos ataques usan los protocolos de la capa de aplicación, incluyendo HTTP y FTP, para atacar. A causa de que los registros (logs) de Apache gravan estos ataques, podemos ver evidencias de los ataques analizándolos.

Si sospechas que un ataque puede haber ocurrido en otra capa, te recomendamos buscar asistencia de tu proveedor de alojamiento, ya que probablemente no tengas acceso a la información necesaria para detectar ataques en otras capas.

Ejemplos de ataques DDoS en otras capas:

  • Capa de transporte (capa 4): SYN flood attack (ataque SYN por despobradamiento).
  • Capa de red (capa 3): desbordamiento CMP.

Recursos para profundizar:

Enlaces de interés