É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 :
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
Déclenchez Redémarrer la machine virtuelle (en dur) à partir de la console série Azure.
Interrompez votre machine virtuelle dans le menu GRUB avec la touche Échap .
Sélectionnez E pour modifier la première entrée du noyau dans le menu GRUB.
Accédez à la
linux16
ligne et ajoutezselinux=0
pour désactiver SELinux temporairement.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 laSELINUX
clé. Consultez la capture d’écran suivante à titre d’exemple :Notez la dernière ligne,
SELINUXTYPE=disabled
. LaSELINUXTYPE
clé doit être définie surtargeted
,minimum
oumls
plutôt quedisabled
. La capture d’écran suivante montre la configuration correcte :
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.
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.
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.Une fois la configuration SELinux corrigée, effectuez les actions suivantes :
- Quittez chroot.
- Démonter la copie des systèmes de fichiers de la machine virtuelle de secours/réparation.
- 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. - 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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour