Guide pour construire un VPC AWS sécurisé à partir de zéro
Construisez un VPC AWS sécurisé avec des plages CIDR planifiées, des sous-réseaux publics et privés, des tables de routage, un NAT, des groupes de sécurité et des journaux de flux.
Guide pour construire un VPC AWS sécurisé à partir de zéro
Un VPC AWS offre à vos ressources cloud une frontière réseau privée, mais la configuration par défaut est rarement suffisante pour la production. Si vous placez des bases de données dans des sous-réseaux publics, réutilisez des plages CIDR qui se chevauchent, ou ouvrez des règles de groupe de sécurité trop larges, vous pouvez créer des problèmes difficiles à résoudre ultérieurement.
Ce guide vous montre comment construire un VPC AWS sécurisé à partir de zéro avec des sous-réseaux publics pour les points d'entrée, des sous-réseaux privés pour les charges de travail applicatives et de bases de données, des tables de routage, un NAT, des groupes de sécurité et une surveillance de base.
Comprendre les concepts fondamentaux du VPC
Avant de plonger dans les étapes de configuration, il est essentiel de saisir les concepts fondamentaux du VPC AWS :
- VPC (Virtual Private Cloud) : Un réseau virtuel dédié à votre compte AWS. C'est une section logiquement isolée du cloud AWS où vous pouvez lancer des ressources AWS.
- Sous-réseau : Une plage d'adresses IP dans votre VPC. Vous pouvez lancer des ressources AWS dans des sous-réseaux que vous créez. Les sous-réseaux sont définis par leur bloc CIDR, qui est un sous-ensemble du bloc CIDR du VPC.
- Table de routage : Un ensemble de règles, appelées routes, utilisées pour déterminer où le trafic réseau de votre sous-réseau ou passerelle est dirigé.
- Passerelle Internet (IGW) : Un composant VPC qui permet le trafic routable sur Internet pour les ressources avec des adresses IP publiques et une route vers la passerelle.
- Passerelle NAT (Network Address Translation) : Un service NAT hautement disponible et évolutif qui permet l'accès Internet pour les instances dans un sous-réseau privé tout en empêchant les connexions entrantes initiées depuis Internet.
- Groupe de sécurité : Agit comme un pare-feu virtuel pour vos instances afin de contrôler le trafic entrant et sortant. Il fonctionne au niveau de l'instance.
- Liste de contrôle d'accès réseau (NACL) : Une couche de sécurité facultative pour votre VPC qui agit comme un pare-feu pour contrôler le trafic entrant et sortant d'un ou plusieurs sous-réseaux. Elle fonctionne au niveau du sous-réseau.
Création étape par étape du VPC
Commençons à construire votre VPC sécurisé.
1. Planifiez votre schéma d'adresses IP
La première étape, et la plus critique, consiste à planifier votre plage d'adresses IP pour le VPC et ses sous-réseaux. Cela implique de sélectionner un bloc CIDR (Classless Inter-Domain Routing) pour votre VPC.
Bloc CIDR du VPC : Choisissez une plage d'adresses IP privées qui ne chevauche pas votre réseau sur site ou tout autre VPC AWS auquel vous pourriez vous connecter via VPN ou Direct Connect. AWS recommande d'utiliser les plages d'adresses IP RFC 1918 (10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16). Le bloc CIDR peut aller de /16 (65 536 adresses IP) à /28 (16 adresses IP).
- Exemple :
10.0.0.0/16fournit un grand espace d'adressage pour votre VPC.
- Exemple :
Blocs CIDR des sous-réseaux : Divisez le bloc CIDR de votre VPC en blocs CIDR plus petits pour vos sous-réseaux. Assurez-vous que le bloc CIDR de chaque sous-réseau est un sous-ensemble du bloc CIDR du VPC et ne chevauche pas d'autres sous-réseaux.
- **Exemple (si le VPC est
10.0.0.0/16) :- Sous-réseau public 1 :
10.0.1.0/24 - Sous-réseau public 2 :
10.0.2.0/24 - Sous-réseau privé 1 :
10.0.10.0/24 - Sous-réseau privé 2 :
10.0.11.0/24
- Sous-réseau public 1 :
- **Exemple (si le VPC est
2. Créez votre VPC
Accédez au tableau de bord VPC dans la console de gestion AWS et créez un nouveau VPC.
- Allez dans Tableau de bord VPC > Vos VPC > Créer un VPC.
- Balise de nom : Donnez un nom descriptif à votre VPC (par exemple,
MonVPCSecurise). - Bloc CIDR IPv4 : Saisissez le bloc CIDR que vous avez planifié (par exemple,
10.0.0.0/16). - Bloc CIDR IPv6 : Vous pouvez choisir d'activer un bloc CIDR IPv6 si nécessaire.
- Location : Pour la plupart des cas d'utilisation, Par défaut est approprié. Dédié offre une isolation matérielle à un coût plus élevé.
- Cliquez sur Créer un VPC.
3. Créez des sous-réseaux
Créez maintenant vos sous-réseaux publics et privés dans le VPC.
- Allez dans Tableau de bord VPC > Sous-réseaux > Créer un sous-réseau.
- ID du VPC : Sélectionnez le VPC que vous venez de créer.
- Nom du sous-réseau : Fournissez un nom (par exemple,
MonSousReseauPublic-AZ1). - Zone de disponibilité : Choisissez une zone de disponibilité (AZ). Il est recommandé de déployer des ressources sur plusieurs AZ pour une haute disponibilité.
- Bloc CIDR IPv4 : Saisissez le bloc CIDR pour ce sous-réseau (par exemple,
10.0.1.0/24). - Cliquez sur Créer un sous-réseau.
Répétez ce processus pour créer tous vos sous-réseaux publics et privés planifiés, en vous assurant qu'ils se trouvent dans différentes zones de disponibilité pour la résilience.
4. Créez une passerelle Internet (IGW)
Une IGW est nécessaire pour que vos sous-réseaux publics accèdent à Internet.
- Allez dans Tableau de bord VPC > Passerelles Internet > Créer une passerelle Internet.
- Balise de nom :
PasserelleInternetMonVPC. - Cliquez sur Créer une passerelle Internet.
- Après la création, sélectionnez l'IGW, cliquez sur Actions, et choisissez Attacher au VPC. Sélectionnez votre VPC et cliquez sur Attacher la passerelle Internet.
5. Créez des tables de routage
Les tables de routage dirigent le trafic au sein de votre VPC. Vous aurez généralement besoin d'au moins deux : une pour les sous-réseaux publics et une pour les sous-réseaux privés.
a. Table de routage publique :
- Allez dans Tableau de bord VPC > Tables de routage > Créer une table de routage.
- Balise de nom :
MaTableDeRoutagePublique. - VPC : Sélectionnez votre VPC.
- Cliquez sur Créer une table de routage.
- Sélectionnez la
MaTableDeRoutagePubliquenouvellement créée. - Sous l'onglet Routes, cliquez sur Modifier les routes.
- Cliquez sur Ajouter une route.
- Destination :
0.0.0.0/0(tout le trafic IPv4). - Cible : Sélectionnez Passerelle Internet et choisissez votre IGW.
- Cliquez sur Enregistrer les routes.
- Associer les sous-réseaux : Allez dans l'onglet Associations de sous-réseaux, cliquez sur Modifier les associations de sous-réseaux, et associez vos sous-réseaux publics à cette table de routage.
b. Table de routage privée (avec passerelle NAT) :
Pour permettre aux instances dans les sous-réseaux privés d'initier des connexions sortantes vers Internet (par exemple, pour les mises à jour logicielles) sans être directement accessibles depuis Internet, vous utiliserez une passerelle NAT.
Créez une passerelle NAT :
- Allez dans Tableau de bord VPC > Passerelles NAT > Créer une passerelle NAT.
- Nom :
MaPasserelleNAT. - Sous-réseau : Sélectionnez l'un de vos sous-réseaux publics.
- Type de connectivité :
Publique. - ID d'allocation d'IP élastique : Cliquez sur Allouer une IP élastique pour créer et attribuer une nouvelle adresse IP élastique.
- Cliquez sur Créer une passerelle NAT.
- Remarque : Les passerelles NAT entraînent des coûts. Pour une connectivité sortante de base, assurez-vous de disposer de suffisamment d'adresses IP disponibles dans votre sous-réseau public pour la passerelle NAT.
Créez la table de routage privée :
- Allez dans Tableau de bord VPC > Tables de routage > Créer une table de routage.
- Balise de nom :
MaTableDeRoutagePrivee. - VPC : Sélectionnez votre VPC.
- Cliquez sur Créer une table de routage.
- Sélectionnez la
MaTableDeRoutagePrivee. - Sous l'onglet Routes, cliquez sur Modifier les routes.
- Cliquez sur Ajouter une route.
- Destination :
0.0.0.0/0. - Cible : Sélectionnez Passerelle NAT et choisissez votre passerelle NAT.
- Cliquez sur Enregistrer les routes.
- Associer les sous-réseaux : Allez dans l'onglet Associations de sous-réseaux, cliquez sur Modifier les associations de sous-réseaux, et associez vos sous-réseaux privés à cette table de routage.
6. Configurez les groupes de sécurité
Les groupes de sécurité agissent comme des pare-feu avec état au niveau de l'instance. Ils autorisent ou refusent le trafic en fonction des règles que vous définissez.
- Meilleure pratique : Créez des groupes de sécurité spécifiques pour différents types de ressources (par exemple, serveurs web, serveurs de bases de données, serveurs d'applications). Évitez d'utiliser des règles trop permissives.
Exemple : Groupe de sécurité pour serveur web (GSServeurWeb)
- Allez dans Tableau de bord VPC > Groupes de sécurité > Créer un groupe de sécurité.
- Nom du groupe de sécurité :
GSServeurWeb. - Description :
Autoriser l'accès HTTP et HTTPS. - VPC : Sélectionnez votre VPC.
- Règles entrantes :
- Type :
HTTP, Protocole :TCP, Plage de ports :80, Source :0.0.0.0/0(ou une plage d'adresses IP de confiance plus spécifique). - Type :
HTTPS, Protocole :TCP, Plage de ports :443, Source :0.0.0.0/0(ou une plage d'adresses IP de confiance plus spécifique). - (Facultatif) Type :
SSH, Protocole :TCP, Plage de ports :22, Source :Votre adresse/plage IP de confiance(crucial pour la gestion).
- Type :
- Règles sortantes : Par défaut, autorisez tout le trafic sortant (
0.0.0.0/0). Vous pouvez restreindre cela si nécessaire. - Cliquez sur Créer un groupe de sécurité.
Exemple : Groupe de sécurité pour serveur de base de données (GSServeurBDD)
- Créez un nouveau groupe de sécurité nommé
GSServeurBDD. - Règles entrantes :
- Ajoutez une règle autorisant le trafic sur le port par défaut de votre base de données (par exemple,
3306pour MySQL,5432pour PostgreSQL) uniquement depuis le groupe de sécurité de vos serveurs d'applications (par exemple,GSServeurWebouGSServeurApp). - Source : Sélectionnez Personnalisé puis saisissez l'ID du groupe de sécurité de votre serveur d'applications.
- Ajoutez une règle autorisant le trafic sur le port par défaut de votre base de données (par exemple,
- Règles sortantes : Autorisez généralement tout le trafic sortant.
7. Configurez les listes de contrôle d'accès réseau (NACL)
Les NACL sont des pare-feu sans état qui fonctionnent au niveau du sous-réseau. Elles agissent comme une couche de défense supplémentaire.
Avec état vs. Sans état : Les groupes de sécurité sont avec état (si vous autorisez le trafic entrant, la réponse sortante est automatiquement autorisée). Les NACL sont sans état (vous devez définir explicitement des règles pour le trafic entrant et sortant).
Meilleure pratique : Les NACL sont souvent laissées avec des configurations par défaut, sauf si un contrôle d'accès spécifique au niveau du sous-réseau est requis. Elles peuvent être complexes à gérer.
Si vous devez utiliser des NACL :
- Allez dans Tableau de bord VPC > NACL réseau > Créer une NACL réseau.
- Balise de nom :
MaNACL. - VPC : Sélectionnez votre VPC.
- Cliquez sur Créer une NACL réseau.
- Sélectionnez la NACL, et sous Règles entrantes, ajoutez des règles.
- Numéros de règle : Les NACL évaluent les règles dans l'ordre, en commençant par le numéro de règle le plus bas. Utilisez des numéros comme
100,200,300, etc., pour permettre l'insertion future de règles. - Autoriser/Refuser : Spécifiez s'il faut autoriser ou refuser le trafic.
- Protocole, Plage de ports, Source/Destination : Définissez les paramètres de trafic.
- N'oubliez pas de configurer les Règles sortantes correspondantes.
- Associez la NACL à vos sous-réseaux en allant dans l'onglet Associations de sous-réseaux.
Exemple de scénario de déploiement
Considérez une application web typique :
VPC :
10.0.0.0/16Sous-réseau public 1 (
us-east-1a) :10.0.1.0/24(Associé àMaTableDeRoutagePubliqueet IGW)Sous-réseau public 2 (
us-east-1b) :10.0.2.0/24(Associé àMaTableDeRoutagePubliqueet IGW)Sous-réseau privé 1 (
us-east-1a) :10.0.10.0/24(Associé àMaTableDeRoutagePriveeet passerelle NAT)Sous-réseau privé 2 (
us-east-1b) :10.0.11.0/24(Associé àMaTableDeRoutagePriveeet passerelle NAT)Passerelle Internet : Attachée au VPC.
Passerelle NAT : Déployée dans le
Sous-réseau public 1avec une IP élastique.Table de routage publique : Dirige
0.0.0.0/0vers l'IGW. Associée aux sous-réseaux publics.Table de routage privée : Dirige
0.0.0.0/0vers la passerelle NAT. Associée aux sous-réseaux privés.Groupe de sécurité pour les équilibreurs de charge (dans les sous-réseaux publics) : Autorise HTTP/HTTPS depuis
0.0.0.0/0.Groupe de sécurité pour les serveurs web (dans les sous-réseaux privés) : Autorise HTTP/HTTPS depuis le GS de l'équilibreur de charge, et SSH depuis votre IP de confiance.
Groupe de sécurité pour les bases de données (dans les sous-réseaux privés) : Autorise MySQL/PostgreSQL depuis le GS du serveur web.
Considérations critiques en matière de sécurité
- Principe du moindre privilège : Accordez uniquement les autorisations nécessaires pour vos groupes de sécurité et NACL. Restreignez autant que possible les adresses IP sources.
- Utilisez plusieurs zones de disponibilité : Répartissez vos sous-réseaux et ressources sur plusieurs AZ pour la haute disponibilité et la reprise après sinistre. Cela est réalisé en créant des sous-réseaux dans différentes AZ et en les associant à des tables de routage appropriées.
- Examinez régulièrement les groupes de sécurité et les NACL : À mesure que votre application évolue, vos règles de sécurité doivent également évoluer. Auditez et mettez à jour périodiquement.
- Évitez les sous-réseaux publics pour les ressources sensibles : Les bases de données, les serveurs d'applications et autres ressources sensibles doivent résider dans des sous-réseaux privés. Seules les ressources nécessitant un accès Internet direct (comme les équilibreurs de charge ou les bastions) doivent se trouver dans des sous-réseaux publics.
- Envisagez des bastions : Si vous devez vous connecter en SSH à des instances dans des sous-réseaux privés, envisagez d'utiliser un bastion durci dans un sous-réseau public. Restreignez l'accès SSH au bastion à des adresses IP connues.
- Journaux de flux VPC : Activez les journaux de flux VPC pour capturer des informations sur le trafic IP entrant et sortant des interfaces réseau dans votre VPC. Cela est inestimable pour la surveillance de la sécurité et le dépannage.
- Segmentation du réseau : Utilisez différents VPC et sous-réseaux pour segmenter les environnements (par exemple, développement, préproduction, production) et les différentes couches de votre application.
Dernier point à retenir
Construisez le VPC autour du flux de trafic : les sous-réseaux publics ne doivent exposer que les équilibreurs de charge, les passerelles NAT ou un accès bastion strictement contrôlé, tandis que les ressources applicatives et de bases de données restent privées. Après le lancement, continuez à examiner les groupes de sécurité, les tables de routage et les journaux de flux VPC pour que le réseau reste aligné sur le fonctionnement réel de votre application.