Partager via


Échec de la connexion SSH aux machines virtuelles Linux Azure en raison d’une configuration incorrecte de SELinux

Remarque

CentOS référencé dans cet article est une distribution Linux qui atteint la fin de vie (EOL). Tenez compte de votre utilisation et planifiez en conséquence. Pour plus d’informations, consultez Guide sur la fin de vie de CentOS.

Cet article fournit une solution à un problème où la connexion SSH (Secure Shell) à une machine virtuelle Azure échoue en raison d’une mauvaise configuration de SELinux.

Contexte

Le modèle de sécurité Unix est basé sur la Access Control discrétionnaire (DAC). Security-Enhanced Linux (SELinux) implémente le Access Control obligatoire (MAC) pour Linux à l’aide de modules de noyau et d’outils d’espace utilisateur. MAC fournit un environnement plus contrôlé pour l’accès aux ressources et supprime la possibilité pour l’utilisateur racine d’accéder à toutes les ressources du système d’exploitation sans restrictions. Il atténue également plusieurs types de risques de sécurité en utilisant le modèle de sécurité Unix traditionnel.

Différentes distributions incluent SELinux prête à l’emploi ou fournissent un moyen simple d’activer la prise en charge du noyau et d’installer des outils d’espace utilisateur. Pour plus d’informations, consultez les articles SELinux suivants de certains des principaux fournisseurs Linux :

Les images basées sur Red Hat sur Azure sont fournies avec SELinux activé ; les autres distributions ne le font pas. Lorsque vous utilisez SELinux dans Ubuntu, un avertissement s’affiche concernant son état non maintenu sur cette distribution. Ubuntu implémente une autre solution pour MAC, appelée AppArmor.

Conditions préalables

Assurez-vous que la console série est activée et fonctionnelle sur la machine virtuelle Linux.

Symptômes

Une mauvaise configuration de SELinux peut empêcher le système d’exploitation de charger la stratégie SELinux, ce qui empêche le système d’exploitation de terminer le démarrage.

Vérifiez la console série à partir du Portail Azure ou via Azure CLI. Le message suivant s’affiche à la fin de la sortie :

Capture d’écran montrant l’erreur « Échec du chargement de la stratégie SELinux » dans le journal de la console série.

La configuration SELinux est gérée par l’administrateur système. L’administrateur système peut résoudre ce problème à l’aide de l’une des méthodes suivantes.

Solution 1 : Démarrer la machine virtuelle avec SELinux désactivé à l’aide de la console série

  1. Déclenchez Redémarrer la machine virtuelle (en dur) à partir de la console série Azure.

  2. Interrompez votre machine virtuelle dans le menu GRUB avec la touche Échap .

  3. Sélectionnez E pour modifier la première entrée du noyau dans le menu GRUB.

  4. Accédez à la linux16 ligne et ajoutez selinux=0 pour désactiver SELinux temporairement.

    GIF animé qui montre le processus d’interruption du démarrage au niveau du menu GRUB pour désactiver SELinux temporairement.

  5. Validez et corrigez la configuration SELinux dans /etc/selinux/config.

    Par exemple, une erreur courante consiste à définir la SELINUXTYPE clé sur l’une des valeurs utilisées pour la SELINUX clé. Consultez la capture d’écran suivante à titre d’exemple :

    Capture d’écran montrant que la clé SELINUXTYPE est incorrectement définie sur désactivée.

    Notez la dernière ligne, SELINUXTYPE=disabled. La SELINUXTYPE clé doit être définie sur targeted, minimumou mls plutôt que disabled. La capture d’écran suivante montre la configuration correcte :

    Capture d’écran montrant la configuration correcte de /etc/selinux/config.

Solution 2 : Réparer la configuration incorrecte de SELinux à l’aide d’une machine virtuelle de secours

Conseil

Si vous disposez d’une sauvegarde récente de la machine virtuelle, restaurez la machine virtuelle à partir de la sauvegarde pour résoudre le problème de configuration.

  1. Si la console série Azure ne fonctionne pas sur la machine virtuelle spécifique ou n’est pas une option dans votre abonnement, résolvez ce problème à l’aide d’une machine virtuelle de secours/réparation. À l’aide des commandes de réparation de machine virtuelle, créez une machine virtuelle de réparation à laquelle est connectée une copie du disque de système d’exploitation de la machine virtuelle affectée. Montez la copie des systèmes de fichiers du système d’exploitation dans la machine virtuelle de réparation à l’aide de chroot.

    Remarque

    Vous pouvez également créer manuellement une machine virtuelle de secours à l’aide du portail Azure. Pour en savoir plus, consultez l’article Résoudre les problèmes d’une machine virtuelle Linux en connectant le disque du système d’exploitation à une machine virtuelle de récupération à l’aide du portail Azure.

  2. Validez et corrigez la configuration SELinux dans /etc/selinux/config. Pour ce faire, suivez l’étape 5 de la solution 1 : Démarrer la machine virtuelle avec SELinux désactivé à partir de la console série.

  3. Une fois la configuration SELinux corrigée, effectuez les actions suivantes :

    1. Quittez chroot.
    2. Démonter la copie des systèmes de fichiers de la machine virtuelle de secours/réparation.
    3. Exécutez la commande az vm repair restore pour remplacer le disque de système d’exploitation réparé par le disque de système d’exploitation d’origine de la machine virtuelle. Pour plus d’informations, consultez l’étape 5 dans Réparer une machine virtuelle Linux à l’aide des commandes de réparation de machine virtuelle Azure.
    4. Vérifiez si la machine virtuelle peut démarrer. Pour ce faire, examinez la Serial console Azure ou essayez de vous connecter à la machine virtuelle.

Étapes suivantes

Si le problème n’est pas dû à une configuration incorrecte de SELinux, consultez Résoudre les erreurs de démarrage d’Azure Linux Machines Virtuelles pour obtenir d’autres options de résolution des problèmes.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.