Lo primero que debe ocurrir es darnos cuenta de que estamos sufriendo un ataque de denegación de servicio. Hay varios niveles en los que podemos detectarlo, pero suponemos que tienes un servidor web y deja de funcionar, no puedes acceder por ssh o va muy lento. Digamos que detectas un deterioro en la red.
Lo primero que debemos hacer es detectar el tipo de ataque que estamos sufriendo. Hay muchos tipos de ataques DDOS. Podemos sufrir una denegación de servicio a un servidor DNS por UDP y los famosos ataques de amplificación, podemos sufrir un SYN FLOOD, etc.
Podemos acceder a nuestro server y tirar un simple netstat -n |more para ver las conexiones en nuestro sistema. No es muy elegante, pero estamos hablando de que tienes un problema, y no tienes una solución !!!.
tcp 0 0 ****ip destino**** 190.229.110.15:63027 SYN_RECV
tcp 0 0 ****ip destino**** 186.56.20.157:28904 SYN_RECV
tcp 0 0 ****ip destino**** 190.229.110.15:61311 SYN_RECV
tcp 0 0 ****ip destino**** 190.229.110.15:61516 SYN_RECV
tcp 0 0 ****ip destino**** 190.224.191.188:4192 SYN_RECV
tcp 0 0 ****ip destino**** 190.229.110.15:61147 SYN_RECV
tcp 0 0 ****ip destino**** 190.224.191.188:3231 SYN_RECV
tcp 0 0 ****ip destino**** 117.41.182.188:56738 SYN_RECV
tcp 0 0 ****ip destino**** 81.39.49.188:53471 SYN_RECV
tcp 0 0 ****ip destino**** 190.224.191.188:3153 SYN_RECV
tcp 0 0 ****ip destino**** 189.128.237.238:49746 SYN_RECV
tcp 0 0 ****ip destino**** 190.229.110.15:62547 SYN_RECV
tcp 0 0 ****ip destino**** 190.229.110.15:62271 SYN_RECV
tcp 0 0 ****ip destino**** 109.185.116.199:58821 SYN_RECV
tcp 0 0 ****ip destino**** 190.224.191.188:2888 SYN_RECV
tcp 0 0 ****ip destino**** 190.16.76.182:64740 SYN_RECV
tcp 0 0 ****ip destino**** 190.16.76.182:64006 SYN_RECV
tcp 0 0 ****ip destino**** 190.16.76.182:63225 SYN_RECV
tcp 0 0 ****ip destino**** 190.229.110.15:62272 SYN_RECV
tcp 0 0 ****ip destino**** 190.16.76.182:65325 SYN_RECV
Al parecer estamos sufriendo un SYN FLOOD, por el número tan alto de conexiones SYN recibidas.
Podemos contar el número de conexiones por ip de esta manera:
netstat -anp |grep 'SYN_RECV' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
En el caso de sufrir otro tipo de ataque puedes cambiar SYN_RECV por TIME_WAIT o cualquier otro estado que detectes numeroso.
Con la salida del comando podemos ver que ip´s son las que más conexiones están haciendo de ese tipo.
Podemos tomar alguna ip y geolocalizarla con alguna página que ofrezca este servicio, como pueda ser esta.
De esta manera, con unas cuantas ip podemos saber el origen principal del ataque de denegación de servicio.
Ahora es el turno de banear en Iptables el pais entero :-).
Este script baneará las ip´s clasificadas por país de http://www.ipdeny.com/ipblocks/data/countries
Realiza el mismo proceso varias veces, editando el script antes de ejecutarlo, y añadiendo las siglas de los países que detectas están produciendo el ataque.
Si quieres tenerlo preparado puedes descargar el script, hacerlo ejecutable (chmod +X nombre.fichero).
Con estas medidas no puedo garantizar que pares el ataque, pero si consigues fitrar el tráfico hacia tu servidor, descartando el tráfico de países que no te van a comprar nada ( o visitar tu web), conseguirás mitigarlo en gran medida. Salvo si tu comercio está orientado hacia China, Rusia, etc xD.
Existen varias medidas que podemos implementar para proteger nuestros servidores de ataques DDOS, pero creo que eso será motivo de otro post mas profundo.
Espero que os sirva este BOTÓN DEL PANICO y que nunca tengáis que usarlo.
Gracias por leerme.
Recuerda que puedes buscar entre mis libros de hacking en español en en recopilatorio de libros sobre hacking