Description #
Imaxe Hardened Memcached est une AMI de Memcached durcie et prête pour la production, pensée comme remplaçante directe de « Memcached packaged by Bitnami ». Elle installe Memcached avec les paquets standard d’Ubuntu — apt, systemd et chemins FHS, sans arborescences monolithiques dans /opt ni superviseurs propriétaires — sur la base durcie d’imaxe.
Deux différences de sécurité d’usine par rapport au produit de Bitnami : l’authentification SASL est activée (et non désactivée), avec un mot de passe unique par instance, et le trafic réseau est chiffré avec TLS, avec un certificat généré lui aussi sur chaque instance. Comme le seul mécanisme SASL de memcached est PLAIN, sans TLS le mot de passe circulerait en clair — ici, c’est impossible.
Le reste est la base durcie d’imaxe : pare-feu en refus par défaut, SSH renforcé, AppArmor en mode enforce, audit avec auditd, intégrité des fichiers avec AIDE, détection de rootkits avec rkhunter, antivirus ClamAV et protection anti force brute avec fail2ban. Le tout vérifié à chaque publication par un audit Lynis dont vous pouvez lire le rapport complet plus bas.
Guide rapide : opérationnel en 5 minutes #
Tout ce qu’il vous faut pour passer de zéro à un cache durci en production.
Pas besoin de vous battre avec la console AWS. Le lanceur d’imaxe est un formulaire guidé qui vous demande l’essentiel — région, type d’instance, réseau et accès SSH — et génère un template CloudFormation qui déploie l’AMI déjà configurée. Il vous évite les erreurs classiques du lancement manuel (mauvaise architecture, groupe de sécurité trop ouvert, keypair non assignée) et laisse toute la pile sous votre contrôle, dans votre propre compte.
Si vous préférez le faire à la main, le chemin long tient en cinq étapes :
| Étape | Action | Où | Temps |
|---|---|---|---|
| 1 | Abonnez-vous et lancez l’AMI — n’importe quelle instance arm64 (Graviton) ; t4g.medium est celle recommandée. 7 jours d’essai gratuit inclus. | AWS Marketplace → EC2 | ~2 min |
| 2 | Ouvrez le port 22 dans le groupe de sécurité, restreint à votre IP ou CIDR. Le 11211 est fermé à dessein : n’ouvrez-le qu’au CIDR de votre VPC si votre application vit sur une autre machine. | Console EC2 | 1 min |
| 3 | Lisez l’identifiant SASL — il se trouve dans la console système (System Log d’EC2) ou, en SSH, avec sudo imaxe memcached credentials. Au premier démarrage, le mot de passe est l’instance-id. | Console EC2 ou SSH | 1 min |
| 4 | Connectez votre client avec TLS + SASL : utilisateur memcached, le mot de passe de l’instance et le port 11211. Le certificat est auto-signé : dites à votre client de faire confiance à /etc/memcached/tls/server.crt. | Votre application | ~1 min |
| 5 | C’est prêt — la taille du cache est déjà ajustée à l’instance. Explorez l’état avec imaxe memcached status. | L’instance | — |
Pas d’assistant de configuration ni d’étapes obligatoires ensuite : l’image sort durcie et dimensionnée d’usine. Le reste de cette page est optionnel. Si quelque chose coince, allez directement au dépannage.
Caractéristiques #
Tout ce que l’image inclut, regroupé entre ce qui est standard et ce qui est de notre cru.
Général
- Memcached 1.6 issu des paquets officiels d’Ubuntu 26.04 LTS (resolute, arm64), géré avec systemd — sans arborescences dans
/optni scripts propriétaires. - Base Ubuntu mise à jour à chaque build, avec les correctifs de sécurité automatiques (
unattended-upgrades) activés. - Pare-feu
ufwen refus par défaut : seuls le 22 (SSH) et le 11211 (memcached) sont autorisés localement ; le groupe de sécurité du Marketplace n’expose que le 22. - SSH durci : pas de root, pas de mots de passe, clé publique uniquement, cryptographie moderne (ed25519, chacha20-poly1305, kex post-quantique sntrup761x25519).
- AppArmor avec des profils supplémentaires installés, tous en mode enforce.
- Noyau durci via sysctl, montages avec
noexec,nosuid,nodev,/procavechidepid=2. - Audit complet avec
auditd, intégrité avec AIDE et debsums, anti-malware avec rkhunter et ClamAV, fail2ban intégré à ufw.
Spécificités
- SASL obligatoire d’usine : utilisateur
memcachedavec un mot de passe unique par instance (l’instance-id au premier démarrage), affiché dans la console système EC2 — là où le cherchent ceux qui viennent de Bitnami. Rien n’est figé dans l’AMI : chaque instance étrenne son identifiant. - TLS de série sur le port 11211 (minimum TLS 1.2) : certificat auto-signé émis sur chaque instance — clé EC P-256, instance-id comme CN, IP et noms de l’instance comme SAN — avant le démarrage du service. Vous pouvez installer le vôtre.
- Port 11212 en clair uniquement sur loopback, pour les outils du système (
memcstatet compagnie ne parlent pas TLS). Il exige toujours SASL et n’est pas accessible de l’extérieur. - UDP désactivé explicitement (
-U 0) : le protocole UDP de memcached est le vecteur classique d’amplification DDoS. - Tuning automatique à chaque démarrage :
imaxe memcached optimizerecalcule la mémoire du cache, les connexions et les threads avec le CPU et la RAM réels — arrêtez l’instance, changez le type, redémarrez, et le cache se redimensionne tout seul. - Gestion des utilisateurs SASL sans redémarrage :
imaxe memcached users add/rotate/delete— la base SASL est lue à chaque authentification et le cache n’est pas vidé. - Outil
imaxeinclus : une CLI pour opérer le service, les identifiants, le certificat et tout le durcissement sans éditer de fichiers à la main. - Audit Lynis à chaque publication, avec le rapport complet publié sur cette page.
Modules d'imaxe
Modules de l’outil imaxe intégrés à cette AMI, avec leur documentation :
| Module | Ce qu’il fait | Documentation |
|---|---|---|
| memcached | Le module du produit : état, identifiants, utilisateurs SASL, TLS et tuning automatique du service. | Voir les docs → |
| os | Base du système : mises à jour non surveillées, locale, fuseau horaire, hostname et heure. | Voir les docs → |
| ssh | Clés autorisées, host keys, sessions actives et durcissement de sshd depuis une seule commande. | Voir les docs → |
| firewall | État d’ufw, blocage/déblocage d’IP et ouverture ou fermeture de ports. | Voir les docs → |
| audit | Événements d’auditd et règles d’audit CIS sans vous battre avec auditctl. | Voir les docs → |
| aide | Intégrité des fichiers (FIM) avec AIDE. | Voir les docs → |
| rkhunter | Analyse du serveur à la recherche de rootkits. | Voir les docs → |
| clamav | Antivirus ClamAV à l’exécution. | Voir les docs → |
| lynis | Audit de durcissement du système avec rapport actionnable. | Voir les docs → |
| fail2ban | État des jails, IP bannies, bannir et débannir à la main. | Voir les docs → |
| secrets | Génère, lit et fait tourner les secrets locaux de l’instance — y compris le mot de passe SASL. | Voir les docs → |
| info | Inventaire de l’AMI dans /etc/imaxe/info.yaml, sans secrets. | Voir les docs → |
| global-alerts | Bus d’alertes transversal de l’instance (SNS). | docs en préparation |
Dimensionnement et coûts #
L’AMI tourne sur n’importe quelle instance arm64 (Graviton) d’AWS et s’auto-dimensionne : à chaque démarrage, imaxe memcached optimize alloue au cache 60 % de la RAM utilisable (après avoir réservé 512 MB pour l’OS et les agents) et déduit les threads et les connexions de la taille de l’instance. Choisissez le type selon le cache dont vous avez besoin : plus de RAM = plus de cache, sans toucher à la configuration. L’instance recommandée pour commencer est t4g.medium, celle-là même où s’exécutent les builds et les tests de cette image.
| Concept | Prix |
|---|---|
| Abonnement horaire | 0,014 $/h par instance |
| Abonnement annuel | 99 $/an par instance |
| Essai gratuit | 7 jours |
Au prix de l’abonnement s’ajoute le coût habituel d’AWS (instance EC2, disque EBS et trafic), que vous payez directement à AWS selon votre tarif. Memcached est un cache en mémoire : privilégiez la RAM plutôt que le disque en choisissant l’instance.
Rapports Lynis #
Résultat de l’audit de durcissement Lynis de chaque version publiée : indice de hardening, avertissements et suggestions, avec le rapport complet ligne par ligne.
| Version | Indice hardening | Tests | Avertissements | Suggestions | Audit | Rapport |
|---|---|---|---|---|---|---|
| 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 de hardening est calculé par Lynis à partir des tests réussis. Nous relançons l’audit à chaque publication et examinons à la main chaque avertissement et suggestion avant de pousser l’image sur le Marketplace ; le détail des constats ouverts figure dans le rapport lui-même.
Versions disponibles #
Versions de cette AMI publiées sur AWS Marketplace :
| Version | Memcached | Ubuntu | Architecture | État | Publication |
|---|---|---|---|---|---|
| v2.0 | 1.6 | 26.04 LTS (resolute) | arm64 | ✓ active | 2026-08 |
| v1.0 | 1.6 | 24.04 LTS (noble) | arm64 | ✓ active | 2026-08 |
Cycle de vie
La v2.0 est la version actuelle, active et maintenue : les correctifs de sécurité d’Ubuntu arrivent tout seuls sur les instances via unattended-upgrades, et nous publions de nouvelles versions de l’AMI sur le Marketplace à cadence régulière, chacune avec son propre audit Lynis. Quand une nouvelle version sortira, elle apparaîtra dans ce tableau et dans le changelog.
Comment lancer l'AMI #
L’AMI suit le flux de lancement standard d’EC2 sur des instances arm64 (Graviton). Le groupe de sécurité du Marketplace n’expose qu’un seul port :
| Type | Protocole | Port | Source |
|---|---|---|---|
| (*) SSH | TCP | 22 | vos CIDR |
| Memcached (optionnel) | TCP | 11211 | uniquement le CIDR de votre VPC ou le SG de vos clients |
Le 11211 est fermé dans le groupe de sécurité à dessein, comme dans le produit de Bitnami. Même avec TLS, n’ouvrez-le qu’à votre réseau privé — jamais 0.0.0.0/0. Le pare-feu interne (ufw) l’autorise déjà, la règle du groupe de sécurité suffit donc. Pour un accès ponctuel depuis l’extérieur, utilisez un tunnel SSH : ssh -i clave.pem -L 11211:127.0.0.1:11211 ubuntu@<ip-publica> (la redirection de ports est autorisée sur cette AMI, contrairement aux autres images imaxe). Dans l’instance, sudo imaxe memcached open-port --cidr <votre-réseau> et close-port pilotent le pare-feu local.
La v2.0 est publiée pour l’architecture arm64 : choisissez une famille Graviton (t4g, m7g/m8g, c6g–c8g, r7g/r8g…). Elle ne démarre pas sur des instances x86_64.
Une fois lancée — SSH : utilisateur ubuntu avec la keypair choisie au lancement. Il n’y a ni utilisateur root accessible ni authentification par mot de passe. Identifiant du cache : utilisateur SASL memcached avec l’instance-id comme mot de passe initial, visible dans la console système EC2 ou en 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'image de l'intérieur # expert
Tout ce qui tourne dans l’AMI, où vit chaque chose et les commandes que vous utiliserez au quotidien.
Services et ports
| Service | Unité systemd | Port | Ce qu’il fait |
|---|---|---|---|
| Memcached | memcached.service | 11211 | Le cache, avec TLS (min. 1.2) et SASL obligatoires |
| Memcached (loopback) | memcached.service | 11212 | Écoute en clair uniquement sur 127.0.0.1, pour les outils locaux ; SASL reste obligatoire |
| Préparation d’instance | imaxe-memcached-instance-setup.service | — | Avant memcached à chaque démarrage : certificat TLS, identifiant SASL et tuning. Idempotent |
| OpenSSH | ssh.service | 22 | Accès distant durci (drop-in 99-imaxe-harden.conf) |
| ufw | ufw.service | — | Pare-feu en refus par défaut (autorise le 22 et le 11211) |
| auditd | auditd.service | — | Audit du système (identité, sudoers, sshd, logins) |
| fail2ban | fail2ban.service | — | Bannissement anti force brute SSH via ufw, en lisant le journal |
| AppArmor | apparmor.service | — | Contrôle d’accès obligatoire, tous les profils en enforce |
| freshclam | clamav-freshclam.service | — | Mise à jour des signatures ClamAV, 24 fois par jour |
| unattended-upgrades | apt-daily-upgrade.timer | — | Correctifs de sécurité automatiques |
Le service memcached reste arrêté au bake et démarre pour la première fois sur votre instance : ni le certificat ni l’identifiant n’existent dans l’AMI. Le témoin /etc/memcached/tls/.generated-for conserve l’instance-id du certificat ; en clonant l’instance, l’id ne correspond plus et le matériel est régénéré tout seul.
Chemins clés
| Chemin | Ce que c’est |
|---|---|
| /etc/memcached.conf | Configuration du service ; le bloc BEGIN/END imaxe memcached optimize est réécrit par le module à chaque démarrage |
| /etc/memcached/tls/ | Certificat et clé TLS de cette instance (server.crt / server.key) |
| /etc/sasl2/memcached-sasldb2 | Base des utilisateurs SASL (gestion via imaxe memcached users) |
| /etc/imaxe/secrets/memcached/password | Mot de passe SASL de l’instance (0600, root) |
| /etc/imaxe/memcached.yml | Configuration du module memcached d’imaxe |
| /etc/ssh/sshd_config.d/99-imaxe-harden.conf | Durcissement de sshd (drop-in, ne touche pas au fichier principal) |
| /etc/sysctl.d/99-zz-imaxe-harden-kernel.conf | Durcissement du noyau via sysctl |
| /var/log/sudo.log | Journal de tous les usages de sudo |
| /usr/local/bin/imaxe | Binaire de la CLI imaxe |
Commandes utiles
| Tâche | Commande |
|---|---|
| État du service, écoutes, TLS, SASL et statistiques | imaxe memcached status |
| Identifiant de cette instance | sudo imaxe memcached credentials |
| Faire tourner le mot de passe SASL (sans redémarrage, ne vide pas le cache) | sudo imaxe memcached users rotate |
| Utilisateurs SASL : ajout / liste / suppression | sudo imaxe memcached users add app1 |
| Certificat en usage (sujet, SAN, expiration, empreinte) | imaxe memcached tls show |
| Régénérer le certificat (p. ex. après un changement d’IP publique) | sudo imaxe memcached tls renew –force |
| Voir le tuning recommandé pour cette instance | imaxe memcached optimize –show |
| Appliquer le tuning maintenant (redémarre : vide le cache) | sudo imaxe memcached optimize |
| Logs du service | journalctl -u memcached |
| Logs de la préparation d’instance | journalctl -u imaxe-memcached-instance-setup |
Vérification locale avec les outils du système — libmemcached-tools ne parle pas TLS, on utilise donc le port en clair du loopback (--binary car libmemcached ne fait SASL que sur le protocole binaire) :
memcstat --binary --servers=127.0.0.1:11212 --username=memcached \
--password=$(sudo imaxe memcached credentials --show-password --json | jq -r .password)Pour installer votre propre certificat à la place de l’auto-signé :
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 memcachedChaque sous-système du durcissement a en outre son module dans la CLI imaxe — voir modules d’imaxe.
Sauvegardes et mises à jour #
- Correctifs automatiques :
unattended-upgradesapplique quotidiennement les mises à jour de sécurité d’Ubuntu, sans intervention. - Signatures antivirus : freshclam met à jour la base ClamAV 24 fois par jour.
- Nouvelles AMI : nous publions des versions mises à jour de l’image sur le Marketplace à cadence régulière ; chaque version passe son propre audit Lynis avant publication.
- Sauvegardes : il n’y en a pas, par conception. Memcached est un cache volatil : son contenu se perd à chaque redémarrage et ne doit contenir l’unique exemplaire d’aucune donnée. Il n’y a rien à sauvegarder ni à restaurer.
Tout systemctl restart memcached — y compris celui qu’exécute sudo imaxe memcached optimize en appliquant le tuning — vide le cache. Les changements d’utilisateurs et de mots de passe SASL, en revanche, ne demandent pas de redémarrage. Et si vous installez ou modifiez des logiciels, régénérez la ligne de base d’AIDE (sudo aideinit ou via le module aide d’imaxe).
Dépannage #
Les problèmes qui concentrent la quasi-totalité des tickets, avec leur cause habituelle et la solution.
| Symptôme | Cause probable | Solution |
|---|---|---|
| L’instance ne se lance pas | Type d’instance x86_64 | L’AMI est arm64 : utilisez une famille Graviton (t4g, c6g–c8g, m7g…) |
| Impossible de se connecter en SSH | Port 22 fermé dans le groupe de sécurité, ou IP hors du CIDR autorisé | Vérifiez le SG — voir comment lancer l’AMI |
Permission denied (publickey) | L’authentification par mot de passe est désactivée | Connectez-vous comme ubuntu avec la keypair du lancement : ssh -i clave.pem ubuntu@<ip> |
| SSH cesse de répondre après plusieurs tentatives | fail2ban a banni votre IP (5 échecs en 10 min = 1 h) | Attendez une heure ou, depuis une autre IP : sudo fail2ban-client set sshd unbanip <ip> |
| Le 11211 est inaccessible depuis une autre machine | Le groupe de sécurité du Marketplace n’ouvre que le 22 | Ajoutez une règle de SG pour le 11211 restreinte à votre CIDR — ufw l’autorise déjà |
| Le client ferme le socket à la connexion | Le client ne parle pas TLS, ou ne fait pas SASL | Utilisez une bibliothèque avec TLS + SASL (pymemcache avec tls_context, php-memcached avec OPT_USE_TLS…) et faites confiance à /etc/memcached/tls/server.crt |
memcstat ne répond pas sur le 11211 | libmemcached-tools n’est pas compilée avec TLS | Utilisez le port en clair du loopback : memcstat --binary --servers=127.0.0.1:11212 … |
| L’authentification échoue après clonage/remplacement de l’instance | L’identifiant est régénéré pour le nouvel instance-id | Lisez le nouveau : sudo imaxe memcached credentials (ou console système EC2) |
| Le cache n’exploite pas la RAM après un changement de type d’instance | Le tuning s’applique au démarrage | Redémarrez l’instance ou exécutez sudo imaxe memcached optimize |
Foire aux questions #
Où se trouve le mot de passe de memcached ?
Au premier démarrage, l’utilisateur SASL memcached est créé avec l’instance-id comme mot de passe. Il est affiché dans la console système EC2 (System Log) — là où le cherchent ceux qui viennent de Bitnami — et reste dans /etc/imaxe/secrets/memcached/password. En SSH : sudo imaxe memcached credentials.
Comment changer le mot de passe ou ajouter des utilisateurs ?
sudo imaxe memcached users rotate génère un nouveau mot de passe aléatoire ; --stdin en accepte un précis sans passer par l’historique. users add / users delete gèrent d’autres utilisateurs. Aucune opération ne redémarre le service ni ne vide le cache.
Pourquoi mon client ne se connecte pas alors que ça marchait avec Bitnami ?
Parce qu’ici SASL et TLS sont activés d’usine (chez Bitnami, SASL est désactivé). Votre client doit supporter TLS + SASL et faire confiance au certificat de l’instance. C’est délibéré : le seul mécanisme SASL de memcached est PLAIN, et sans TLS le mot de passe circulerait en clair.
Puis-je ouvrir le 11211 à Internet ?
Techniquement oui — mais ne le faites pas. Restreignez la règle du groupe de sécurité au CIDR de votre VPC ou au SG de vos clients, ou utilisez un tunnel SSH (-L) pour les accès ponctuels. Un cache public est une cible classique, même chiffré.
Le certificat est auto-signé ? Puis-je mettre le mien ?
Oui et oui. Celui de série est émis par chaque instance pour elle-même (CN = instance-id, SAN avec ses IP et ses noms) ; son empreinte SHA-256 est affichée dans la console système et via imaxe memcached tls show. Pour utiliser le vôtre, copiez crt/clé dans /etc/memcached/tls/, supprimez le témoin .generated-for et redémarrez — voir l’image de l’intérieur.
Comment dimensionner le cache ? Et si c'est trop juste ?
Il ne se dimensionne pas : à chaque démarrage, le module alloue au cache 60 % de la RAM utilisable et déduit les threads et les connexions de la taille de l’instance. S’il vous faut plus de cache, arrêtez l’instance, passez à un type avec plus de RAM et redémarrez — le tuning se recalcule tout seul.
Fonctionne-t-elle sur des instances x86_64 ?
Non. La v2.0 est publiée pour arm64 (AWS Graviton) : familles t4g, c6g–c8g, m6g–m8g, r6g–r8g, etc.
Qu'inclut exactement l'abonnement ?
L’AMI durcie, les nouvelles versions pendant le cycle de vie du produit et le support de l’équipe qui la construit. Facturation par instance : 0,014 $/h ou 99 $/an, avec 7 jours d’essai gratuit.
Changelog #
Historique de l’AMI. Les dates correspondent à la publication de chaque version sur AWS Marketplace.
Base Ubuntu 26.04 et Lynis 100/100
L’AMI est reconstruite sur Ubuntu 26.04 LTS (resolute), arm64, et l’audit Lynis atteint l’indice maximal.
Publication initiale
Première version publique sur AWS Marketplace, sur Ubuntu 24.04 LTS arm64.
imaxe memcached optimize) et outil imaxe avec 13 modules intégrés à l’image.Besoin d'aide avec cette AMI ?
C'est l'équipe qui construit l'image qui vous répond — de vrais ingénieurs, sans bots ni premier niveau.