En utilisant AWS re:Post, vous acceptez les AWS re:Post Conditions d’utilisation

Pourquoi ne puis-je pas démarrer mon instance Amazon EC2 Linux ?

Lecture de 5 minute(s)
0

Le message d'erreur « Failed to load SELinux policy, freezing » s'affiche et je ne parviens pas à démarrer mon instance Amazon Elastic Compute Cloud (Amazon EC2).

Brève description

L'instance Amazon EC2 Linux ne démarre pas, puis affiche un message d'erreur dans la console Amazon EC2 Linux. Cette erreur signifie que l'instance n'a pas pu charger la politique SELinux (Security-Enhanced Linux). Les raisons de cette erreur incluent des paramètres SELinux mal configurés et des fichiers de politique SELinux endommagés ou manquants.

Résolution

Pour récupérer une instance suite à un blocage de la politique SELinux, choisissez l'une des options suivantes :

  • Restaurez le volume racine de l'instance à partir d'un instantané récent.
  • Utilisez une instance de secours pour recréer ou modifier la configuration de la politique SELinux.

Restaurer le volume racine de l'instance à partir d'un instantané récent

Si vous disposez d'un instantané du volume racine Amazon Elastic Block Store (Amazon EBS), vous pouvez restaurer le volume racine à son état de fonctionnement précédent. Pour plus d'informations, consultez la section Remplacer le volume racine d'une instance Amazon EC2 sans l'arrêter. Remarque : Dans cette méthode, vous perdez les données ajoutées après la création de l'instantané.

Utiliser une instance de secours pour recréer ou modifier la configuration de la politique SELinux

Pour utiliser une instance de secours afin de recréer ou de modifier la configuration SELinux, procédez comme suit :

  1. Lancez une instance de secours ou temporaire. Utilisez l'Amazon Machine Image (AMI) de l'instance qui ne fonctionne pas pour lancer une nouvelle instance Linux EC2 dans votre cloud privé virtuel (VPC). Assurez-vous que votre nouvelle instance se trouve dans la même zone de disponibilité que l'instance non fonctionnelle. La nouvelle instance devient alors votre instance de secours. Vous pouvez également utiliser une instance existante qui se trouve dans la même zone de disponibilité que votre instance non fonctionnelle.
  2. Détachez le volume racine Amazon Elastic Block Store (Amazon EBS) de votre instance non fonctionnelle. Notez le nom du périphérique (/dev/xvda ou /dev/sda1) et l'ID du volume (commencez par vol-) en vue d’une utilisation ultérieure.
  3. Attachez le volume EBS à l'instance de secours en tant que périphérique secondaire, par exemple /dev/sdf.
  4. Utilisez Secure Shell (SSH) ou AWS Systems Manager (SSM) Session Manager (SSM) pour vous connecter à l'instance de secours. Pour identifier le nom du périphérique de partition racine, exécutez la commande lsblk :
    sudo -i
    lsblk -o +PARTLABEL,LABEL,SERIAL | sed 's/vol/vol-/'
    Remarque : La partition racine contient l’étiquette / et l’étiquette d’élément Linux. S'il existe plusieurs entrées, utilisez l'ID de volume pour différencier le volume racine de l'instance problématique.

Monter un système de fichiers racine

Créez un point de montage temporaire (par exemple, /mnt/rescue). Pour monter le système de fichiers racine à partir du volume attaché, exécutez la commande suivante :

mkdir -p /mnt/rescue
mount -o nouuid /dev/device-name /mnt/rescue

Remarque : Remplacez device-name par le nom du périphérique de la partition racine que vous avez identifiée à l'étape précédente.

Pour modifier le répertoire racine à l'aide de chroot, exécutez les commandes suivantes :

for i in proc sys dev run; do mount --bind /$i /mnt/rescue/$i; done
chroot /mnt/rescue

Remarque : Dans l'exemple, les répertoires /dev, /proc, /sys et /run sont montés par liaison à partir du système de fichiers racine d'origine. Cette configuration permet aux processus qui s'exécutent dans l'environnement chroot d'accéder à ces répertoires système.

Résoudre la configuration de la politique SELinux

Pour recréer votre politique SELinux, exécutez la commande suivante :

semodule -B

Pour désactiver SELinux, exécutez la commande suivante :

sed -i -E 's/^SELINUX=(permissive|enforcing)/SELINUX=disabled/' /etc/selinux/config

Démonter et reconnecter le volume depuis l'instance de secours

  1. Pour quitter l'environnement chroot et démonter le volume, exécutez la commande suivante :
    exit
    umount /mnt/rescue/{proc,sys,dev,run,}
    Remarque : Si la cible /mnt/rescue: est occupée, utilisez l'option -l (par exemple, umount -l /mnt/rescue) pour forcer le détachement.
  2. Détachez le volume de l'instance de secours. Puis, rattachez le volume à l'instance d'origine en tant que volume racine (nom du périphérique /dev/xvda ou /dev/sda1).
  3. Démarrez l'instance d'origine, puis vérifiez que le problème de démarrage est résolu.

Sauvegarder et tester votre politique SELinux
Il est recommandé que vos fichiers de politique SELinux suivent les étapes suivantes :

  1. Sauvegardez la politique SELinux de travail avant de la modifier.
    Pour sauvegarder votre politique, exécutez la commande tar suivante :

     tar -czvf selinux-policy-store-backup.tar.gz /etc/selinux/targeted/policy/
  2. Testez les modifications dans un environnement hors production.

Informations connexes

Le système ne peut pas démarrer : Impossible de charger la politique SELinux, blocage sur le site Web de Red Hat

Guide des utilisateurs et administrateurs de SELinux Documentation Red Hat sur le site Web de Red Hat

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 mois