Je souhaite accéder à mon instance Amazon Elastic Compute Cloud (Amazon EC2) via SSH. Cependant, je souhaite bloquer tout accès non autorisé.
Brève description
Appliquez les bonnes pratiques suivantes pour sécuriser vos instances lorsque vous accédez à des instances EC2 via SSH :
- Utilisez AWS Systems Manager pour gérer l'accès des utilisateurs à Gestion des identités et des accès AWS (IAM).
-ou-
Utilisez Amazon EC2 Instance Connect pour donner au shell l'accès aux instances.
- Empêchez l'accès des utilisateurs racines du compte AWS qui utilisent un terminal SSH.
- Renforcez les connexions par paires de clés SSH et désactivez l'authentification par mot de passe.
- Contrôlez l'accès aux ports pour restreindre l'accès provenant de sources inconnues.
Résolution
Prérequis : Vous devez exécuter les commandes des étapes de résolution suivantes avec les autorisations d'utilisateur racine. Pour devenir l'utilisateur racine, exécutez la commande suivante :
sudo -i
Configurer l'accès à votre instance
Utiliser Systems Manager
Grâce à Session Manager, une fonctionnalité d'AWS Systems Manager, les utilisateurs IAM peuvent se connecter à vos instances grâce à des fonctionnalités de cryptage et de journalisation. Pour Session Manager, il n'est pas nécessaire d'ouvrir les ports entrants sur le groupe de sécurité de l'instance. Pour les instances privées, le trafic vers Systems Manager passe par les points de terminaison de l'interface de Systems Manager et permet uniquement un accès sécurisé.
Utiliser EC2 Instance Connect
Utilisez EC2 Instance Connect pour vous connecter à vos instances. EC2 Instance Connect utilise vos rôles et politiques IAM existants.
Pour les instances privées, créez un point de terminaison EC2 Instance Connect dans votre cloud privé virtuel (VPC) pour obtenir l'accès. Pour plus d'informations, consultez Connexion à vos instances à l'aide d'une adresse IP privée et d'un point de terminaison EC2 Instance Connect.
N'autorisez pas l'utilisateur racine à utiliser un terminal SSH et assurez-vous que tous les utilisateurs se connectent avec une paire de clés SSH
Par défaut, Amazon a fourni Amazon Machine Images (AMI) et la plupart des fournisseurs d'AWS Marketplace n'autorisent pas les connexions des utilisateurs racines depuis un terminal SSH. Les AMI fournies par Amazon obligent également les utilisateurs à se connecter à l'aide d'une paire de clés SSH et à bloquer l'accès à l'aide d'un mot de passe. Cette configuration protège votre instance contre les risques de sécurité. Par exemple, un utilisateur non autorisé peut deviner un mot de passe faible pour obtenir l'accès.
Important : Assurez-vous de créer des paires de clés avant de désactiver l'authentification par mot de passe afin de ne pas perdre l'accès SSH à l'instance. Chaque utilisateur doit importer ses clés publiques au format ~/.ssh/authorized_keys.
Si votre instance autorise l'utilisateur ravine à se connecter ou à s'authentifier par mot de passe, procédez comme suit pour revenir à la configuration par défaut :
-
Exécutez la commande suivante pour modifier le fichier /etc/shadow :
vipw -s
-
Ajoutez un astérisque (\ *) dans le champ du mot de passe pour que le mot de passe de l'utilisateur racine ne soit pas valide.
Exemple de ligne :
root:*EXAMPLEPASSWORD*:14600::::::
-
Modifiez le fichier de configuration SSH à l'aide d'un éditeur de texte. Par exemple, exécutez la commande suivante pour modifier le fichier dans l'éditeur vi :
vi /etc/ssh/sshd_config
-
Assurez-vous que la ligne suivante est présente et non commentée :
PermitRootLogin no
Remarque : la ligne précédente bloque l'utilisateur racine. Pour plus d'informations sur l'option PermitRootLogin, consultez sshd_config sur le site Web d'OpenBSD.
-
Accédez au répertoire /etc/ssh/sshd_config.d et passez en revue tous les fichiers qu'il contient. Si un fichier contient une ligne PermitRootLogin no commentée, décommentez la ligne pour empêcher les remplacements de configuration.
-
Exécutez la commande suivante pour redémarrer le démon sshd :
systemctl restart sshd
Restreindre l'accès à partir de sources inconnues
Pour les instances publiques, il n'est pas recommandé de garder le port SSH ouvert et sans restriction. Pour restreindre l'accès au port SSH, effectuez les actions suivantes.
Maintenir le démon SSH à jour
Exécutez la commande suivante en fonction de votre distribution Linux pour mettre à jour le démon SSH vers la dernière version de votre distribution Linux.
Red Hat Enterprise Linux (RHEL) ou Amazon Linux :
yum -y install openssh-server
Ubuntu ou Debian :
apt update && apt install openssh-server
Remarque : le démon SSH reçoit généralement des mises à jour de rétroportage depuis les versions ultérieures du fournisseur en amont. Pour plus d'informations sur le rétroportage, consultez la section Correctifs de sécurité sur le site Web du portail client Red Hat.
Restreindre les connexions entrantes
Mettez à jour votre groupe de sécurité pour autoriser les connexions entrantes au port SSH uniquement à partir d'adresses IP fiables, telles que les adresses IP du réseau d'entreprise. Par défaut, le port SSH est le port 22.
Bloquez les connexions infructueuses répétées avec fail2ban
Si vous devez garder le port SSH ouvert à tout le trafic, assurez-vous que votre configuration bloque tout accès non autorisé. Avec un port SSH ouvert, des utilisateurs non autorisés peuvent essayer de deviner des noms d'utilisateur et des mots de passe, ou surcharger votre démon SSH de demandes d'accès. Utilisez l'utilitaire fail2ban pour surveiller vos fichiers journaux afin de détecter les tentatives de connexion répétées à votre instance. Si l'utilitaire constate un trop grand nombre de tentatives de connexion, il bloque les autres tentatives.
Pour Amazon Linux 2 (AL2), RHEL et Centos, installez le référentiel Extra Packages for Enterprise Linux (EPEL). Exécutez ensuite les commandes suivantes pour installer fail2ban :
sudo yum -y install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Remarque : pour Amazon Linux 2023 (AL2023), vous pouvez exécuter directement les commandes précédentes. AL2023 ne nécessite pas le référentiel EPEL.
Pour Ubuntu et Debian, exécutez les commandes suivantes pour installer fail2ban :
sudo apt update
sudo apt -y install fail2ban
Pour plus d'informations sur la configuration de fail2ban, consultez la section Sécurité Linux : Protégez vos systèmes avec fail2ban sur le site Web de Red Hat.
Informations connexes
Sécurisation de vos hôtes bastion avec Amazon EC2 Instance Connect