Utilisez ecs-user plutôt que l'utilisateur root pour réduire la surface d'attaque et permettre une élévation de privilèges auditable.
Risques de sécurité
Le compte root dispose de permissions système illimitées. Si les identifiants root (mot de passe ou clé SSH) sont compromis, un attaquant obtient un contrôle total sur le serveur. Les conséquences incluent :
Destruction des données : suppression des données métier, des journaux et des sauvegardes.
Installation de logiciels malveillants : déploiement de ransomwares, de programmes de minage ou de portes dérobées.
Vol d'informations sensibles : exfiltration du code métier, des données clients et des informations de paiement.
Mouvement latéral : utilisation du serveur comme point de départ pour attaquer d'autres serveurs de votre réseau interne.
Effacement des traces opérationnelles : modification ou suppression des fichiers de journalisation, ce qui complique l'enquête sur les événements de sécurité.
Bonnes pratiques
Créez des instances avec ecs-user pour les connexions quotidiennes. Cette approche limite la surface d'attaque et garantit que toutes les opérations privilégiées passent par sudo, laissant ainsi une piste d'audit claire.
Console
Sur la page d'achat d'instance, définissez Logon Username sur ecs-user.
L'utilisateurecs-usern'est pris en charge que sur certaines versions d'images Linux. Si votre image ne le prend pas en charge, créez l'utilisateurecs-useret accordez-lui les autorisationssudo. Consultez la rubrique Connexion à distance multi-utilisateurs.
API
Appelez RunInstances ou CreateInstance en définissant ImageOptions.LoginAsNonRoot sur true. L'instance utilise alors ecs-user au lieu de root, et le mot de passe root ne peut pas être réinitialisé.
Si vous ne disposez pas de paire de clés, appelez CreateKeyPair pour en créer une.
Conformité
Vérification : identifier les instances Linux utilisant une connexion root
Accédez à ECS Insight.
Sélectionnez l'onglet Security et cliquez sur Use of Non-root Users for Logons to Linux ECS Instances pour afficher les instances utilisant une connexion root.
Blocage : empêcher les opérations du compte root telles que la création d'instances
Utilisez une politique RAM pour bloquer les opérations du compte root, telles que la création d'instances Linux. Appliquez la politique au niveau de l'organisation ou du compte.
-
Utilisateurs entreprise :
-
Connectez-vous à la console Resource Directory avec votre compte Alibaba Cloud. Dans le volet de navigation, cliquez sur Control Policies. Créez une politique personnalisée et collez le contenu JSON suivant.
Cette politique refuse les opérations d'identité
roottelles que la création d'instances, l'attachement de disques système et le remplacement de disques système.{ "Version": "1", "Statement": [ { "Action": [ "ecs:RunInstances", "ecs:CreateInstance", "ecs:ReplaceSystemDisk", "ecs:AttachDisk", "ecs:InvokeCommand" ], "Resource": "*", "Condition": { "Bool": { "ecs:LoginAsNonRoot": [ "false" ] } }, "Effect": "Deny" } ] } Dans Resource Directory, sélectionnez un nœud approprié et attachez la politique. La politique bloque les opérations spécifiées pour tous les comptes du répertoire.
-
-
Utilisateurs non entreprise :
Connectez-vous à la console RAM avec votre compte Alibaba Cloud. Dans le volet de navigation, cliquez sur Permission Policy. Créez une politique personnalisée avec le même contenu.
Attachez la politique aux utilisateurs RAM, aux groupes d'utilisateurs RAM ou aux rôles RAM. Consultez la rubrique Gérer les politiques d'accès.
Correction : désactiver la connexion au compte root
Créez un utilisateur standard pour la connexion SSH. Consultez la rubrique Connexion à distance multi-utilisateurs.
Connectez-vous à l'instance en tant qu'utilisateur root ou en tant qu'utilisateur standard.
-
Désactivez la connexion SSH root. Exécutez le script suivant pour modifier la configuration SSH :
#!/bin/bash # Back up the original configuration file cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%F) # Disable SSH logon for the root user: Change the PermitRootLogin parameter to no sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config # Restart the SSH service for the configuration to take effect # Note: The SSH service name may vary by distribution (for example, sshd or ssh). Modify it as needed. systemctl restart sshd || service sshd restart -
Vérifiez la modification. Maintenez la session actuelle ouverte et ouvrez un nouveau terminal. Confirmez que la connexion root échoue et que votre utilisateur standard peut se connecter et exécuter des commandes
sudo. Déconnectez ensuite toutes les sessions.Après la vérification, le résultat de la vérification peut ne pas être mis à jour immédiatement. Vous pouvez ignorer ce délai.