Comment créer des groupes de sécurité dans AWS en utilisant Terraform

Comment créer des groupes de sécurité dans AWS en utilisant Terraform
AWS contrôle les différents services qu'il offre. Il est donc très important que l'utilisateur sache comment implémenter efficacement les pratiques de sécurité recommandées AWS. Un service de calcul élastique ou EC2 est l'un des services AWS les plus couramment utilisés. Vous pouvez créer de nouvelles instances ici, les supprimer, configurer le réseau et la sécurité, et de nombreuses autres opérations.

Terraform by Hashicorp est une infrastructure et un outil de code qui peut être utilisé pour gérer les différents services d'AWS. Il est similaire au service AWS Cloudformation avec plus de fonctionnalités et d'avantages. Avec Terraform, nous pouvons planifier les modifications à appliquer avant d'être appliqués.

Que couvrons-nous?

Dans ce guide, nous utiliserons les fonctionnalités de Terraform pour créer des groupes de sécurité. Dans ce SG, nous n'autoriserons que le trafic HTTP et le trafic SSH par exemple. Nous attacherons ensuite ce groupe de sécurité à une instance AWS exécutant un serveur Web, puis vérifiez si les SG attachés fonctionnent comme prévu.

De quoi avons-nous besoin?

Pour effectuer ce guide, vous devriez avoir un compte AWS et accéder aux informations d'identification AWS sur votre système local d'où vous exécutez le terraform. Vous devriez également faire installer le terraform sur votre système. Vous pouvez vous référer au Guide officiel de Terraform pour savoir comment installer la terraform.

Bits sur les groupes de sécurité

Les groupes de sécurité sont une partie très importante du service EC2. Ce qu'ils font, c'est simplement contrôler le trafic qui approche des ressources avec lesquelles ils sont associés. Par exemple, après avoir créé une instance et y attacher un groupe de sécurité, la règle entrante décide quel type de trafic peut atteindre l'instance. De même, une règle sortante décide quel type de trafic est autorisé à sortir de l'instance.

Il existe un groupe de sécurité par défaut qui est livré avec chaque VPC nouvellement créé (Cloud privé virtuel). Nous pouvons ensuite créer de nouveaux SG (abréviation des groupes de sécurité), mais ces SG ne peuvent être attachés qu'avec les ressources qui appartiennent à ce VPC.

On peut attacher un ou plusieurs groupes de sécurité au moment du lancement d'une instance. Plusieurs règles peuvent être jointes à un groupe de sécurité qui peut également être modifié plus tard.

Créer un groupe de sécurité

Dans cette section, nous créerons un groupe de sécurité qui n'autorise que le trafic sortant «HTTP» (Outgress), je.e. le trafic allant de l'instance et permettez à tout le trafic entrant (entrée) i.e. Le trafic arrive à l'instance.

Note: Lorsqu'un nouveau groupe de sécurité est créé dans un VPC, il a une règle de sortie «Autoriser toute» par défaut. Lorsqu'un nouveau groupe de sécurité est créé dans un VPC, cette règle par défaut est anéantie par la terraform, mais vous pouvez à nouveau configurer cette règle si nécessaire.

Maintenant, nous créons un répertoire de travail pour notre projet TerraForm qui contiendra tous nos fichiers suivants. Ouvrez un éditeur de texte et créez le fichier suivant:

$ nano secgrp.TF

Mettez le code suivant dans ce fichier et enregistrez-le:

ressource "aws_security_group" "Demo-sg"
name = "sec-grp"
Description = "Autoriser le trafic HTTP et SSH via Terraform"
entrave
From_port = 80
to_port = 80
protocole = "TCP"
cidr_blocks = ["0.0.0.0/0 "]

entrave
From_port = 22
to_port = 22
protocole = "TCP"
cidr_blocks = ["0.0.0.0/0 "]

sortie
From_port = 0
to_port = 0
protocole = "-1"
cidr_blocks = ["0.0.0.0/0 "]

Les deux blocs d'entrée définis ci-dessus permettent aux protocoles HTTP et SSH de n'importe où IPv4.

La sortie permet à tout le trafic sortant.

Description de certains des arguments précédemment utilisés:

sortie: Le bloc contenant la configuration des règles de sortie.

entrée: Le bloc contenant la configuration des règles d'entrée.

description: Décrit le titre du groupe de sécurité. Il est facultatif et la valeur par défaut est «gérée par Terraform».

From_port: Indique le numéro de port de démarrage.

to_port: Indique le port final.

protocole: La spécification du protocole. Si cette valeur de champ est «-1», les valeurs From_port et To_port doivent être «0».

Déploiement du groupe de sécurité

Maintenant que nous avons créé un groupe de sécurité, nous vérifierons si cela fonctionne réellement. Pour cela, nous créons une instance EC2 et installons un serveur Web simple avec le message «Tutoriels LinuxHint Terraform». Ouvrez un éditeur de texte et créez un fichier «Webserver.tf ".

$ Nano Webserver.TF

Maintenant, mettez le code suivant à l'intérieur:

fournisseur "aws"
région = "US-East-1"
Access_key = "Your-Access-Key"
Secret_key = "Votre secret-Key"

ressource "aws_instance" "webserver"
ami = "AMI-09D56F8956AB235B3"
instance_type = “t2.micro "
key_name = "Your-keypair-name"
vpc_security_group_ids = [aws_security_group.démo-sg.identifiant]
associé_public_ip_address = true
root_block_device
volume_type = "gp2"
volume_size = "8"
Delete_on_termination = true

user_data = "$ file (" UserData.sh ”)"
tags =
Name = "Exampleec2Webserver"

Remplace le `` Your-keypair-name '', «votre secret-key», «your-accès-key» avec les valeurs dans votre cas. Après cela, créez un fichier «UserData.sh ”pour le code de déploiement du serveur Web.

$ nano userdata.shot

Collez le contenu suivant:

#!/ bac / bash
Mise à jour Sudo apt-get
Sudo apt-get upgrade -y
sudo apt-get install apache2 -y
sudo systemctl redémarrer apache2
sudo chmod 777 -r / var / www / html /
cd / var / www / html /
sudo echo "

Tutoriels LinuxHint Terraform.

"> Index.html

Exécution du serveur Web

Il est maintenant temps d'initialiser le répertoire Terraform en utilisant la commande suivante:

$ Terraform init

De plus, c'est une bonne chose de vérifier la syntaxe de nos fichiers de projet en exécutant la commande suivante:

$ Terraform Valider

Maintenant, nous construisons l'infrastructure à l'aide de la commande «Terraform Apply»:

$ terraform s'applique

Facultativement, nous pouvons prévisualiser les modifications à l'aide de la commande «Terraform Plan». Une fois la commande Appliquer terminée, vérifiez votre console EC2 pour vérifier l'instance EC2 et son groupe de sécurité.

Pour vérifier l'état du serveur Web, ouvrez un navigateur Web et collez le nom DNS de l'instance.

De même, essayez le SSH dans l'instance pour voir si nous pouvons nous connecter avec notre clé privée.

Conclusion

Dans ce guide, nous avons vu le processus de création d'un groupe de sécurité. Nous l'avons également attaché à une instance EC2 pour voir si cela fonctionne comme prévu. Le protocole SSH et HTTP fonctionne correctement.