Identificar y responder rápidamente a un ataque DoS o DDoS es crucial para mantener la salud y el funcionamiento óptimo de un servidor web. En este artículo, presentamos métodos detallados para diagnosticar estos ataques en servidores Plesk, tanto para Linux como para Windows Server.
Diagnóstico en Tiempo Real en Linux
Conexión SSH al servidor: Comience estableciendo una conexión SSH con su servidor para ejecutar comandos de diagnóstico en tiempo real.
Determinación de IPs y conexiones: Use el comando a continuación para identificar las direcciones IP y el número de conexiones, especialmente a los puertos 80 y 443:
ss -tan state established | grep ":80\|:443" | awk '{print $4}'| cut -d':' -f1 | sort -n | uniq -c | sort -nr
Identificación de dominios bajo ataque: Para averiguar qué dominios están siendo atacados actualmente, ejecute:
for log in /var/www/vhosts/system/*/logs/*access*log; do echo -n "$log "; tail -n10000 "$log" | grep -c 203.0.113.2; done | sort -n -k2
Chequeo de conexiones SYN_RECV: Este comando ayuda a identificar un posible ataque syn-flood revisando el número de conexiones en estado SYN_RECV:
ss -tan state syn-recv | wc -l
Determinación de la IP objetivo: Si hay varias direcciones IP en Plesk, use este comando para identificar cuál está bajo ataque:
netstat -lpan | grep SYN_RECV | awk '{print $4}' | cut -d: -f1 | sort | uniq -c | sort -nk 1
Para un Ataque Finalizado
Creación de un entorno de investigación: Después de acceder al servidor vía SSH, prepare un directorio para analizar los logs históricos siguiendo estos pasos:
mkdir /root/inv
cd /var/www/vhosts/system
for i in *; do mkdir /root/inv/$i; done
Recopilación de log-files: Copie los log-files de los últimos días al entorno de investigación:
for i in *; do find $i -mtime -3 -type f -exec cp -a {} /root/inv/$i \;; done
Descompresión y filtrado: Proceda a descomprimir los archivos log y eliminar archivos irrelevantes para el análisis.
cd /root/inv
for i in /root/inv/*/*; do [[ ${i:(-3)} == ".gz" ]] && gunzip $i ; done
rm /root/inv/*/*.conf /root/inv/*/*.png /root/inv/*/*webalizer* /root/inv/*/*webstat */*html
Análisis y reporte: Use comandos de filtrado y ordenamiento para identificar los archivos log más relevantes y los patrones de acceso durante el ataque.
Obtener entradas del día del ataque para generar un informe:
Nota: Como ejemplo, se utilizará el 30/Oct/2024.
for i in *; do [[ -d $i ]] && grep -rh "\[30/Oct/2024" ./$i > $i.accessed; done
Ordenar las entradas por tamaño:
ls -laS | less
Nota: Se mostrará el tamaño de los archivos de registro (logs). Cuanto mayor sea el tamaño de un archivo de registro, mayor será la probabilidad de que haya sido un objetivo del ataque.
Encontrar las direcciones IP más utilizadas:
cut -f 1 -d ' ' *.accessed | sort -n | uniq -c | sort -nr | less
Nota: Este comando muestra cuántos intentos de acceso realizó cada dirección IP en el período de tiempo especificado en el paso anterior.
Identificar los dominios que fueron atacados por estas direcciones IP:
grep -rc 203.0.113.2 /root/inv/*/* | sort -n -k2 -t:
Si necesitas modificar algo o más explicaciones, dime.
Diagnóstico en Windows Server
Conexión RDP y Prompt de Comando: Para servidores Windows, conéctese vía RDP y abra una ventana de comandos para ejecutar:
netstat -ano | find /c "80"
netstat -ano | find /c "443"
Interpretación: Un número elevado de conexiones a estos puertos es indicativo de un ataque DDoS.
Conclusión
La pronta identificación de un ataque DoS/DDoS permite tomar las medidas necesarias para mitigarlo y proteger la integridad del servidor. Al seguir estos comandos y procedimientos detallados para Plesk en Linux y Windows Server, los administradores de sistemas pueden diagnosticar y responder eficazmente a estos ataques, salvaguardando así la disponibilidad y el rendimiento de los sitios web.