Guide pour la construction d'un VPC AWS sécurisé à partir de zéro
Le Virtual Private Cloud (VPC) d'Amazon Web Services (AWS) est un bloc de construction fondamental pour le déploiement d'applications et de ressources dans le cloud. Il fournit une section logiquement isolée du cloud AWS où vous pouvez lancer des ressources AWS dans un réseau virtuel que vous définissez. Construire un VPC sécurisé à partir de zéro est crucial pour protéger vos données et applications contre tout accès non autorisé. Ce guide vous expliquera les étapes essentielles de la conception et de la configuration d'un nouveau VPC, couvrant des composants clés tels que les sous-réseaux, les tables de routage, et les considérations de sécurité critiques pour une segmentation et une isolation optimales du réseau.
Un VPC bien conçu est le fondement d'une infrastructure cloud sécurisée. Il vous permet de contrôler votre environnement réseau, de définir des règles d'accès et de segmenter vos ressources en fonction de leur sensibilité et de leur fonction. En planifiant et en mettant en œuvre soigneusement votre VPC, vous pouvez améliorer considérablement la posture de sécurité de votre déploiement AWS, réduisant la surface d'attaque et prévenant l'exposition involontaire des données. Ce guide vous fournira les connaissances nécessaires pour créer un VPC robuste et sécurisé adapté à vos besoins spécifiques.
Comprendre les concepts fondamentaux du VPC
Avant de plonger dans les étapes de configuration, il est essentiel de maîtriser les concepts fondamentaux d'AWS VPC :
- 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 (Subnet) : 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 (Route Table) : Un ensemble de règles, appelées routes, qui sont utilisées pour déterminer où le trafic réseau provenant de votre sous-réseau ou de votre passerelle est dirigé.
- Passerelle Internet (Internet Gateway - IGW) : Un composant VPC qui permet la communication entre votre VPC et Internet. Il permet aux instances de votre VPC de se connecter à Internet et inversement.
- 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é (Security Group) : 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 (Network Access Control List - 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 de plusieurs sous-réseaux. Elle fonctionne au niveau du sous-réseau.
Création du VPC étape par étape
Commençons à construire votre VPC sécurisé.
1. Planifiez votre schéma d'adresses IP
La première étape, et la plus critique, est de planifier votre plage d'adresses IP pour le VPC et ses sous-réseaux. Cela implique de sélectionner un bloc Classless Inter-Domain Routing (CIDR) 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 de sous-réseau : 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 les 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éer votre VPC
Naviguez vers le tableau de bord VPC dans la Console de gestion AWS (AWS Management Console) et créez un nouveau VPC.
- Allez dans Tableau de bord VPC > Vos VPC > Créer un VPC.
- Balise de nom (Name tag) : Donnez à votre VPC un nom descriptif (par exemple,
MySecureVPC). - Bloc CIDR IPv4 : Entrez 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.
- Tenancy (Location) : Pour la plupart des cas d'utilisation, Default (Par défaut) convient. Dedicated (Dédié) offre une isolation matérielle à un coût plus élevé.
- Cliquez sur Créer un VPC.
3. Créer des sous-réseaux
Maintenant, créez vos sous-réseaux publics et privés au sein du 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 (Subnet name) : Fournissez un nom (par exemple,
MyPublicSubnet-AZ1). - Zone de disponibilité (Availability Zone) : Choisissez une Zone de disponibilité (AZ). Il est préférable de déployer des ressources sur plusieurs AZ pour une haute disponibilité.
- Bloc CIDR IPv4 : Entrez 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 les sous-réseaux publics et privés que vous avez planifiés, en vous assurant qu'ils se trouvent dans des Zones de disponibilité différentes pour la résilience.
4. Créer une passerelle Internet (IGW)
Une IGW est nécessaire pour que vos sous-réseaux publics puissent accéder à Internet.
- Allez dans Tableau de bord VPC > Passerelles Internet > Créer une passerelle Internet.
- Balise de nom :
MyVPCInternetGateway. - 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éer des tables de routage
Les tables de routage dirigent le trafic au sein de votre VPC. Vous en 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 :
MyPublicRouteTable. - VPC : Sélectionnez votre VPC.
- Cliquez sur Créer une table de routage.
- Sélectionnez la
MyPublicRouteTablenouvellement 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 (Target) : Sélectionnez Passerelle Internet et choisissez votre IGW.
- Cliquez sur Enregistrer les routes.
- Associer des 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 des 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éer une passerelle NAT :
- Allez dans Tableau de bord VPC > Passerelles NAT > Créer une passerelle NAT.
- Nom :
MyNATGateway. - Sous-réseau : Sélectionnez l'un de vos sous-réseaux publics.
- Type de connectivité :
Public. - ID d'allocation IP élastique : Cliquez sur Allouer une IP élastique pour créer et attribuer une nouvelle adresse IP élastique (Elastic IP).
- Cliquez sur Créer une passerelle NAT.
- Note : 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éer la table de routage privée :
- Allez dans Tableau de bord VPC > Tables de routage > Créer une table de routage.
- Balise de nom :
MyPrivateRouteTable. - VPC : Sélectionnez votre VPC.
- Cliquez sur Créer une table de routage.
- Sélectionnez la
MyPrivateRouteTable. - 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 des 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. Configurer les Groupes de Sécurité (Security Groups)
Les Groupes de sécurité agissent comme des pare-feu avec état (stateful) 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 (WebServerSG)
- Allez dans Tableau de bord VPC > Groupes de sécurité > Créer un groupe de sécurité.
- Nom du groupe de sécurité :
WebServerSG. - Description :
Autoriser l'accès HTTP et HTTPS. - VPC : Sélectionnez votre VPC.
- Règles d'entrée (Inbound rules) :
- 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 de sortie (Outbound rules) : Par défaut, autorisez tout le trafic sortant (
0.0.0.0/0). Vous pouvez le restreindre si nécessaire. - Cliquez sur Créer un groupe de sécurité.
Exemple : Groupe de sécurité pour serveur de base de données (DatabaseSG)
- Créez un nouveau groupe de sécurité nommé
DatabaseSG. - Règles d'entrée :
- 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,WebServerSGouAppServerSG). - Source : Sélectionnez Personnalisé (Custom) puis tapez l'ID de votre groupe de sécurité de serveur d'application.
- Ajoutez une règle autorisant le trafic sur le port par défaut de votre base de données (par exemple,
- Règles de sortie : Généralement, autorisez tout le trafic sortant.
7. Configurer les Listes de contrôle d'accès réseau (NACLs)
Les NACLs sont des pare-feu sans état (stateless) qui fonctionnent au niveau du sous-réseau. Ils 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 NACLs sont sans état (vous devez définir explicitement des règles pour le trafic entrant et sortant).
-
Meilleure pratique : Les NACLs 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. Leur gestion peut être complexe.
Si vous devez utiliser des NACLs :
- Allez dans Tableau de bord VPC > ACL réseau > Créer une ACL réseau.
- Balise de nom :
MyNacl. - VPC : Sélectionnez votre VPC.
- Cliquez sur Créer une ACL réseau.
- Sélectionnez l'ACL réseau, et sous Règles d'entrée, ajoutez des règles.
- Numéros de règle : Les NACLs é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 de règles futures. - Autoriser/Refuser (Allow/Deny) : 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 de sortie correspondantes.
- Associez l'ACL réseau à vos sous-réseaux en allant dans l'onglet Associations de sous-réseaux.
Scénario de déploiement type
Considérez une application web typique :
- VPC :
10.0.0.0/16 - Sous-réseau public 1 (
us-east-1a) :10.0.1.0/24(Associé àMyPublicRouteTableet IGW) - Sous-réseau public 2 (
us-east-1b) :10.0.2.0/24(Associé àMyPublicRouteTableet IGW) - Sous-réseau privé 1 (
us-east-1a) :10.0.10.0/24(Associé àMyPrivateRouteTableet Passerelle NAT) -
Sous-réseau privé 2 (
us-east-1b) :10.0.11.0/24(Associé àMyPrivateRouteTableet 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 (Groupe de Sécurité) 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 de sécurité critiques
- Principe du moindre privilège : N'accordez que les autorisations nécessaires à vos groupes de sécurité et à vos NACLs. Restreignez les adresses IP sources autant que possible.
- Utiliser plusieurs Zones de disponibilité : Distribuez vos sous-réseaux et ressources sur plusieurs AZ pour une haute disponibilité et une reprise après sinistre. Ceci est réalisé en créant des sous-réseaux dans différentes AZ et en les associant aux tables de routage appropriées.
- Examiner régulièrement les Groupes de sécurité et les NACLs : À mesure que votre application évolue, vos règles de sécurité doivent aussi évoluer. Auditez-les et mettez-les à jour périodiquement.
- Éviter 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 hôtes bastion) doivent se trouver dans des sous-réseaux publics.
- Envisager les Hôtes Bastion : Si vous devez vous connecter en SSH aux instances dans les sous-réseaux privés, envisagez d'utiliser un hôte bastion renforcé dans un sous-réseau public. Restreignez l'accès SSH à l'hôte bastion aux adresses IP connues.
- VPC Flow Logs : Activez les VPC Flow Logs pour capturer des informations sur le trafic IP circulant vers et depuis les interfaces réseau de votre VPC. Ceci 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, staging, production) et les différentes couches de votre application.
Conclusion
La construction d'un VPC AWS sécurisé à partir de zéro implique une planification et une configuration minutieuses de ses composants essentiels. En comprenant les blocs CIDR, les sous-réseaux, les tables de routage, et en tirant parti efficacement des groupes de sécurité et des NACLs, vous pouvez établir un environnement réseau robuste et isolé pour vos ressources AWS. N'oubliez pas que la sécurité est un processus continu, de sorte que la surveillance continue, l'examen et l'adhérence aux meilleures pratiques sont primordiaux pour maintenir une infrastructure cloud sécurisée.