Licence pro ASS&RLaboratoireLecture : 6 min

Audit de sécurité d'un environnement AWS et sauvegardes immuables

J'ai appliqué au cloud la démarche de mon audit Active Directory : un environnement AWS mal configuré exprès, mesuré avec Prowler, corrigé par ordre de gravité, puis mesuré à nouveau.

Contexte
Laboratoire · compte AWS, région de Paris, ressources volontairement mal configurées
Période
Juillet 2026
Mon rôle
Conception de l'environnement, audit et remédiation
Outils
AWS · Prowler · IAM · S3 Object Lock · CloudTrail · KMS

En bref

Le problème

Des sauvegardes hors site doivent survivre à un rançongiciel, et à la prise de contrôle du compte Microsoft 365 qui porte déjà la messagerie de l'entreprise.

Ce que j'ai fait

J'ai audité un compte AWS volontairement mal configuré avec Prowler en lecture seule, appliqué huit remédiations par gravité, puis verrouillé les sauvegardes avec Object Lock.

Le résultat

Échecs critiques de 5 à 3 et hauts de 20 à 14, conformité de 47,8 % à 57 %, sauvegardes non supprimables pendant 30 jours, même par le compte racine.

5 → 3échecs de gravité critique
20 → 14échecs de gravité haute
47,8 → 57,0%conformité mesurée par Prowler, du 1er au 3e scan
30joursde rétention Object Lock en mode Conformité

Contexte

Une sauvegarde hors site doit survivre à la compromission du reste du système d'information. La PME où j'ai mené mes projets en production utilise Microsoft 365 pour sa messagerie : si ses sauvegardes de secours dépendaient aussi de Microsoft, un attaquant maître de ce compte atteindrait les deux d'un coup. J'ai donc retenu AWS plutôt qu'Azure, pour séparer le fournisseur d'identité des sauvegardes de celui de la messagerie.

C'est un laboratoire : un environnement volontairement mal configuré, pour mesurer l'effet de chaque correction, comme dans mon audit Active Directory.

Ce que j'ai fait

  1. Sécuriser le compte racineMFA, région de Paris pour garder les données dans l'Union européenne, et une alerte de budget, qui sert aussi de détecteur d'intrusion bon marché : une consommation anormale trahit un compte détourné.
  2. Introduire trois défauts courantsUn bucket S3 de sauvegarde public et sans versioning, une instance EC2 avec SSH ouvert à tout Internet, et un compte de service IAM doté de AdministratorAccess, alors qu'il ne sert qu'à écrire les sauvegardes Veeam.
  3. Auditer en lecture seuleUn compte dédié à Prowler, limité à SecurityAudit et ViewOnlyAccess : une fuite de ses clés ne permet de rien modifier. Premier scan sur les référentiels CIS, RGPD et PCI-DSS : 186 contrôles évalués, échecs concentrés sur IAM, EC2 et S3.
  4. Corriger par ordre de gravitéHuit remédiations : SSH limité à l'adresse de l'administrateur, accès publics S3 bloqués au niveau du compte, CloudTrail, chiffrement EBS par défaut, versioning, et pour IAM le moindre privilège, la MFA et la suppression d'une clé superflue.
  5. Rendre les sauvegardes immuablesSecond bucket avec Object Lock en mode Conformité : même le compte racine ne peut pas supprimer un objet avant la fin de sa rétention. Chiffrement SSE-KMS avec une clé que je gère, chaque utilisation tracée dans CloudTrail.
En-tête du rapport HTML de Prowler 5.33 : informations du rapport, compte AWS audité (masqué), profil prowler-audit en lecture seule, région eu-west-3, puis la synthèse : 186 constats, 89 réussis, 97 en échec, 45 ressources.
Fig. 1Premier scan Prowler, le 15 juillet 2026 : 186 contrôles évalués, 89 réussis et 97 en échec, sur la région de Paris. Identifiants du compte masqués.
Voir les détails techniques
RessourceDéfaut introduitRisque
Bucket S3 de sauvegardeAccès public autorisé, pas de versioningSauvegardes lisibles depuis Internet ; un fichier écrasé ou supprimé est perdu
Instance EC2SSH ouvert à toute adresse InternetAdministration exposée au monde entier
Compte de service IAMPolitique AdministratorAccess complèteSa clé, si elle est volée, ouvre tout le compte AWS

Premier scan : échecs IAM (30), EC2 (15) et S3 (11).

Les cinq échecs critiques du premier scan

