Le Blog Amazon Web Services

Connexion sécurisée aux instances Linux s’exécutant dans un Amazon VPC privé

Dans un précédent article de blog , Ryan Holland, Principal Partner Solutions Architect chez AWS, a montré comment sécuriser l’accès à plusieurs instances Windows Amazon EC2 s’exécutant derrière une passerelle Windows Remote Desktop agissant en tant qu’hôte bastion. Ryan revient cette fois avec une publication qui se concentre sur les hôtes bastions pour les instances Linux dans les sous-réseaux privés Amazon VPC.

Dans cet article, nous verrons comment utiliser le forwarding d’agent SSH pour permettre aux administrateurs de se connecter en toute sécurité aux instances Linux dans des sous-réseaux privés Amazon VPC. L’utilisation de cette configuration améliore la sécurité car vous n’avez pas à exposer les ports de gestion de vos instances Linux à Internet ou à d’autres sous-réseaux de votre VPC.

Remarque importante: vous devez activer le forwarding de l’agent SSH avec prudence. Lorsque vous configurez le forwarding de l’agent, un fichier de socket est créé sur l’hôte de transfert, et c’est à travers ce mécanisme que la clé peut être transférée vers votre destination. Un autre utilisateur du système disposant de la possibilité de modifier des fichiers pourrait éventuellement utiliser cette clé pour s’authentifier avec votre identité. Veuillez vous référer au manuel SSH pour plus de détails.

Serveurs SSH et bastion

Par défaut, les instances Linux dans EC2 utilisent des fichiers de clé SSH pour l’authentification au lieu de noms d’utilisateur et les mots de passe SSH. L’utilisation de fichiers de clés peut réduire le risque que quelqu’un essaye de deviner le mot de passe pour accéder à l’instance. Toutefois, l’utilisation de paires de clés avec un hôte bastion peut présenter un défi: la connexion à des instances des sous-réseaux privés nécessite une clé privée, mais vous ne devez jamais stocker de clés privées sur le bastion.

Une solution consiste à utiliser le transfert d’agent SSH (ssh-agent) sur le client. Cela permet à un administrateur de se connecter du bastion à une autre instance sans stocker la clé privée sur le bastion. C’est l’approche que nous allons détailler dans ce post. Un schéma de principe est diponible dans le

Configuration de ssh-agent

La première étape de l’utilisation du transfert d’agent SSH avec des instances EC2 consiste à configurer un bastion dans votre VPC. Nous suggérons que l’instance que vous utilisez pour votre bastion soit créer à cet effet et que vous l’utilisiez uniquement comme bastion et pour rien d’autre. Le bastion doit également être configuré avec un groupe de sécurité configuré pour écouter uniquement sur le port SSH (TCP / 22). Pour plus de sécurité, vous pouvez renforcer la sécurité de l’instance. Décrire en détail le renforcement de sécurité ne relève pas de cet article. Toutefois, cela implique des tâches telles que l’activation de SELinux, l’utilisation d’un serveur syslog distant pour la journalisation et la configuration de la détection d’intrusions machine (Host Based Intrusion Detection – HIDS). Pour plus d’informations, veuillez vous référer aux Principes de sécurisation d’OS sur le site etutorials.org.

Rappelez-vous toujours les points suivants lors de la configuration de votre bastion :

  • Ne placez jamais vos clés privées SSH sur l’instance de bastion. Au lieu de cela, utilisez le forwarding d’agent SSH pour vous connecter d’abord au bastion, puis aux autres instances des sous-réseaux privés. Cela vous permet de conserver votre clé privée SSH uniquement sur votre ordinateur,
  • Configurez le groupe de sécurité sur le bastion pour autoriser les connexions SSH (TCP/22) uniquement à partir d’adresses IP connues et approuvées,
  • Toujours prévoir plus d’un bastion. Vous devez idéalement avoir un bastion dans chaque zone de disponibilité (AZ) où se trouvent vos instances. Si votre déploiement utilise un réseau privé virtuel VPN pour se connecter au VPC, installez également un bastion “on premises” dans votre centre de données,
  • Configurez les instances Linux dans votre VPC pour accepter les connexions SSH uniquement à partir d’instances bastion,
  • Éteignez les bastions quand ceux-ci sont inutilisés.

Configuration de ssh-agent sur un Mac

Pour les utilisateurs Mac, ssh-agent est déjà installé avec le système d’exploitation. Vous pouvez ajouter vos clés privées à votre trousseau de clés en utilisant la commande ssh-add avec l’option -K et le fichier .pem de la clé, comme indiqué dans l’exemple suivant. L’agent vous invite à saisir votre phrase secrète, le cas échéant, et stocke la clé privée en mémoire et la phrase secrète dans votre trousseau.

ssh-add -K myPrivateKey.pem
Entrez la phrase secrète de myPrivateKey.pem:
Phrase secrète stockée dans le trousseau: myPrivateKey.pem
Identité ajoutée: myPrivateKey.pem (myPrivateKey.pem)

L’ajout de la clé à l’agent vous permet d’utiliser SSH pour vous connecter à une instance sans avoir à utiliser l’option –i <keyfile> lorsque vous vous connectez. Si vous voulez vérifier les clés disponibles pour ssh-agent, utilisez la commande ssh-add avec l’option -L. L’agent affiche les clés qu’il a stockées, comme illustré dans l’exemple suivant :

