En los últimos años se han puesto de moda lo ataques DDoS (Distributed Denial of Service) en la red de redes, nuestra Isla no queda exenta de este tipo de incursiones y hoy ofreceremos una serie de comandos e instrucciones que podemos utilizar para prevenir, detectar y solucionar este tipo de ataques.
¿Qué es un ataque DDoS?
Un Ataque por denegación de servicio (DoS, Denial of service) tiene como objetivo imposibilitar el acceso a los servicios y recursos de una organización durante un período indefinido de tiempo. Por lo general, este tipo de ataques está dirigido a los servidores de una compañía, para que no puedan utilizarse ni consultarse.
Pasos para detectar el ataque DDoS
netstat -na
Esta pantalla se incluyen todas las conexiones de Internet activas en el servidor y sólo las conexiones establecidas.
netstat -an | grep :80 | sort
Mostrar sólo las conexiones activas de Internet al servidor en el puerto 80 , que es el puerto http y ordenar los resultados. Útil en la detección de una sola inundación (flood) por lo que permite reconocer muchas conexiones provenientes de una dirección IP.
netstat -n -p|grep SYN_REC | wc -l
Este comando es útil para saber cuántos SYNC_REC activa se están produciendo en el servidor. 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.
netstat -n -p | grep SYN_REC | sort -u
Haz una lista de todas las direcciones IP de los implicados.
netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
Enumere todas las direcciones IP únicas del nodo que están enviando el estado de la conexión SYN_REC .
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Utilice el comando netstat para calcular y contar el número de conexiones de cada dirección IP que hace al servidor.
netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Cantidad de direcciones IP que se conectan al servidor mediante el protocolo TCP o UDP.
netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
Verifique las conexiones marcadas como ESTABLECIDOS en lugar de todas las conexiones, y muestra las conexiones para cada IP.
netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1
Muestra y lista de direcciones IP y su número de conexiones que se conectan al puerto 80 en el servidor. El puerto 80 es utilizado principalmente por HTTP para peticiones Web.
Cómo detener o limitar el ataque DOS
Una vez que haya encontrado la IP que están atacando el servidor puede utilizar los siguientes comandos para bloquear su conexión a su servidor :
iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT
Tenga en cuenta que usted tiene que reemplazar $IPADRESS con las direcciones IP que se han encontrado con netstat.
Después de la cocción el comando anterior, MATAR todas las conexiones httpd para limpiar su sistema y reiniciarlo posteriormente usando los siguientes comandos:
killall -KILL httpd
service httpd start # Para los sistemas de Red Hat /etc/init/d/apache2 restart # Para sistemas Debian
Fuente: desdelinux
Este articulo estaría bueno que también lo trasladaran para la Wiki 😉
Bueno en los kernel BSD existe un método muy usado que consiste en modificar o tunear con el daemon sysctld la variable
¨kern.ipc.somaxconn¨, esto permite modificar el tamaño de las nuevas listas de filas que van llegando por TCP, los valores por defecto son de 128 (128 conexiones simultaneas en una sola fila), el cual es demasiado bajo para mantener una conducción robusta de las nuevas conexiones en un servidor (me estoy enfocando en web únicamente). Para tales ambientes, es recomendado incrementar este valor a 1024 o más alto.
¿Y porque hacer este aumento en el kernel?
Porque las filas grandes de conexión también hacen un mejor trabajo para evitar ataques de denegación de servicio (DoS), dando tiempo a que el admin se de cuenta de dicho ataque y pueda reaccionar con más calma, sin temor a que el kernel o los servicios que están corriendo (apache, ngix, etc..) se colapsen, eso sí dependiendo de la infraestructura de red que tenga, Ethernet (100mb/s, 1Gb/s, 10Gb/s), Myrinet (muy usada en cluster, 1280mb/s, 2Gb,/s 10Gb/s), fibra óptica, etc…, será la afectación a la respuesta del servicio (alto ping durante le ataque) pero el servicio al final no se cae.