Descripción #
Imaxe Hardened Memcached es una AMI de Memcached endurecida y lista para producción, pensada como sustituta directa de «Memcached packaged by Bitnami». Instala Memcached con los paquetes estándar de Ubuntu — apt, systemd y rutas FHS, sin árboles monolíticos en /opt ni supervisores propietarios — sobre la base endurecida de imaxe.
Dos diferencias de seguridad de fábrica frente al producto de Bitnami: la autenticación SASL viene activada (no deshabilitada), con una password única por instancia, y el tráfico de red va cifrado con TLS, con un certificado generado también en cada instancia. Como el único mecanismo SASL de memcached es PLAIN, sin TLS la password viajaría en claro — aquí no puede pasar.
El resto es la base endurecida de imaxe: firewall en denegación por defecto, SSH reforzado, AppArmor en modo enforce, auditoría con auditd, integridad de ficheros con AIDE, detección de rootkits con rkhunter, antivirus ClamAV y protección de fuerza bruta con fail2ban. Todo verificado en cada publicación con una auditoría Lynis cuyo informe completo puedes leer más abajo.
Guía rápida: en marcha en 5 minutos #
Todo lo que necesitas para pasar de cero a una cache endurecida en producción.
No hace falta pelearse con la consola de AWS. El lanzador de imaxe es un formulario guiado que te pregunta lo imprescindible — región, tipo de instancia, red y acceso SSH — y genera una plantilla de CloudFormation que despliega la AMI ya configurada. Te evita los errores típicos del lanzamiento manual (arquitectura equivocada, grupo de seguridad abierto de más, keypair sin asignar) y deja la pila entera bajo tu control en tu propia cuenta.
Si prefieres hacerlo a mano, el camino largo son cinco pasos:
| Paso | Acción | Dónde | Tiempo |
|---|---|---|---|
| 1 | Suscríbete y lanza la AMI — cualquier instancia arm64 (Graviton); t4g.medium es la recomendada. Incluye 7 días de prueba gratuita. | AWS Marketplace → EC2 | ~2 min |
| 2 | Abre el puerto 22 en el grupo de seguridad, restringido a tu IP o CIDR. El 11211 viene cerrado a propósito: ábrelo solo al CIDR de tu VPC si tu aplicación vive en otra máquina. | Consola EC2 | 1 min |
| 3 | Lee la credencial SASL — está en la consola del sistema (System Log de EC2) o, por SSH, con sudo imaxe memcached credentials. En el primer arranque la password es el instance-id. | Consola EC2 o SSH | 1 min |
| 4 | Conecta tu cliente con TLS + SASL: usuario memcached, la password de la instancia y el puerto 11211. El certificado es autofirmado: dile a tu cliente que confíe en /etc/memcached/tls/server.crt. | Tu aplicación | ~1 min |
| 5 | Listo — el tamaño de la cache ya está ajustado a la instancia. Explora el estado con imaxe memcached status. | La instancia | — |
No hay asistente de configuración ni pasos posteriores obligatorios: la imagen sale endurecida y dimensionada de fábrica. El resto de esta página es opcional. Si algo falla, ve directo a resolución de problemas.
Características #
Todo lo que incluye la imagen, agrupado por lo que es estándar y lo que es nuestro.
General
- Memcached 1.6 de los paquetes oficiales de Ubuntu 26.04 LTS (resolute, arm64), gestionado con systemd — sin árboles en
/optni scripts propietarios. - Base Ubuntu actualizada en cada build, con parches de seguridad automáticos (
unattended-upgrades) activados. - Firewall
ufwen denegación por defecto: solo 22 (SSH) y 11211 (memcached) permitidos localmente; el grupo de seguridad del Marketplace solo publica el 22. - SSH endurecido: sin root, sin contraseñas, solo clave pública, criptografía moderna (ed25519, chacha20-poly1305, kex post-cuántico sntrup761x25519).
- AppArmor con perfiles extra instalados y todos en modo enforce.
- Kernel endurecido vía sysctl, montajes con
noexec,nosuid,nodev,/procconhidepid=2. - Auditoría completa con
auditd, integridad con AIDE y debsums, anti-malware con rkhunter y ClamAV, fail2ban integrado con ufw.
Especiales
- SASL obligatorio de fábrica: usuario
memcachedcon password única por instancia (el instance-id en el primer arranque), volcada a la consola del sistema EC2 — donde la busca quien viene de Bitnami. Nada se hornea en la AMI: cada instancia estrena credencial. - TLS de serie en el puerto 11211 (mínimo TLS 1.2): certificado autofirmado emitido en cada instancia — clave EC P-256, instance-id como CN, IPs y nombres de la instancia como SAN — antes de que arranque el servicio. Puedes instalar el tuyo.
- Puerto 11212 en claro solo en loopback, para las herramientas del sistema (
memcstaty compañía no hablan TLS). Sigue exigiendo SASL y no es accesible desde fuera. - UDP desactivado afirmativamente (
-U 0): el protocolo UDP de memcached es el vector clásico de amplificación DDoS. - Tuning automático en cada arranque:
imaxe memcached optimizerecalcula memoria de cache, conexiones e hilos con la CPU y RAM reales — para la instancia, cambia el tipo, arranca, y la cache se redimensiona sola. - Gestión de usuarios SASL sin reinicios:
imaxe memcached users add/rotate/delete— la base SASL se lee en cada autenticación y la cache no se vacía. - Herramienta
imaxeincluida: una CLI para operar el servicio, las credenciales, el certificado y todo el hardening sin editar ficheros a mano. - Auditoría Lynis en cada publicación, con el informe completo publicado en esta página.
Módulos de imaxe
Módulos de la herramienta imaxe horneados en esta AMI, con su documentación:
| Módulo | Qué hace | Documentación |
|---|---|---|
| memcached | El módulo del producto: estado, credenciales, usuarios SASL, TLS y tuning automático del servicio. | Ver docs → |
| os | Base del sistema: actualizaciones desatendidas, locale, zona horaria, hostname y hora. | Ver docs → |
| ssh | Claves autorizadas, host keys, sesiones activas y hardening de sshd desde un solo comando. | Ver docs → |
| firewall | Estado de ufw, bloqueo/desbloqueo de IPs y apertura o cierre de puertos. | Ver docs → |
| audit | Eventos de auditd y reglas de auditoría CIS sin pelearte con auditctl. | Ver docs → |
| aide | Integridad de ficheros (FIM) con AIDE. | Ver docs → |
| rkhunter | Escaneo del servidor en busca de rootkits. | Ver docs → |
| clamav | Antivirus ClamAV en runtime. | Ver docs → |
| lynis | Auditoría de hardening del sistema con informe accionable. | Ver docs → |
| fail2ban | Estado de las jails, IPs baneadas, banear y desbanear a mano. | Ver docs → |
| secrets | Genera, lee y rota los secretos locales de la instancia — incluida la password SASL. | Ver docs → |
| info | Inventario de la AMI en /etc/imaxe/info.yaml, sin secretos. | Ver docs → |
| global-alerts | Bus de alertas transversal de la instancia (SNS). | docs en preparación |
Dimensionamiento y costes #
La AMI corre en cualquier instancia arm64 (Graviton) de AWS y se autodimensiona: en cada arranque, imaxe memcached optimize asigna a la cache el 60 % de la RAM utilizable (tras reservar 512 MB para el SO y los agentes) y deriva hilos y conexiones del tamaño de la instancia. Elige el tipo por la cache que necesites: más RAM = más cache, sin tocar configuración. La instancia recomendada de partida es t4g.medium, que es también donde se ejecutan las builds y tests de esta imagen.
| Concepto | Precio |
|---|---|
| Suscripción por hora | 0,014 $/h por instancia |
| Suscripción anual | 99 $/año por instancia |
| Prueba gratuita | 7 días |
Al precio de la suscripción se suma el coste normal de AWS (instancia EC2, disco EBS y tráfico), que pagas directamente a AWS según tu tarifa. Memcached es una cache en memoria: prioriza RAM sobre disco al elegir la instancia.
Reportes Lynis #
Resultado de la auditoría de endurecimiento Lynis de cada versión publicada: índice de hardening, avisos y sugerencias, con el informe completo línea a línea.
| Versión | Índice hardening | Tests | Avisos | Sugerencias | Auditoría | Informe |
|---|---|---|---|---|---|---|
| v2.0 | 100/100 | 241 | 0 | 0 | 2026-08-15 | HTML · PDF ↓ |
| v1.0 | 94/100 | 244 | 1 | 1 | 2026-08-05 | HTML · PDF ↓ |
El índice de hardening lo calcula Lynis a partir de los tests superados. Reejecutamos la auditoría en cada publicación y revisamos a mano cada aviso y sugerencia antes de subir la imagen al Marketplace; el detalle de los hallazgos abiertos está en el propio informe.
Versiones disponibles #
Versiones de esta AMI publicadas en AWS Marketplace:
| Versión | Memcached | Ubuntu | Arquitectura | Estado | Publicación |
|---|---|---|---|---|---|
| v2.0 | 1.6 | 26.04 LTS (resolute) | arm64 | ✓ activa | 2026-08 |
| v1.0 | 1.6 | 24.04 LTS (noble) | arm64 | ✓ activa | 2026-08 |
Ciclo de vida
La v2.0 es la versión actual, activa y mantenida: los parches de seguridad de Ubuntu llegan solos a las instancias vía unattended-upgrades, y publicamos versiones nuevas de la AMI en el Marketplace con cadencia regular, cada una con su propia auditoría Lynis. Cuando salga una versión nueva aparecerá en esta tabla y en el changelog.
Cómo lanzar la AMI #
La AMI sigue el flujo estándar de lanzamiento de EC2 sobre instancias arm64 (Graviton). El grupo de seguridad del Marketplace solo publica un puerto:
| Tipo | Protocolo | Puerto | Origen |
|---|---|---|---|
| (*) SSH | TCP | 22 | tus CIDR |
| Memcached (opcional) | TCP | 11211 | solo el CIDR de tu VPC o el SG de tus clientes |
El 11211 viene cerrado en el grupo de seguridad a propósito, igual que en el producto de Bitnami. Aun con TLS por medio, ábrelo solo a tu red privada — nunca 0.0.0.0/0. El firewall interno (ufw) ya lo permite, así que basta con la regla del grupo de seguridad. Para acceso puntual desde fuera, usa un túnel SSH: ssh -i clave.pem -L 11211:127.0.0.1:11211 ubuntu@<ip-publica> (el reenvío de puertos está permitido en esta AMI, a diferencia del resto de imágenes de imaxe). Dentro de la instancia, sudo imaxe memcached open-port --cidr <tu-red> y close-port controlan el firewall local.
La v2.0 se publica para arquitectura arm64: elige una familia Graviton (t4g, m7g/m8g, c6g–c8g, r7g/r8g…). No arranca en instancias x86_64.
Una vez en marcha — SSH: usuario ubuntu con la keypair elegida al lanzar. No hay usuario root accesible ni autenticación por contraseña. Credencial de la cache: usuario SASL memcached con el instance-id como password inicial, visible en la consola del sistema EC2 o por SSH:
ssh -i mi-keypair.pem ubuntu@<ip-de-la-instancia>
sudo imaxe memcached credentials # usuario, password y puerto
imaxe memcached tls show # huella del certificado de esta instanciaLa imagen por dentro # experto
Todo lo que corre dentro de la AMI, dónde vive cada cosa y los comandos que usarás en el día a día.
Servicios y puertos
| Servicio | Unidad systemd | Puerto | Qué hace |
|---|---|---|---|
| Memcached | memcached.service | 11211 | La cache, con TLS (mín. 1.2) y SASL obligatorios |
| Memcached (loopback) | memcached.service | 11212 | Escucha en claro solo en 127.0.0.1, para herramientas locales; SASL sigue siendo obligatorio |
| Preparación de instancia | imaxe-memcached-instance-setup.service | — | Antes de memcached en cada arranque: certificado TLS, credencial SASL y tuning. Idempotente |
| OpenSSH | ssh.service | 22 | Acceso remoto endurecido (drop-in 99-imaxe-harden.conf) |
| ufw | ufw.service | — | Firewall en denegación por defecto (permite 22 y 11211) |
| auditd | auditd.service | — | Auditoría del sistema (identidad, sudoers, sshd, logins) |
| fail2ban | fail2ban.service | — | Baneo de fuerza bruta SSH vía ufw, leyendo el journal |
| AppArmor | apparmor.service | — | Control de acceso obligatorio, todos los perfiles en enforce |
| freshclam | clamav-freshclam.service | — | Actualización de firmas de ClamAV, 24 veces al día |
| unattended-upgrades | apt-daily-upgrade.timer | — | Parches de seguridad automáticos |
El servicio memcached queda parado en el bake y arranca por primera vez ya en tu instancia: ni el certificado ni la credencial existen en la AMI. El testigo /etc/memcached/tls/.generated-for guarda el instance-id del certificado; al clonar la instancia, el id no coincide y el material se regenera solo.
Rutas clave
| Ruta | Qué es |
|---|---|
| /etc/memcached.conf | Configuración del servicio; el bloque BEGIN/END imaxe memcached optimize lo reescribe el módulo en cada arranque |
| /etc/memcached/tls/ | Certificado y clave TLS de esta instancia (server.crt / server.key) |
| /etc/sasl2/memcached-sasldb2 | Base de usuarios SASL (gestión vía imaxe memcached users) |
| /etc/imaxe/secrets/memcached/password | Password SASL de la instancia (0600, root) |
| /etc/imaxe/memcached.yml | Configuración del módulo memcached de imaxe |
| /etc/ssh/sshd_config.d/99-imaxe-harden.conf | Hardening de sshd (drop-in, no toca el fichero principal) |
| /etc/sysctl.d/99-zz-imaxe-harden-kernel.conf | Endurecimiento del kernel vía sysctl |
| /var/log/sudo.log | Registro de todos los usos de sudo |
| /usr/local/bin/imaxe | Binario de la CLI imaxe |
Comandos útiles
| Tarea | Comando |
|---|---|
| Estado del servicio, escuchas, TLS, SASL y estadísticas | imaxe memcached status |
| Credencial de esta instancia | sudo imaxe memcached credentials |
| Rotar la password SASL (sin reinicio, no vacía la cache) | sudo imaxe memcached users rotate |
| Usuarios SASL: alta / listado / baja | sudo imaxe memcached users add app1 |
| Certificado en uso (sujeto, SAN, caducidad, huella) | imaxe memcached tls show |
| Regenerar el certificado (p. ej. tras cambiar de IP pública) | sudo imaxe memcached tls renew –force |
| Ver el tuning recomendado para esta instancia | imaxe memcached optimize –show |
| Aplicar el tuning ahora (reinicia: vacía la cache) | sudo imaxe memcached optimize |
| Logs del servicio | journalctl -u memcached |
| Logs de la preparación de instancia | journalctl -u imaxe-memcached-instance-setup |
Comprobación local con las herramientas del sistema — libmemcached-tools no habla TLS, así que se usa el puerto en claro de loopback (--binary porque libmemcached solo hace SASL sobre el protocolo binario):
memcstat --binary --servers=127.0.0.1:11212 --username=memcached \
--password=$(sudo imaxe memcached credentials --show-password --json | jq -r .password)Para instalar tu propio certificado en lugar del autofirmado:
sudo install -m 0644 -o root -g root mi.crt /etc/memcached/tls/server.crt
sudo install -m 0640 -o root -g memcache mi.key /etc/memcached/tls/server.key
sudo rm -f /etc/memcached/tls/.generated-for # sin testigo, el módulo no lo toca
sudo systemctl restart memcachedCada subsistema del hardening tiene además su módulo en la CLI imaxe — ver módulos de imaxe.
Copias y actualizaciones #
- Parches automáticos:
unattended-upgradesaplica las actualizaciones de seguridad de Ubuntu a diario, sin intervención. - Firmas antivirus: freshclam actualiza la base de ClamAV 24 veces al día.
- AMIs nuevas: publicamos versiones actualizadas de la imagen en el Marketplace con cadencia regular; cada versión pasa su propia auditoría Lynis antes de publicarse.
- Copias de seguridad: no hay, por diseño. Memcached es una cache volátil: su contenido se pierde en cada reinicio y no debe contener el único ejemplar de ningún dato. No hay nada que respaldar ni restaurar.
Cualquier systemctl restart memcached — incluido el que hace sudo imaxe memcached optimize al aplicar tuning — vacía la cache. Los cambios de usuarios y passwords SASL, en cambio, no requieren reinicio. Y si instalas o modificas software, regenera la línea base de AIDE (sudo aideinit o vía el módulo aide de imaxe).
Resolución de problemas #
Los problemas que concentran casi todos los tickets, con su causa habitual y la solución.
| Síntoma | Causa probable | Solución |
|---|---|---|
| La instancia no llega a lanzarse | Tipo de instancia x86_64 | La AMI es arm64: usa una familia Graviton (t4g, c6g–c8g, m7g…) |
| No conecto por SSH | Puerto 22 cerrado en el grupo de seguridad, o IP fuera del CIDR permitido | Revisa el SG — ver cómo lanzar la AMI |
Permission denied (publickey) | La autenticación por contraseña está deshabilitada | Conecta como ubuntu con la keypair del lanzamiento: ssh -i clave.pem ubuntu@<ip> |
| SSH deja de responder tras varios intentos | fail2ban ha baneado tu IP (5 fallos en 10 min = 1 h) | Espera una hora o, desde otra IP: sudo fail2ban-client set sshd unbanip <ip> |
| No llego al 11211 desde otra máquina | El grupo de seguridad del Marketplace solo abre el 22 | Añade una regla de SG para 11211 restringida a tu CIDR — ufw ya lo permite |
| El cliente cierra el socket al conectar | El cliente no habla TLS, o no hace SASL | Usa una librería con TLS + SASL (pymemcache con tls_context, php-memcached con OPT_USE_TLS…) y confía en /etc/memcached/tls/server.crt |
memcstat no responde contra el 11211 | libmemcached-tools no está compilada con TLS | Usa el puerto en claro de loopback: memcstat --binary --servers=127.0.0.1:11212 … |
| Autenticación falla tras clonar/reemplazar la instancia | La credencial se regenera para el nuevo instance-id | Lee la nueva: sudo imaxe memcached credentials (o consola del sistema EC2) |
| La cache no aprovecha la RAM tras cambiar el tipo de instancia | El tuning se aplica en el arranque | Reinicia la instancia o ejecuta sudo imaxe memcached optimize |
Preguntas frecuentes #
¿Dónde está la password de memcached?
En el primer arranque, el usuario SASL memcached se da de alta con el instance-id como password. Se vuelca a la consola del sistema EC2 (System Log) — donde la busca quien viene de Bitnami — y queda en /etc/imaxe/secrets/memcached/password. Por SSH: sudo imaxe memcached credentials.
¿Cómo cambio la password o añado usuarios?
sudo imaxe memcached users rotate genera una password aleatoria nueva; --stdin acepta una concreta sin pasar por el historial. users add / users delete gestionan más usuarios. Ninguna operación reinicia el servicio ni vacía la cache.
¿Por qué mi cliente no conecta si en Bitnami funcionaba?
Porque aquí SASL y TLS vienen activados de fábrica (en Bitnami, SASL viene deshabilitado). Tu cliente necesita soportar TLS + SASL y confiar en el certificado de la instancia. Es deliberado: el único mecanismo SASL de memcached es PLAIN, y sin TLS la password viajaría en claro.
¿Puedo abrir el 11211 a Internet?
Poder, puedes — pero no lo hagas. Restringe la regla del grupo de seguridad al CIDR de tu VPC o al SG de tus clientes, o usa un túnel SSH (-L) para accesos puntuales. Una cache pública es un objetivo clásico, incluso cifrada.
¿El certificado es autofirmado? ¿Puedo poner el mío?
Sí y sí. El de serie lo emite cada instancia para sí misma (CN = instance-id, SAN con sus IPs y nombres); su huella SHA-256 sale por la consola del sistema y por imaxe memcached tls show. Para usar el tuyo, copia crt/clave a /etc/memcached/tls/, borra el testigo .generated-for y reinicia — ver la imagen por dentro.
¿Cómo dimensiono la cache? ¿Y si me quedo corto?
No se dimensiona: en cada arranque el módulo asigna a la cache el 60 % de la RAM utilizable y deriva hilos y conexiones del tamaño de la instancia. Si necesitas más cache, para la instancia, cambia a un tipo con más RAM y arranca — el tuning se recalcula solo.
¿Funciona en instancias x86_64?
No. La v2.0 se publica para arm64 (AWS Graviton): familias t4g, c6g–c8g, m6g–m8g, r6g–r8g, etc.
¿Qué incluye exactamente la suscripción?
La AMI endurecida, las versiones nuevas durante el ciclo de vida del producto y el soporte del equipo que la construye. Se paga por instancia: 0,014 $/h o 99 $/año, con 7 días de prueba gratuita.
Changelog #
Historial de la AMI. Las fechas corresponden a la publicación de cada versión en AWS Marketplace.
Base Ubuntu 26.04 y Lynis 100/100
La AMI se reconstruye sobre Ubuntu 26.04 LTS (resolute), arm64, y la auditoría Lynis alcanza el índice máximo.
Publicación inicial
Primera versión pública en AWS Marketplace, sobre Ubuntu 24.04 LTS arm64.
imaxe memcached optimize) y herramienta imaxe con 13 módulos horneados en la imagen.¿Necesitas ayuda con esta AMI?
Te responde el mismo equipo que construye la imagen — ingenieros de verdad, sin bots ni primer nivel.