ataque-apache-clicko-informatica-programacion

Aplicable a Linux. SO: Ubuntu Server 18.04 LTS. Apache 2.4

Si eres administrador de un servidor web dónde se alojan múltiples sites y ves que temporalmente las conexiones de red del servidor son anormalmente altas y se alcanzan los límites establecidos por Apache para procesar las peticiones (MaxRequestWorkers o MaxClients), es muy probable que estés sufriendo un ataque de denegación de servicio (DOS) o DDOS (denegación de servicio distribuido) procedente de alguna IP.

Realmente estos ataques son un intento de que los recursos del servidor o la red no estén disponibles para sus usuarios. Normalmente estos ataques tienen como víctimas a sitios o servicios alojados en servidores web de alto perfil, como bancos, pasarelas de pago con tarjeta de crédito, e incluso servidores de nombres raíz (DNS). Pero esto no significa que cualquier servidor expuesto a internet, sea cual sea su función, no sea sensible a recibir ataques de este tipo.

En este tipo de ataques se trata de utilizar los recursos totales de forma que el sistema ya no puede ofrecer sus servicios y se bloquea la comunicación con los usuarios reales.

A continuación, vamos a ver cómo tratar de identificar las IPs que generan el ataque y bloquearlas.

  1. Nos conectamos a nuestro servidor mediante SSH.
  2. Ejecutamos el siguiente comando que nos muestra las direcciones IP de origen que está realizando peticiones a nuestro servidor y el número de conexiones concurrentes por IP que están siendo procesadas en este instante. Con el resultado de este comando anotamos la Ip (o IPs) que tienen un alto número de conexiones.
# ss -tan state established | grep ":80\|:443" | awk '{print $4}'| cut -d':' -f1 | sort -n | uniq -c | sort -n

 

  1. Con las IP del punto anterior ejecutamos el siguiente comando para encontrar los dominios bajo esas peticiones.
# for log in /var/www/vhosts/system/*/logs/*access*log; do echo -n "$log "; tail -n10000 "$log" | grep -c <em>[dirección_ip]</em>; done | sort -n -k2

Este comando consulta los accesos por cada dominio de la IP y cuenta el número de entradas en el registro de la IP consultada.

 

  1. Ahora comprobamos el número de conexiones en estado SYN_RECV. El número debe ser bastante bajo, preferiblemente menos de 5 . En los incidentes de ataques de denegación de servicio o bombas por correo, el número puede ser bastante alto. Sin embargo, el valor siempre depende del sistema, por lo que un valor alto puede ser normal en otro servidor.
# ss -tan state syn-recv | wc -l

 

Detener ataque:

Cuando hayamos localizado las IP que están atacando el servidor usaremos los siguientes comandos de iptables para bloquearlas en nuestro servidor. Recuerda cambiar [dirección_ip] por las direcciones IP que has localizado.

# iptables -A INPUT -s [dirección_ip] -j DROP/REJECT

Y por último solo nos queda hacer un kill sobre los procesos activos, es decir, mataremos todas las conexiones activas de apache y reiniciaremos el servicio.

# killall -KILL httpd
# service apache2 restart

 

 

Twitter
Visit Us
Follow Me
LinkedIn
Share