Contrôle ProwlerCe qui le déclenchaitCorrection
EC2 : SSH (port 22) ouvert depuis InternetL'instance au SSH ouvert à toute adresse, défaut introduitSSH limité à l'adresse de l'administrateur
IAM : utilisateur doté de AdministratorAccessLe compte de service des sauvegardes, défaut introduitPolitique sur mesure : écrire dans le bucket, rien d'autre
IAM : utilisateur doté de AdministratorAccessUn second utilisateur IAM—
IAM : politique gérée par AWS accordant « *:* »AdministratorAccess attachée à un utilisateur—
IAM : MFA matérielle sur le compte racineUne MFA est active sur le compte racine, mais pas sur une clé matérielle—

Sur ces 25 échecs critiques et hauts, 16 touchent deux familles : les identités (11 : MFA, droits d'administration, clés à longue durée de vie) et l'exposition réseau (5 : SSH, groupes de sécurité et ACL ouverts à tout Internet). Les neuf autres portent surtout sur la journalisation, les disques (chiffrement, instantanés) et les accès publics S3.

CorrectionGravitéPourquoi
SSH limité à l'adresse IP de l'administrateurCritiqueL'administration n'est plus exposée à tout Internet
Accès publics S3 bloqués, au niveau du compte et du bucketHauteLe blocage au niveau du compte empêche qu'un futur bucket soit rendu public par erreur
CloudTrail activé sur toutes les actionsHauteSavoir qui a fait quoi, et quand
Chiffrement EBS par défautHauteTout nouveau disque est chiffré, sans dépendre d'un oubli
Versioning du bucketMoyenneUne sauvegarde écrasée ou supprimée reste récupérable

Côté identités : AdministratorAccess retiré du compte de service et remplacé par une politique sur mesure qui l'autorise seulement à écrire dans le bucket de sauvegarde (une clé volée n'ouvre plus que ce dont le service a besoin), MFA sur le compte d'administration, et suppression d'une clé d'accès programmatique superflue, car une clé qui ne sert à rien ne peut que fuiter.

Pourquoi le mode Conformité. En mode Gouvernance, un compte doté d'une permission particulière peut lever le verrou : exactement ce qu'utiliserait un attaquant devenu administrateur. Le second bucket, corp-backup-immutable, a reçu Object Lock dès sa création, avec une rétention de 30 jours.

ScanContrôles évaluésConformité
1 · état initial18647,8 %
2 · après 8 remédiations21357,3 %
3 · après KMS et Object Lock23257,0 %

Résultats

Taux de conformité

Scan 147,8 %

Scan 257,3 %

Scan 357,0 %

Contrôles évalués

Scan 1186

Scan 2213

Scan 3232

Scan 1 : état initial · Scan 2 : après 8 remédiations · Scan 3 : après KMS et Object Lock

Fig. 2Le taux de conformité calculé par Prowler (échelle de 0 à 100 %) et le nombre de contrôles évalués (échelle de 0 à 250), à chaque scan.

Entre le deuxième et le troisième scan, le taux recule légèrement (57,3 % puis 57,0 %) alors que la configuration s'est améliorée. La raison : Prowler n'audite que ce qui existe. Activer CloudTrail ou créer le second bucket ajoute de nouveaux contrôles, dont une partie échoue au départ ; le nombre de contrôles passe de 186 à 232.

Un taux de conformité ne mesure donc pas seul une progression : il se lit avec le nombre de contrôles évalués et les échecs par gravité, qui baissent nettement (critiques de 5 à 3, hauts de 20 à 14).

Ce que j'améliorerais

  • Traiter les familles de contrôles encore en échec (3 critiques, 14 hauts) : alertes sur les événements sensibles de CloudTrail, journaux de flux réseau, détection des menaces native d'AWS, gestion des identifiants IAM.
  • Automatiser le scan Prowler à intervalle régulier et raccorder CloudTrail au SIEM Wazuh, pour qu'un changement de politique ou la suppression d'une clé déclenche une alerte.
  • Comparer les deux options pour l'immuabilité : AWS permet aujourd'hui d'activer Object Lock sur un bucket existant dont le versioning est actif ; un bucket neuf garde l'avantage de tout verrouiller dès la première écriture.

Compétences

  • Audit de sécurité AWS
  • Prowler et CIS Benchmark
  • IAM et moindre privilège
  • S3 Object Lock et KMS
  • Sauvegardes résistantes au rançongiciel
  • Lecture critique d'un indicateur

Pour aller plus loin