ssh-add –L
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDHEXAMPLErl25NOrbhgIGQzyO + TYyqbbYEueiEL
cXtOQHgEFpMAb1Nb8SSnlxMxiCXwTKd5 / lVnmgcbDwBpe7ayQ6idzjHfvoxPsFrI3QSJVQgy
cx0RylX9IjcvJOyw == myPrivateKey.pem

Une fois la clé ajoutée à votre trousseau, vous pouvez vous connecter à l’instance de bastion avec SSH à l’aide de l’option –A. Cette option active le forwarding d’agent SSH et permet à l’agent SSH local de répondre à un challenge de clé publique lorsque vous utilisez SSH pour vous connecter à partir du bastion à une instance cible de votre VPC.
Par exemple, pour vous connecter à une instance d’un sous-réseau privé, entrez la commande suivante pour activer le transfert d’agent SSH à l’aide de l’instance bastion :

ssh –A utilisateur@<adresse IP ou entrée DNS du bastion>

Lorsque vous vous connectez pour la première fois à l’instance, vous devriez vérifier que l’empreinte de clé RSA que le bastion présente correspond à ce qui est affiché dans la sortie de console de l’instance. (Pour des instructions sur la vérification de l’empreinte, consultez la documentation EC2).
Une fois que vous êtes connecté à l’instance de bastion, utilisez SSH pour vous connecter à une instance spécifique à l’aide d’une commande comme celle-ci :

ssh utilisateur@<adresse de l'instance ou adresse DNS>

Veuillez noter que ssh-agent ne sait pas quelle clé il doit utiliser pour une connexion SSH donnée. Par conséquent, ssh-agent testera séquentiellement toutes les clés chargées dans l’agent. Étant donné que les instances mettent fin à la connexion après cinq tentatives de connexion infructueuses, assurez-vous que l’agent dispose de cinq clés ou moins. Comme chaque administrateur ne doit avoir qu’une seule clé, cela pose rarement un problème pour la plupart des déploiements. Pour plus d’informations sur la gestion des clés dans ssh-agent, utilisez la commande man ssh-agent.

Configuration de ssh-agent sous Windows

Sous Windows, vous pouvez vous connecter à des instances Linux VPC à l’aide de PuTTY. Pour obtenir les fonctionnalités de l’agent SSH, vous pouvez utiliser Pageant, disponible sur la page de téléchargement de PuTTY. Lorsque Pageant est installé, vous pouvez utiliser l’option de forwarding d’agent dans PuTTY pour vous connecter aux instances de sous-réseaux privés.
Pour utiliser Pageant, vous devez convertir votre clé privée du format PEM au format PuTTY à l’aide de PuTTYGen (disponible sur la page de téléchargement de PuTTY ). Dans PuTTYGen, choisissez Conversions > Importer une clé et sélectionnez votre clé privée au format PEM. Entrez une phrase secrète, puis cliquez sur Enregistrer la clé privée, comme illustré dans la capture d’écran suivante. Enregistrez la clé dans un fichier .ppk.

Après avoir converti la clé privée, ouvrez Pageant, qui s’exécute en tant que service Windows. Pour importer la clé au format PuTTY dans Pageant, double-cliquez sur l’icône Pageant dans la zone de notification, puis cliquez sur Ajouter une clé. Lorsque vous sélectionnez le fichier .ppk, vous êtes invité à entrer la phrase secrète que vous avez choisie lors de la conversion de la clé, comme illustré dans la capture d’écran suivante.

Après avoir ajouté la clé, fermez la fenêtre Pageant Key List.

Enfin, lorsque vous configurez les connexions pour SSH dans PuTTY, cochez la case Allow agent forwarding et laissez le champ Fichier de clé privée pour l’authentification vide.

Lorsque vous utilisez PuTTY pour vous connecter à l’adresse IP publique de votre bastion, vous verrez que le composant Pageant PuTTY fournit la clé SSH pour l’authentification, comme illustré dans la capture d’écran suivante :

Lorsque le forwarding d’agent est activé dans la configuration de PuTTY, vous pouvez vous connecter du bastion à toute autre instance du VPC sans disposer de la clé privée SSH sur le bastion. Pour vous connecter à d’autres instances, utilisez la commande suivante :

ssh utilisateur@<adresse-de l'instance ou adresse DNS>

Tant que la clé privée correspondante pour l’instance est chargée dans Pageant, la connexion réussira, comme illustré dans la capture d’écran suivante :

Conclusion

En utilisant ces informations sur la façon de configurer des bastions pour accéder à des instances Linux dans un VPC, et avec le précédent article sur les instances et bastions Windows, vous disposez désormais d’outils supplémentaires pour améliorer la sécurité de vos instances EC2 en fermant l’accès Internet aux ports d’administration.

Si vous souhaitez plus d’informations sur le forwarding d’agent SSH, un bon tutoriel est disponible sur le site Web Unixwiz.net.

Indiquez-nous si ces meilleures pratiques fonctionnent pour votre environnement. Nous cherchons toujours à améliorer nos conseils afin de prendre en charge autant de cas d’utilisation que possible de nos clients. Vous souhaitez plus d’informations sur le contenu, les actualités et les fonctionnalités d’AWS Security? Suivez-nous sur Twitter.

Traduit en français par Antoine Yeramian, Solutions Architect.
Avant d’intégrer Amazon Web Services, Antoine a eu un parcours dans les domaines de la sécurité et de la virtualisation. Il aide désormais les entreprises de toute taille dans leur projets de migration vers AWS ou de déploiement d’architectures cloud native, LinkedIn.

Article original en anglais : https://aws.amazon.com/blogs/security/securely-connect-to-linux-instances-running-in-a-private-amazon-vpc/