viernes, 12 de septiembre de 2014

DDOS como actuar ante un SYN FLOOD en un servidor Linux con Iptables.

Voy a comentaros algunas ideas para ayudaros en el caso de estar sufriendo un ataque de denegación de servicio sin estar preparados para ello !! xD

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