Se encuentra usted aquí

Mitigación de ataques tipo LOIC

El presente documento tiene como objetivo explicar y ayudar a mitigar ataques tipo LOIC (Low Orbit Ion Cannon), que actualmente se encuentran de moda debido a su facilidad de uso.

Antecedentes

LOIC es una aplicación Open Source diseñada específicamente para atacar redes, esta escrita en C# y fue desarrollada inicialmente por Praetox Technologies, después fue liberada al dominio publico.

Dicha herramienta realiza ataques de DoS (Denial-of-Service) y DDoS (Distributed DoS) en un sitio destino mediante saturación de paquetes TCP, UDP o peticiones HTTP; con la intención de interrumpir el servicio.

La popularidad de dicha herramienta radica en su simplicidad de uso, cualquier persona aún sin conocimientos informáticos, puede realizar dichos ataques o contribuir a ataques de gran volumen simplemente descargando un programa, o ejecutando la versión web. Un claro ejemplo es el caso de MVS, un ataque coordinado mediante twitter que afecto considerablemente el servicio dejandolo inaccesible por periodos de tiempo.

Medidas preventivas

Como medida principal lo importante es contar con reglas de firewall correctamente configuradas y con limites bien definidos para limitar la cantidad de peticiones realizadas al servidor por un cliente.

A modo de ejemplo, en el firewall se podría definir un limite de 100 conexiones por cliente, con un ratio de 80 conexiones en un periodo de 5 segundos para el servicio Web, y asumir que sí se tiene una cantidad mayor de conexiones, es un intento de ataque.
Es necesario realizar los cálculos correspondientes para definir un limite adecuado y no filtrar peticiones legitimas.

Como ejemplo se muestras las reglas de firewall (PF de OpenBSD sobre FreeBSD), que utiliza uno de nuestros servidores:

table  persist file "/etc/pf/abuse.hosts"

pass in on $host_pub_if proto tcp \
     from any \
     to $vps_addr port $vps_in_tcp_ports flags S/SA keep state \
     (max-src-conn 100, max-src-conn-rate 90/6, overload  flush)

block in log on $host_pub_if from  to any

Como se puede apreciar, el limite máximo son 100 conexiones por cliente con una velocidad de 90 en un periodo de 6 segundos, en el evento de recibir mas de esas conexiones, estás se agregan a una tabla de hosts que son filtrados durante un periodo de tiempo.

En caso de no poder realizar modificaciones al firewall o no tener dicha funcionalidad, lo ideal es proteger el servicio web con herramientas adicionales; un proxy, balanceadores, o módulos adicionales que realicen funciones similares a las del firewall son buenas alternativas.

En el caso del servidor Web Apache existen varios módulos que puede ayudar a mitigar el ataque, algunos de ellos son los siguientes:

mod_bandwidth (Apache 1.3)
mod_bw (Apache 2.x)
mod_cband (Apache 2.x)
mod_limitipconn (Apache 1.3)
mod_limitipconn2 (Apache 2.x)

mod_bandwidth y mod_bw sirven para limitar el ancho de banda que consume un cliente así como el número total de conexiones por vhost.
mod_cband es similar a los anteriores pero con un control mas preciso sobre la cantidad de conexiones por cliente y vhost.
mod_limitipconn y mod_limitipconn2 permiten limitar el número de conexiones simultaneas que puede hacer un cliente.

Conclusión

Este tipo de ataques es difícil de limitar, pero no imposible, lo mas importante de todo es estar al tanto de los servicios para detectar oportunamente cuando alguno comienza a fallar y solucionar el problema de inmediato. Herramientas como nagios, zabbix, centreon, etc; nos ayudarán a esta tarea, pero eso queda pendiente para un articulo posterior.

Autor
Angel Gabriel León Rodríguez