La siguiente nota, acompañada con un vídeo práctico, tiene por objetivo proporcionar algunas contramedidas frente a cierto tipo de ataques de denegación de servicio.

Existen multitud de ataques DDoS : Direct Attacks, TTL expiry attack, IP unreachable attack, ICMP transit attacks, Reflection Attacks, etc. La contención de los mismos resulta muy complicada sobre todo cuando se trata de un gran volumen de tráfico.

Contar con dispositivos que permitan frenar estos ataques resulta costoso, por este motivo contactar con el ISP es la idea más acertada. Sin embargo, cuando el ataque DDoS no es extremadamente excesivo, una configuración adecuada del sistema operativo y de los servicios afectados puede ayudar en gran parte a contrarrestar el ataque. Ejemplo de ello son ciertos parámetros del kernel de Linux que nos permiten modificar su comportamiento bajo ciertas condiciones y que resultarán muy útiles para blindar nuestro servidor en determinadas circunstancias. Algunos de estos parámetros se encuentran en /etc/sysctl.conf :
•tcp_syncookies: Permite protegernos contra ataques Syn Flood. La forma de trabajar es la siguiente: cuando la cola de peticiones de segmentos syn se completa, el kernel contesta con un segmento syn-ack como hace normalmente, pero creando un número de secuencia especialmente codificado que representa la IP origen y destino, el puerto y un timestamp del paquete recibido.
•ignore_broadcasts: Un tipo de ataque DDoS son los conocidos ataques Smurf donde se envían paquetes ICMP (echo request) a una dirección broadcast con una IP origen falsificada. Dicha IP falsificada será el objetivo del ataque al recibir múltiples paquetes de respuesta echo reply como consecuencia del paquete broadcast enviado por el atacante.
•rp_filter: conocida también como source route verification, tiene un objetivo similar al Unicast RPF (Reverse Path Forwarding) utilizado en routers Cisco. Se emplea para comprobar que los paquetes que entran por una interfaz son alcanzables (utilizando la tabla de rutas) por la misma basándose en la dirección origen, permitiendo de esta forma detectar IP Spoofing.

Respecto a los ataques llevados a cabo por programas como LOIC , también es posible implementar medidas haciendo uso de iptables y del módulo hashlimit con el objetivo de limitar el número de paquetes que queremos aceptar en un determinado servicio.

A continuación se muestra un ejemplo práctico donde se verá como aplicar algunas de estas contramedidas en una máquina Linux:

Video: Mitigación de ataques DDoS

Independientemente de las medidas adoptadas en el Sistema Operativo, se recomienda securizar de forma independiente aquellos servicios públicos que se encuentren en una DMZ como pueden ser servicios web, FTP, DNS, etc. Por ejemplo, en el caso de Apache sería de gran ayuda dotarle de módulos como mod_evasive, mod_antiloris, mod_security, mod_reqtimeout o similares para ayudar a combatir gran variedad de ataques DDoS contra esta plataforma (http post attack, http get attack utilizado por Slowloris, etc. )

Para más información sobre este tipo de ataques así como ejemplos de mitigación y análisis de tráfico, puede consultar el informe Análisis de tráfico con Wireshark