Descrizione #
Imaxe Hardened Memcached è una AMI di Memcached irrobustita e pronta per la produzione, pensata come sostituto diretto di «Memcached packaged by Bitnami». Installa Memcached con i pacchetti standard di Ubuntu — apt, systemd e percorsi FHS, senza alberi monolitici in /opt né supervisori proprietari — sulla base irrobustita di imaxe.
Due differenze di sicurezza di fabbrica rispetto al prodotto Bitnami: l’autenticazione SASL è attivata (non disabilitata), con una password unica per istanza, e il traffico di rete è cifrato con TLS, con un certificato generato anch’esso su ogni istanza. Dato che l’unico meccanismo SASL di memcached è PLAIN, senza TLS la password viaggerebbe in chiaro — qui non può succedere.
Il resto è la base irrobustita di imaxe: firewall in negazione predefinita, SSH rinforzato, AppArmor in modalità enforce, auditing con auditd, integrità dei file con AIDE, rilevamento di rootkit con rkhunter, antivirus ClamAV e protezione dalla forza bruta con fail2ban. Tutto verificato a ogni pubblicazione con un audit Lynis di cui puoi leggere il report completo più in basso.
Guida rapida: operativa in 5 minuti #
Tutto quello che ti serve per passare da zero a una cache irrobustita in produzione.
Non serve combattere con la console di AWS. Il launcher di imaxe è un modulo guidato che ti chiede l’indispensabile — regione, tipo di istanza, rete e accesso SSH — e genera un template CloudFormation che distribuisce la AMI già configurata. Ti evita gli errori tipici del lancio manuale (architettura sbagliata, gruppo di sicurezza troppo aperto, keypair non assegnata) e lascia l’intero stack sotto il tuo controllo nel tuo stesso account.
Se preferisci farlo a mano, la strada lunga sono cinque passi:
| Passo | Azione | Dove | Tempo |
|---|---|---|---|
| 1 | Abbonati e avvia la AMI — qualsiasi istanza arm64 (Graviton); t4g.medium è quella consigliata. Include 7 giorni di prova gratuita. | AWS Marketplace → EC2 | ~2 min |
| 2 | Apri la porta 22 nel gruppo di sicurezza, limitata al tuo IP o CIDR. La 11211 è chiusa di proposito: aprila solo al CIDR della tua VPC se la tua applicazione vive su un’altra macchina. | Console EC2 | 1 min |
| 3 | Leggi la credenziale SASL — si trova nella console di sistema (System Log di EC2) oppure, via SSH, con sudo imaxe memcached credentials. Al primo avvio la password è l’instance-id. | Console EC2 o SSH | 1 min |
| 4 | Collega il tuo client con TLS + SASL: utente memcached, la password dell’istanza e la porta 11211. Il certificato è autofirmato: di’ al tuo client di fidarsi di /etc/memcached/tls/server.crt. | La tua applicazione | ~1 min |
| 5 | Fatto — la dimensione della cache è già regolata sull’istanza. Esplora lo stato con imaxe memcached status. | L’istanza | — |
Non c’è alcuna procedura guidata né passaggi successivi obbligatori: l’immagine esce irrobustita e dimensionata di fabbrica. Il resto di questa pagina è opzionale. Se qualcosa non va, vai dritto alla risoluzione dei problemi.
Caratteristiche #
Tutto ciò che include l’immagine, raggruppato tra ciò che è standard e ciò che è nostro.
Generale
- Memcached 1.6 dai pacchetti ufficiali di Ubuntu 26.04 LTS (resolute, arm64), gestito con systemd — senza alberi in
/optné script proprietari. - Base Ubuntu aggiornata a ogni build, con le patch di sicurezza automatiche (
unattended-upgrades) attivate. - Firewall
ufwin negazione predefinita: localmente sono consentite solo 22 (SSH) e 11211 (memcached); il gruppo di sicurezza del Marketplace pubblica solo la 22. - SSH irrobustito: niente root, niente password, solo chiave pubblica, crittografia moderna (ed25519, chacha20-poly1305, kex post-quantistico sntrup761x25519).
- AppArmor con profili extra installati e tutti in modalità enforce.
- Kernel irrobustito via sysctl, mount con
noexec,nosuid,nodev,/procconhidepid=2. - Auditing completo con
auditd, integrità con AIDE e debsums, anti-malware con rkhunter e ClamAV, fail2ban integrato con ufw.
Specialità
- SASL obbligatorio di fabbrica: utente
memcachedcon password unica per istanza (l’instance-id al primo avvio), scritta nella console di sistema EC2 — dove la cerca chi arriva da Bitnami. Nulla viene preinstallato nella AMI: ogni istanza inaugura la propria credenziale. - TLS di serie sulla porta 11211 (minimo TLS 1.2): certificato autofirmato emesso su ogni istanza — chiave EC P-256, instance-id come CN, IP e nomi dell’istanza come SAN — prima che il servizio si avvii. Puoi installare il tuo.
- Porta 11212 in chiaro solo su loopback, per gli strumenti di sistema (
memcstate compagnia non parlano TLS). Continua a esigere SASL e non è accessibile dall’esterno. - UDP disattivato in modo esplicito (
-U 0): il protocollo UDP di memcached è il vettore classico di amplificazione DDoS. - Tuning automatico a ogni avvio:
imaxe memcached optimizericalcola memoria della cache, connessioni e thread con la CPU e la RAM reali — ferma l’istanza, cambia il tipo, riavvia, e la cache si ridimensiona da sola. - Gestione degli utenti SASL senza riavvii:
imaxe memcached users add/rotate/delete— il database SASL viene letto a ogni autenticazione e la cache non si svuota. - Strumento
imaxeincluso: una CLI per gestire il servizio, le credenziali, il certificato e tutto l’hardening senza modificare file a mano. - Audit Lynis a ogni pubblicazione, con il report completo pubblicato in questa pagina.
Moduli di imaxe
Moduli dello strumento imaxe preinstallati in questa AMI, con la loro documentazione:
| Modulo | Cosa fa | Documentazione |
|---|---|---|
| memcached | Il modulo del prodotto: stato, credenziali, utenti SASL, TLS e tuning automatico del servizio. | Vedi docs → |
| os | Base del sistema: aggiornamenti non presidiati, locale, fuso orario, hostname e ora. | Vedi docs → |
| ssh | Chiavi autorizzate, host key, sessioni attive e hardening di sshd da un solo comando. | Vedi docs → |
| firewall | Stato di ufw, blocco/sblocco di IP e apertura o chiusura di porte. | Vedi docs → |
| audit | Eventi di auditd e regole di audit CIS senza combattere con auditctl. | Vedi docs → |
| aide | Integrità dei file (FIM) con AIDE. | Vedi docs → |
| rkhunter | Scansione del server alla ricerca di rootkit. | Vedi docs → |
| clamav | Antivirus ClamAV a runtime. | Vedi docs → |
| lynis | Audit di hardening del sistema con report azionabile. | Vedi docs → |
| fail2ban | Stato delle jail, IP bannati, ban e unban manuali. | Vedi docs → |
| secrets | Genera, legge e ruota i segreti locali dell’istanza — inclusa la password SASL. | Vedi docs → |
| info | Inventario della AMI in /etc/imaxe/info.yaml, senza segreti. | Vedi docs → |
| global-alerts | Bus di allerta trasversale dell’istanza (SNS). | docs in preparazione |
Dimensionamento e costi #
La AMI gira su qualsiasi istanza arm64 (Graviton) di AWS e si autodimensiona: a ogni avvio, imaxe memcached optimize assegna alla cache il 60 % della RAM utilizzabile (dopo aver riservato 512 MB per il SO e gli agenti) e ricava thread e connessioni dalla taglia dell’istanza. Scegli il tipo in base alla cache di cui hai bisogno: più RAM = più cache, senza toccare la configurazione. L’istanza consigliata per iniziare è t4g.medium, la stessa su cui girano le build e i test di questa immagine.
| Voce | Prezzo |
|---|---|
| Abbonamento orario | 0,014 $/h per istanza |
| Abbonamento annuale | 99 $/anno per istanza |
| Prova gratuita | 7 giorni |
Al prezzo dell’abbonamento si aggiunge il normale costo di AWS (istanza EC2, disco EBS e traffico), che paghi direttamente ad AWS secondo la tua tariffa. Memcached è una cache in memoria: nella scelta dell’istanza dai priorità alla RAM rispetto al disco.
Report Lynis #
Risultato dell’audit di hardening Lynis di ogni versione pubblicata: indice di hardening, avvisi e suggerimenti, con il report completo riga per riga.
| Versione | Indice hardening | Test | Avvisi | Suggerimenti | Audit | Report |
|---|---|---|---|---|---|---|
| v2.0 | 100/100 | 241 | 0 | 0 | 2026-08-15 | HTML · PDF ↓ |
| v1.0 | 94/100 | 244 | 1 | 1 | 2026-08-05 | HTML · PDF ↓ |
L’indice di hardening lo calcola Lynis a partire dai test superati. Rieseguiamo l’audit a ogni pubblicazione e rivediamo a mano ogni avviso e suggerimento prima di caricare l’immagine sul Marketplace; il dettaglio dei rilievi aperti è nel report stesso.
Versioni disponibili #
Versioni di questa AMI pubblicate su AWS Marketplace:
| Versione | Memcached | Ubuntu | Architettura | Stato | Pubblicazione |
|---|---|---|---|---|---|
| v2.0 | 1.6 | 26.04 LTS (resolute) | arm64 | ✓ attiva | 2026-08 |
| v1.0 | 1.6 | 24.04 LTS (noble) | arm64 | ✓ attiva | 2026-08 |
Ciclo di vita
La v2.0 è la versione attuale, attiva e mantenuta: le patch di sicurezza di Ubuntu arrivano da sole alle istanze via unattended-upgrades, e pubblichiamo nuove versioni della AMI sul Marketplace con cadenza regolare, ognuna con il proprio audit Lynis. Quando uscirà una nuova versione apparirà in questa tabella e nel changelog.
Come avviare la AMI #
La AMI segue il flusso standard di lancio di EC2 su istanze arm64 (Graviton). Il gruppo di sicurezza del Marketplace pubblica una sola porta:
| Tipo | Protocollo | Porta | Origine |
|---|---|---|---|
| (*) SSH | TCP | 22 | i tuoi CIDR |
| Memcached (opzionale) | TCP | 11211 | solo il CIDR della tua VPC o il SG dei tuoi client |
La 11211 è chiusa nel gruppo di sicurezza di proposito, come nel prodotto Bitnami. Anche con il TLS di mezzo, aprila solo alla tua rete privata — mai 0.0.0.0/0. Il firewall interno (ufw) la consente già, quindi basta la regola del gruppo di sicurezza. Per un accesso puntuale dall’esterno, usa un tunnel SSH: ssh -i clave.pem -L 11211:127.0.0.1:11211 ubuntu@<ip-publica> (l’inoltro di porte è permesso su questa AMI, a differenza delle altre immagini imaxe). Nell’istanza, sudo imaxe memcached open-port --cidr <la-tua-rete> e close-port governano il firewall locale.
La v2.0 è pubblicata per architettura arm64: scegli una famiglia Graviton (t4g, m7g/m8g, c6g–c8g, r7g/r8g…). Non si avvia su istanze x86_64.
Una volta in funzione — SSH: utente ubuntu con la keypair scelta all’avvio. Non c’è utente root accessibile né autenticazione con password. Credenziale della cache: utente SASL memcached con l’instance-id come password iniziale, visibile nella console di sistema EC2 o via 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 instanciaL'immagine da dentro # esperto
Tutto ciò che gira dentro la AMI, dove vive ogni cosa e i comandi che userai nel quotidiano.
Servizi e porte
| Servizio | Unità systemd | Porta | Cosa fa |
|---|---|---|---|
| Memcached | memcached.service | 11211 | La cache, con TLS (min. 1.2) e SASL obbligatori |
| Memcached (loopback) | memcached.service | 11212 | Ascolta in chiaro solo su 127.0.0.1, per gli strumenti locali; SASL resta obbligatorio |
| Preparazione dell’istanza | imaxe-memcached-instance-setup.service | — | Prima di memcached a ogni avvio: certificato TLS, credenziale SASL e tuning. Idempotente |
| OpenSSH | ssh.service | 22 | Accesso remoto irrobustito (drop-in 99-imaxe-harden.conf) |
| ufw | ufw.service | — | Firewall in negazione predefinita (consente 22 e 11211) |
| auditd | auditd.service | — | Auditing del sistema (identità, sudoers, sshd, login) |
| fail2ban | fail2ban.service | — | Ban della forza bruta SSH via ufw, leggendo il journal |
| AppArmor | apparmor.service | — | Controllo di accesso obbligatorio, tutti i profili in enforce |
| freshclam | clamav-freshclam.service | — | Aggiornamento delle firme di ClamAV, 24 volte al giorno |
| unattended-upgrades | apt-daily-upgrade.timer | — | Patch di sicurezza automatiche |
Il servizio memcached resta fermo durante il bake e si avvia per la prima volta già sulla tua istanza: né il certificato né la credenziale esistono nella AMI. Il testimone /etc/memcached/tls/.generated-for conserva l’instance-id del certificato; clonando l’istanza, l’id non coincide e il materiale si rigenera da solo.
Percorsi chiave
| Percorso | Cos’è |
|---|---|
| /etc/memcached.conf | Configurazione del servizio; il blocco BEGIN/END imaxe memcached optimize viene riscritto dal modulo a ogni avvio |
| /etc/memcached/tls/ | Certificato e chiave TLS di questa istanza (server.crt / server.key) |
| /etc/sasl2/memcached-sasldb2 | Database degli utenti SASL (gestione via imaxe memcached users) |
| /etc/imaxe/secrets/memcached/password | Password SASL dell’istanza (0600, root) |
| /etc/imaxe/memcached.yml | Configurazione del modulo memcached di imaxe |
| /etc/ssh/sshd_config.d/99-imaxe-harden.conf | Hardening di sshd (drop-in, non tocca il file principale) |
| /etc/sysctl.d/99-zz-imaxe-harden-kernel.conf | Irrobustimento del kernel via sysctl |
| /var/log/sudo.log | Registro di tutti gli usi di sudo |
| /usr/local/bin/imaxe | Binario della CLI imaxe |
Comandi utili
| Attività | Comando |
|---|---|
| Stato del servizio, listener, TLS, SASL e statistiche | imaxe memcached status |
| Credenziale di questa istanza | sudo imaxe memcached credentials |
| Ruotare la password SASL (senza riavvio, non svuota la cache) | sudo imaxe memcached users rotate |
| Utenti SASL: creazione / elenco / eliminazione | sudo imaxe memcached users add app1 |
| Certificato in uso (soggetto, SAN, scadenza, impronta) | imaxe memcached tls show |
| Rigenerare il certificato (p. es. dopo un cambio di IP pubblico) | sudo imaxe memcached tls renew –force |
| Vedere il tuning consigliato per questa istanza | imaxe memcached optimize –show |
| Applicare il tuning ora (riavvia: svuota la cache) | sudo imaxe memcached optimize |
| Log del servizio | journalctl -u memcached |
| Log della preparazione dell’istanza | journalctl -u imaxe-memcached-instance-setup |
Verifica locale con gli strumenti di sistema — libmemcached-tools non parla TLS, quindi si usa la porta in chiaro su loopback (--binary perché libmemcached fa SASL solo sul protocollo binario):
memcstat --binary --servers=127.0.0.1:11212 --username=memcached \
--password=$(sudo imaxe memcached credentials --show-password --json | jq -r .password)Per installare il tuo certificato al posto di quello autofirmato:
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 memcachedOgni sottosistema dell’hardening ha inoltre il suo modulo nella CLI imaxe — vedi moduli di imaxe.
Backup e aggiornamenti #
- Patch automatiche:
unattended-upgradesapplica ogni giorno gli aggiornamenti di sicurezza di Ubuntu, senza intervento. - Firme antivirus: freshclam aggiorna il database di ClamAV 24 volte al giorno.
- Nuove AMI: pubblichiamo versioni aggiornate dell’immagine sul Marketplace con cadenza regolare; ogni versione supera il proprio audit Lynis prima della pubblicazione.
- Backup: non ci sono, per scelta progettuale. Memcached è una cache volatile: il suo contenuto si perde a ogni riavvio e non deve contenere l’unica copia di alcun dato. Non c’è nulla da salvare né da ripristinare.
Qualsiasi systemctl restart memcached — incluso quello che esegue sudo imaxe memcached optimize applicando il tuning — svuota la cache. I cambi di utenti e password SASL, invece, non richiedono riavvio. E se installi o modifichi software, rigenera la baseline di AIDE (sudo aideinit o tramite il modulo aide di imaxe).
Risoluzione dei problemi #
I problemi che concentrano quasi tutti i ticket, con la loro causa abituale e la soluzione.
| Sintomo | Causa probabile | Soluzione |
|---|---|---|
| L’istanza non riesce ad avviarsi | Tipo di istanza x86_64 | La AMI è arm64: usa una famiglia Graviton (t4g, c6g–c8g, m7g…) |
| Non riesco a collegarmi via SSH | Porta 22 chiusa nel gruppo di sicurezza, o IP fuori dal CIDR consentito | Controlla il SG — vedi come avviare la AMI |
Permission denied (publickey) | L’autenticazione con password è disabilitata | Collegati come ubuntu con la keypair dell’avvio: ssh -i clave.pem ubuntu@<ip> |
| SSH smette di rispondere dopo vari tentativi | fail2ban ha bannato il tuo IP (5 errori in 10 min = 1 h) | Aspetta un’ora oppure, da un altro IP: sudo fail2ban-client set sshd unbanip <ip> |
| Non raggiungo la 11211 da un’altra macchina | Il gruppo di sicurezza del Marketplace apre solo la 22 | Aggiungi una regola SG per la 11211 limitata al tuo CIDR — ufw la consente già |
| Il client chiude il socket alla connessione | Il client non parla TLS, o non fa SASL | Usa una libreria con TLS + SASL (pymemcache con tls_context, php-memcached con OPT_USE_TLS…) e fidati di /etc/memcached/tls/server.crt |
memcstat non risponde sulla 11211 | libmemcached-tools non è compilata con TLS | Usa la porta in chiaro su loopback: memcstat --binary --servers=127.0.0.1:11212 … |
| L’autenticazione fallisce dopo aver clonato/sostituito l’istanza | La credenziale si rigenera per il nuovo instance-id | Leggi quella nuova: sudo imaxe memcached credentials (o console di sistema EC2) |
| La cache non sfrutta la RAM dopo il cambio di tipo di istanza | Il tuning si applica all’avvio | Riavvia l’istanza o esegui sudo imaxe memcached optimize |
Domande frequenti #
Dov'è la password di memcached?
Al primo avvio, l’utente SASL memcached viene creato con l’instance-id come password. Viene scritta nella console di sistema EC2 (System Log) — dove la cerca chi arriva da Bitnami — e resta in /etc/imaxe/secrets/memcached/password. Via SSH: sudo imaxe memcached credentials.
Come cambio la password o aggiungo utenti?
sudo imaxe memcached users rotate genera una nuova password casuale; --stdin ne accetta una specifica senza passare per la cronologia. users add / users delete gestiscono altri utenti. Nessuna operazione riavvia il servizio né svuota la cache.
Perché il mio client non si collega se con Bitnami funzionava?
Perché qui SASL e TLS sono attivi di fabbrica (in Bitnami, SASL è disabilitato). Il tuo client deve supportare TLS + SASL e fidarsi del certificato dell’istanza. È voluto: l’unico meccanismo SASL di memcached è PLAIN, e senza TLS la password viaggerebbe in chiaro.
Posso aprire la 11211 a Internet?
Potere, puoi — ma non farlo. Limita la regola del gruppo di sicurezza al CIDR della tua VPC o al SG dei tuoi client, oppure usa un tunnel SSH (-L) per gli accessi puntuali. Una cache pubblica è un bersaglio classico, anche se cifrata.
Il certificato è autofirmato? Posso mettere il mio?
Sì e sì. Quello di serie lo emette ogni istanza per sé stessa (CN = instance-id, SAN con i suoi IP e nomi); la sua impronta SHA-256 esce nella console di sistema e con imaxe memcached tls show. Per usare il tuo, copia crt/chiave in /etc/memcached/tls/, elimina il testimone .generated-for e riavvia — vedi l’immagine da dentro.
Come dimensiono la cache? E se resto corto?
Non si dimensiona: a ogni avvio il modulo assegna alla cache il 60 % della RAM utilizzabile e ricava thread e connessioni dalla taglia dell’istanza. Se ti serve più cache, ferma l’istanza, passa a un tipo con più RAM e riavvia — il tuning si ricalcola da solo.
Funziona su istanze x86_64?
No. La v2.0 è pubblicata per arm64 (AWS Graviton): famiglie t4g, c6g–c8g, m6g–m8g, r6g–r8g, ecc.
Cosa include esattamente l'abbonamento?
La AMI irrobustita, le nuove versioni durante il ciclo di vita del prodotto e il supporto del team che la costruisce. Si paga per istanza: 0,014 $/h o 99 $/anno, con 7 giorni di prova gratuita.
Changelog #
Storico della AMI. Le date corrispondono alla pubblicazione di ogni versione su AWS Marketplace.
Base Ubuntu 26.04 e Lynis 100/100
La AMI viene ricostruita su Ubuntu 26.04 LTS (resolute), arm64, e l’audit Lynis raggiunge l’indice massimo.
Pubblicazione iniziale
Prima versione pubblica su AWS Marketplace, su Ubuntu 24.04 LTS arm64.
imaxe memcached optimize) e strumento imaxe con 13 moduli preinstallati nell’immagine.Ti serve una mano con questa AMI?
Ti risponde lo stesso team che costruisce l'immagine — ingegneri veri, senza bot né primo livello.