Memcached es un sistema de almacenamiento en caché de objetos de memoria distribuida de alto rendimiento, diseñado para almacenar y entregar objetos de datos a través de la red a velocidades increíbles. Está destinado a acelerar en gran medida las aplicaciones web y de bases de datos, y por ende, generalmente se implementa en redes internas y restringidas. En su configuración por defecto, memcached también atiende solicitudes sobre el protocolo UDP, sin ningún tipo de autenticación o verificación de las direcciones de origen.
Esto significa que, cuando se expone a Internet pública, un servidor memcached con configuración predeterminada permite a los atacantes almacenar objetos grandes en él y luego falsificar las solicitudes de las direcciones IP de las víctimas, logrando un gran factor de amplificación para los ataques de denegación de servicio distribuido (DDoS).
A continuación, te brindamos información para que puedas prevenir ataques de amplificación DsoS y algunas resoluciones para los posibles inconvenientes que puedan surgir.
Por ejemplo:
- memcached se está utilizando en ataques de amplificación DDoS.
- Preocupan las noticias de ataques DDoS con memcached.
Red Hat es consciente de los ataques de amplificación DDoS (Distributed Denial of Service) que se realizan mediante la explotación de servidores de memcached expuestos en Internet. Estos ataques aprovechan el protocolo de comunicación UDP que utiliza memcached. El ataque es efectivo debido al amplio ratio de amplificación; una solicitud con un tamaño de unos pocos cientos de bytes puede generar una respuesta de algunos megabytes o de cientos de ellos.
Debería parecer muy raro para un servicio como memcached necesitar estar expuesto a Internet pública. Tal exposición puede tener sus problemas de seguridad, permitiendo a los atacantes remotos filtrar o modificar la información almacenada en memcached.
Configuración predeterminada de memcached en los productos de Red Hat
Los paquetes de memcached que se incluyen con Red Hat Enterprise Linux 6 y 7 usan la siguiente configuración predeterminada:
- memcached escucha en todas las interfaces de red.
- Tanto TCP y UDP se encuentran habilitados.
- No se requiere autenticación para acceder a memcached.
- El servicio no se habilita automáticamente después de la instalación del paquete; esto puede ser habilitado manualmente o ser iniciado por el administrador del sistema.
- La configuración por defecto del firewall no permite el acceso remoto a memcached.
Se pueden realizar las siguientes acciones para proteger las instalaciones de memcached y evitar su uso en ataques DDoS.
Configurar el firewall:
Configure el firewall para garantizar que su servicio memcached solo sea accesible desde los hosts confiables que requieren acceso al servicio. Bloquee todo el acceso al servicio desde Internet público.
El puerto predeterminado utilizado por memcached es 11211, tanto TCP como UDP.
Deshabilitar UDP:
Si la implementación de memcached no depende del uso del protocolo de transporte UDP, desactive las conexiones a través de UDP y solo permita las conexiones TCP. Esta restricción se puede implementar configurando el firewall como se indicó anteriormente, o configurando memcached para que no escuche en el puerto UDP.
Si memcached se inicia con la opción «-U 0», no escuchará en el puerto UDP. Esta configuración puede ser aplicada de forma permanente modificando el valor OPTIONS en el archivo de configuración /etc/sysconfig/memcached
Esta es la configuración predeterminada /etc/sysconfig/memcached en Red Hat Enterprise Linux 6 y 7:
PORT=»11211″
USER=»memcached»
MAXCONN=»1024″
CACHESIZE=»64″
OPTIONS=»»
El transporte UDP se puede desactivar cambiando la línea de OPTIONS a:
OPTIONS=»-U 0″
Restringir memcached a localhost:
Si el servicio de memcached solo necesita acceder desde otros servicios que se ejecutan en el mismo servidor, restrinja el acceso a memcached desde remoto. Además de la configuración del firewall como se indicó anteriormente, esto se puede lograr configurando memcached para que solo escuche en la interfaz loopback utilizando la opción «-l 127.0.0.1». Esta configuración puede realizarse permanente modificando el valor OPTIONS en el archivo de configuración /etc/sysconfig/memcached a:
OPTIONS=»-l 127.0.0.1″
Puedes deshabilitar UDP y solo escuchar las conexiones desde el host local usando la siguiente configuración en OPTIONS:
OPTIONS=»-U 0 -l 127.0.0.1″
Información adicional:
Una buena práctica recomendada para reconocer y detener dicho comportamiento es la línea base del tráfico de red, el análisis y el alerta/bloqueo de tráfico anómalo para cualquier sistema que tenga información crítica. El tráfico de red puede gestionarse y el acceso inapropiado puede detenerse utilizando herramientas como iptables y firewall.
Se pueden encontrar otras opciones de seguridad y configuración para los productos de Red Hat en las guías de documentación y seguridad disponibles en su portal oficial.