Descrição #
A Imaxe Hardened Memcached é uma AMI de Memcached reforçada e pronta para produção, pensada como substituta direta do «Memcached packaged by Bitnami». Instala o Memcached com os pacotes padrão do Ubuntu — apt, systemd e caminhos FHS, sem árvores monolíticas em /opt nem supervisores proprietários — sobre a base reforçada da imaxe.
Duas diferenças de segurança de fábrica face ao produto da Bitnami: a autenticação SASL vem ativada (não desativada), com uma palavra-passe única por instância, e o tráfego de rede vai cifrado com TLS, com um certificado gerado também em cada instância. Como o único mecanismo SASL do memcached é PLAIN, sem TLS a palavra-passe viajaria em claro — aqui não pode acontecer.
O resto é a base reforçada da imaxe: firewall em negação por omissão, SSH endurecido, AppArmor em modo enforce, auditoria com auditd, integridade de ficheiros com AIDE, deteção de rootkits com rkhunter, antivírus ClamAV e proteção contra força bruta com fail2ban. Tudo verificado em cada publicação com uma auditoria Lynis cujo relatório completo pode ler mais abaixo.
Guia rápido: a funcionar em 5 minutos #
Tudo o que precisa para passar do zero a uma cache reforçada em produção.
Não é preciso lutar com a consola da AWS. O lançador da imaxe é um formulário guiado que lhe pergunta o imprescindível — região, tipo de instância, rede e acesso SSH — e gera um modelo de CloudFormation que implementa a AMI já configurada. Evita-lhe os erros típicos do lançamento manual (arquitetura errada, grupo de segurança aberto em excesso, keypair por atribuir) e deixa a stack inteira sob o seu controlo na sua própria conta.
Se preferir fazê-lo à mão, o caminho longo são cinco passos:
| Passo | Ação | Onde | Tempo |
|---|---|---|---|
| 1 | Subscreva e lance a AMI — qualquer instância arm64 (Graviton); t4g.medium é a recomendada. Inclui 7 dias de teste gratuito. | AWS Marketplace → EC2 | ~2 min |
| 2 | Abra a porta 22 no grupo de segurança, restrita ao seu IP ou CIDR. A 11211 vem fechada de propósito: abra-a só ao CIDR da sua VPC se a sua aplicação viver noutra máquina. | Consola EC2 | 1 min |
| 3 | Leia a credencial SASL — está na consola do sistema (System Log do EC2) ou, por SSH, com sudo imaxe memcached credentials. No primeiro arranque a palavra-passe é o instance-id. | Consola EC2 ou SSH | 1 min |
| 4 | Ligue o seu cliente com TLS + SASL: utilizador memcached, a palavra-passe da instância e a porta 11211. O certificado é autoassinado: diga ao seu cliente para confiar em /etc/memcached/tls/server.crt. | A sua aplicação | ~1 min |
| 5 | Pronto — o tamanho da cache já está ajustado à instância. Explore o estado com imaxe memcached status. | A instância | — |
Não há assistente de configuração nem passos posteriores obrigatórios: a imagem sai reforçada e dimensionada de fábrica. O resto desta página é opcional. Se algo falhar, vá direto à resolução de problemas.
Características #
Tudo o que a imagem inclui, agrupado entre o que é padrão e o que é nosso.
Geral
- Memcached 1.6 dos pacotes oficiais do Ubuntu 26.04 LTS (resolute, arm64), gerido com systemd — sem árvores em
/optnem scripts proprietários. - Base Ubuntu atualizada em cada build, com patches de segurança automáticos (
unattended-upgrades) ativados. - Firewall
ufwem negação por omissão: só a 22 (SSH) e a 11211 (memcached) permitidas localmente; o grupo de segurança do Marketplace só publica a 22. - SSH endurecido: sem root, sem palavras-passe, só chave pública, criptografia moderna (ed25519, chacha20-poly1305, kex pós-quântico sntrup761x25519).
- AppArmor com perfis extra instalados e todos em modo enforce.
- Kernel reforçado via sysctl, montagens com
noexec,nosuid,nodev,/proccomhidepid=2. - Auditoria completa com
auditd, integridade com AIDE e debsums, anti-malware com rkhunter e ClamAV, fail2ban integrado com o ufw.
Especiais
- SASL obrigatório de fábrica: utilizador
memcachedcom palavra-passe única por instância (o instance-id no primeiro arranque), enviada para a consola do sistema EC2 — onde a procura quem vem da Bitnami. Nada é gravado na AMI: cada instância estreia credencial. - TLS de série na porta 11211 (mínimo TLS 1.2): certificado autoassinado emitido em cada instância — chave EC P-256, instance-id como CN, IPs e nomes da instância como SAN — antes de o serviço arrancar. Pode instalar o seu.
- Porta 11212 em claro só em loopback, para as ferramentas do sistema (
memcstate companhia não falam TLS). Continua a exigir SASL e não é acessível do exterior. - UDP desativado afirmativamente (
-U 0): o protocolo UDP do memcached é o vetor clássico de amplificação DDoS. - Tuning automático em cada arranque: o
imaxe memcached optimizerecalcula memória de cache, ligações e threads com a CPU e RAM reais — pare a instância, mude o tipo, arranque, e a cache redimensiona-se sozinha. - Gestão de utilizadores SASL sem reinícios:
imaxe memcached users add/rotate/delete— a base SASL é lida em cada autenticação e a cache não se esvazia. - Ferramenta
imaxeincluída: uma CLI para operar o serviço, as credenciais, o certificado e todo o hardening sem editar ficheiros à mão. - Auditoria Lynis em cada publicação, com o relatório completo publicado nesta página.
Módulos do imaxe
Módulos da ferramenta imaxe pré-instalados nesta AMI, com a respetiva documentação:
| Módulo | O que faz | Documentação |
|---|---|---|
| memcached | O módulo do produto: estado, credenciais, utilizadores SASL, TLS e tuning automático do serviço. | Ver docs → |
| os | Base do sistema: atualizações não assistidas, locale, fuso horário, hostname e hora. | Ver docs → |
| ssh | Chaves autorizadas, host keys, sessões ativas e hardening do sshd a partir de um só comando. | Ver docs → |
| firewall | Estado do ufw, bloqueio/desbloqueio de IPs e abertura ou fecho de portas. | Ver docs → |
| audit | Eventos do auditd e regras de auditoria CIS sem lutar com o auditctl. | Ver docs → |
| aide | Integridade de ficheiros (FIM) com AIDE. | Ver docs → |
| rkhunter | Análise do servidor em busca de rootkits. | Ver docs → |
| clamav | Antivírus ClamAV em runtime. | Ver docs → |
| lynis | Auditoria de hardening do sistema com relatório acionável. | Ver docs → |
| fail2ban | Estado das jails, IPs banidos, banir e desbanir à mão. | Ver docs → |
| secrets | Gera, lê e roda os segredos locais da instância — incluída a palavra-passe SASL. | Ver docs → |
| info | Inventário da AMI em /etc/imaxe/info.yaml, sem segredos. | Ver docs → |
| global-alerts | Bus de alertas transversal da instância (SNS). | docs em preparação |
Dimensionamento e custos #
A AMI corre em qualquer instância arm64 (Graviton) da AWS e autodimensiona-se: em cada arranque, o imaxe memcached optimize atribui à cache 60 % da RAM utilizável (após reservar 512 MB para o SO e os agentes) e deriva threads e ligações do tamanho da instância. Escolha o tipo pela cache de que precisa: mais RAM = mais cache, sem tocar na configuração. A instância recomendada de partida é a t4g.medium, a mesma em que correm as builds e os testes desta imagem.
| Conceito | Preço |
|---|---|
| Assinatura por hora | 0,014 $/h por instância |
| Assinatura anual | 99 $/ano por instância |
| Teste gratuito | 7 dias |
Ao preço da assinatura soma-se o custo normal da AWS (instância EC2, disco EBS e tráfego), que paga diretamente à AWS conforme a sua tarifa. O Memcached é uma cache em memória: priorize RAM sobre disco ao escolher a instância.
Relatórios Lynis #
Resultado da auditoria de hardening Lynis de cada versão publicada: índice de hardening, avisos e sugestões, com o relatório completo linha a linha.
| Versão | Índice hardening | Testes | Avisos | Sugestões | Auditoria | Relatório |
|---|---|---|---|---|---|---|
| v2.0 | 100/100 | 241 | 0 | 0 | 2026-08-15 | HTML · PDF ↓ |
| v1.0 | 94/100 | 244 | 1 | 1 | 2026-08-05 | HTML · PDF ↓ |
O índice de hardening é calculado pelo Lynis a partir dos testes superados. Reexecutamos a auditoria em cada publicação e revemos à mão cada aviso e sugestão antes de subir a imagem para o Marketplace; o detalhe dos achados abertos está no próprio relatório.
Versões disponíveis #
Versões desta AMI publicadas no AWS Marketplace:
| Versão | Memcached | Ubuntu | Arquitetura | Estado | Publicação |
|---|---|---|---|---|---|
| v2.0 | 1.6 | 26.04 LTS (resolute) | arm64 | ✓ ativa | 2026-08 |
| v1.0 | 1.6 | 24.04 LTS (noble) | arm64 | ✓ ativa | 2026-08 |
Ciclo de vida
A v2.0 é a versão atual, ativa e mantida: os patches de segurança do Ubuntu chegam sozinhos às instâncias via unattended-upgrades, e publicamos versões novas da AMI no Marketplace com cadência regular, cada uma com a sua própria auditoria Lynis. Quando sair uma versão nova aparecerá nesta tabela e no changelog.
Como lançar a AMI #
A AMI segue o fluxo padrão de lançamento do EC2 em instâncias arm64 (Graviton). O grupo de segurança do Marketplace só publica uma porta:
| Tipo | Protocolo | Porta | Origem |
|---|---|---|---|
| (*) SSH | TCP | 22 | os seus CIDR |
| Memcached (opcional) | TCP | 11211 | só o CIDR da sua VPC ou o SG dos seus clientes |
A 11211 vem fechada no grupo de segurança de propósito, tal como no produto da Bitnami. Mesmo com TLS pelo meio, abra-a só à sua rede privada — nunca 0.0.0.0/0. A firewall interna (ufw) já a permite, por isso basta a regra do grupo de segurança. Para acesso pontual a partir do exterior, use um túnel SSH: ssh -i clave.pem -L 11211:127.0.0.1:11211 ubuntu@<ip-publica> (o reencaminhamento de portas é permitido nesta AMI, ao contrário das restantes imagens imaxe). Na instância, sudo imaxe memcached open-port --cidr <a-sua-rede> e close-port controlam a firewall local.
A v2.0 é publicada para arquitetura arm64: escolha uma família Graviton (t4g, m7g/m8g, c6g–c8g, r7g/r8g…). Não arranca em instâncias x86_64.
Uma vez a funcionar — SSH: utilizador ubuntu com a keypair escolhida ao lançar. Não há utilizador root acessível nem autenticação por palavra-passe. Credencial da cache: utilizador SASL memcached com o instance-id como palavra-passe inicial, visível na consola do sistema EC2 ou 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 instanciaA imagem por dentro # especialista
Tudo o que corre dentro da AMI, onde vive cada coisa e os comandos que usará no dia a dia.
Serviços e portas
| Serviço | Unidade systemd | Porta | O que faz |
|---|---|---|---|
| Memcached | memcached.service | 11211 | A cache, com TLS (mín. 1.2) e SASL obrigatórios |
| Memcached (loopback) | memcached.service | 11212 | Escuta em claro só em 127.0.0.1, para ferramentas locais; o SASL continua a ser obrigatório |
| Preparação da instância | imaxe-memcached-instance-setup.service | — | Antes do memcached em cada arranque: certificado TLS, credencial SASL e tuning. Idempotente |
| OpenSSH | ssh.service | 22 | Acesso remoto reforçado (drop-in 99-imaxe-harden.conf) |
| ufw | ufw.service | — | Firewall em negação por omissão (permite a 22 e a 11211) |
| auditd | auditd.service | — | Auditoria do sistema (identidade, sudoers, sshd, logins) |
| fail2ban | fail2ban.service | — | Banimento de força bruta SSH via ufw, lendo o journal |
| AppArmor | apparmor.service | — | Controlo de acesso obrigatório, todos os perfis em enforce |
| freshclam | clamav-freshclam.service | — | Atualização das assinaturas do ClamAV, 24 vezes por dia |
| unattended-upgrades | apt-daily-upgrade.timer | — | Patches de segurança automáticos |
O serviço memcached fica parado no bake e arranca pela primeira vez já na sua instância: nem o certificado nem a credencial existem na AMI. O testemunho /etc/memcached/tls/.generated-for guarda o instance-id do certificado; ao clonar a instância, o id não coincide e o material regenera-se sozinho.
Caminhos-chave
| Caminho | O que é |
|---|---|
| /etc/memcached.conf | Configuração do serviço; o bloco BEGIN/END imaxe memcached optimize é reescrito pelo módulo em cada arranque |
| /etc/memcached/tls/ | Certificado e chave TLS desta instância (server.crt / server.key) |
| /etc/sasl2/memcached-sasldb2 | Base de utilizadores SASL (gestão via imaxe memcached users) |
| /etc/imaxe/secrets/memcached/password | Palavra-passe SASL da instância (0600, root) |
| /etc/imaxe/memcached.yml | Configuração do módulo memcached do imaxe |
| /etc/ssh/sshd_config.d/99-imaxe-harden.conf | Hardening do sshd (drop-in, não toca no ficheiro principal) |
| /etc/sysctl.d/99-zz-imaxe-harden-kernel.conf | Reforço do kernel via sysctl |
| /var/log/sudo.log | Registo de todos os usos do sudo |
| /usr/local/bin/imaxe | Binário da CLI imaxe |
Comandos úteis
| Tarefa | Comando |
|---|---|
| Estado do serviço, escutas, TLS, SASL e estatísticas | imaxe memcached status |
| Credencial desta instância | sudo imaxe memcached credentials |
| Rodar a palavra-passe SASL (sem reinício, não esvazia a cache) | sudo imaxe memcached users rotate |
| Utilizadores SASL: criação / listagem / remoção | sudo imaxe memcached users add app1 |
| Certificado em uso (sujeito, SAN, validade, impressão digital) | imaxe memcached tls show |
| Regenerar o certificado (p. ex. após mudar de IP pública) | sudo imaxe memcached tls renew –force |
| Ver o tuning recomendado para esta instância | imaxe memcached optimize –show |
| Aplicar o tuning agora (reinicia: esvazia a cache) | sudo imaxe memcached optimize |
| Logs do serviço | journalctl -u memcached |
| Logs da preparação da instância | journalctl -u imaxe-memcached-instance-setup |
Verificação local com as ferramentas do sistema — a libmemcached-tools não fala TLS, por isso usa-se a porta em claro de loopback (--binary porque a libmemcached só faz SASL sobre o protocolo binário):
memcstat --binary --servers=127.0.0.1:11212 --username=memcached \
--password=$(sudo imaxe memcached credentials --show-password --json | jq -r .password)Para instalar o seu próprio certificado em vez do autoassinado:
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 do hardening tem além disso o seu módulo na CLI imaxe — ver módulos do imaxe.
Cópias e atualizações #
- Patches automáticos: o
unattended-upgradesaplica diariamente as atualizações de segurança do Ubuntu, sem intervenção. - Assinaturas antivírus: o freshclam atualiza a base do ClamAV 24 vezes por dia.
- AMIs novas: publicamos versões atualizadas da imagem no Marketplace com cadência regular; cada versão passa a sua própria auditoria Lynis antes de ser publicada.
- Cópias de segurança: não há, por desenho. O Memcached é uma cache volátil: o seu conteúdo perde-se em cada reinício e não deve conter o único exemplar de nenhum dado. Não há nada para salvaguardar nem restaurar.
Qualquer systemctl restart memcached — incluído o que o sudo imaxe memcached optimize faz ao aplicar tuning — esvazia a cache. As alterações de utilizadores e palavras-passe SASL, pelo contrário, não requerem reinício. E se instalar ou modificar software, regenere a linha de base do AIDE (sudo aideinit ou via o módulo aide do imaxe).
Resolução de problemas #
Os problemas que concentram quase todos os tickets, com a sua causa habitual e a solução.
| Sintoma | Causa provável | Solução |
|---|---|---|
| A instância não chega a arrancar | Tipo de instância x86_64 | A AMI é arm64: use uma família Graviton (t4g, c6g–c8g, m7g…) |
| Não consigo ligar por SSH | Porta 22 fechada no grupo de segurança, ou IP fora do CIDR permitido | Reveja o SG — ver como lançar a AMI |
Permission denied (publickey) | A autenticação por palavra-passe está desativada | Ligue-se como ubuntu com a keypair do lançamento: ssh -i clave.pem ubuntu@<ip> |
| O SSH deixa de responder após várias tentativas | O fail2ban baniu o seu IP (5 falhas em 10 min = 1 h) | Espere uma hora ou, a partir de outro IP: sudo fail2ban-client set sshd unbanip <ip> |
| Não chego à 11211 a partir de outra máquina | O grupo de segurança do Marketplace só abre a 22 | Adicione uma regra de SG para a 11211 restrita ao seu CIDR — o ufw já a permite |
| O cliente fecha o socket ao ligar | O cliente não fala TLS, ou não faz SASL | Use uma biblioteca com TLS + SASL (pymemcache com tls_context, php-memcached com OPT_USE_TLS…) e confie em /etc/memcached/tls/server.crt |
O memcstat não responde contra a 11211 | A libmemcached-tools não está compilada com TLS | Use a porta em claro de loopback: memcstat --binary --servers=127.0.0.1:11212 … |
| A autenticação falha após clonar/substituir a instância | A credencial regenera-se para o novo instance-id | Leia a nova: sudo imaxe memcached credentials (ou consola do sistema EC2) |
| A cache não aproveita a RAM após mudar o tipo de instância | O tuning é aplicado no arranque | Reinicie a instância ou execute sudo imaxe memcached optimize |
Perguntas frequentes #
Onde está a palavra-passe do memcached?
No primeiro arranque, o utilizador SASL memcached é criado com o instance-id como palavra-passe. É enviada para a consola do sistema EC2 (System Log) — onde a procura quem vem da Bitnami — e fica em /etc/imaxe/secrets/memcached/password. Por SSH: sudo imaxe memcached credentials.
Como mudo a palavra-passe ou adiciono utilizadores?
sudo imaxe memcached users rotate gera uma palavra-passe aleatória nova; --stdin aceita uma concreta sem passar pelo histórico. users add / users delete gerem mais utilizadores. Nenhuma operação reinicia o serviço nem esvazia a cache.
Porque é que o meu cliente não liga se na Bitnami funcionava?
Porque aqui o SASL e o TLS vêm ativados de fábrica (na Bitnami, o SASL vem desativado). O seu cliente precisa de suportar TLS + SASL e confiar no certificado da instância. É deliberado: o único mecanismo SASL do memcached é PLAIN, e sem TLS a palavra-passe viajaria em claro.
Posso abrir a 11211 à Internet?
Poder, pode — mas não o faça. Restrinja a regra do grupo de segurança ao CIDR da sua VPC ou ao SG dos seus clientes, ou use um túnel SSH (-L) para acessos pontuais. Uma cache pública é um alvo clássico, mesmo cifrada.
O certificado é autoassinado? Posso pôr o meu?
Sim e sim. O de série é emitido por cada instância para si mesma (CN = instance-id, SAN com os seus IPs e nomes); a sua impressão digital SHA-256 sai pela consola do sistema e por imaxe memcached tls show. Para usar o seu, copie crt/chave para /etc/memcached/tls/, apague o testemunho .generated-for e reinicie — ver a imagem por dentro.
Como dimensiono a cache? E se ficar curto?
Não se dimensiona: em cada arranque o módulo atribui à cache 60 % da RAM utilizável e deriva threads e ligações do tamanho da instância. Se precisar de mais cache, pare a instância, mude para um tipo com mais RAM e arranque — o tuning recalcula-se sozinho.
Funciona em instâncias x86_64?
Não. A v2.0 é publicada para arm64 (AWS Graviton): famílias t4g, c6g–c8g, m6g–m8g, r6g–r8g, etc.
O que inclui exatamente a assinatura?
A AMI reforçada, as versões novas durante o ciclo de vida do produto e o suporte da equipa que a constrói. Paga-se por instância: 0,014 $/h ou 99 $/ano, com 7 dias de teste gratuito.
Changelog #
Histórico da AMI. As datas correspondem à publicação de cada versão no AWS Marketplace.
Base Ubuntu 26.04 e Lynis 100/100
A AMI é reconstruída sobre Ubuntu 26.04 LTS (resolute), arm64, e a auditoria Lynis atinge o índice máximo.
Publicação inicial
Primeira versão pública no AWS Marketplace, sobre Ubuntu 24.04 LTS arm64.
imaxe memcached optimize) e ferramenta imaxe com 13 módulos pré-instalados na imagem.Precisa de ajuda com esta AMI?
Responde-lhe a mesma equipa que constrói a imagem — engenheiros a sério, sem bots nem primeiro nível.