Come creare gruppi di sicurezza in AWS usando Terraform

Come creare gruppi di sicurezza in AWS usando Terraform
AWS controlla i vari servizi che offre. È quindi molto importante per l'utente sapere come implementare efficacemente le pratiche di sicurezza raccomandate da AWS. Un servizio di calcolo elastico o EC2 è uno dei servizi AWS più comunemente utilizzati. Puoi creare nuove istanze qui, eliminarle, configurare il networking e la sicurezza e molte altre operazioni.

Terraform di Hashicorp è un'infrastruttura e uno strumento di codice che può essere utilizzato per gestire i vari servizi di AWS. È simile al servizio AWS CloudFormation con più funzionalità e vantaggi. Con Terraform, possiamo pianificare le modifiche da applicare prima che vengano effettivamente applicate.

Cosa copriamo?

In questa guida, utilizzeremo le caratteristiche di Terraform per creare gruppi di sicurezza. In questo SG, consentiremo ad esempio solo il traffico HTTP e il traffico SSH. Allegheremo quindi questo gruppo di sicurezza a un'istanza AWS in esecuzione di un server Web e quindi verificheremo se gli SG allegati funzionano come previsto.

Cosa richiediamo?

Per eseguire questa guida, dovresti avere un account AWS e accedere alle credenziali AWS sul tuo sistema locale da dove stai eseguendo Terraform. Dovresti anche avere la terraform installata sul tuo sistema. Puoi fare riferimento alla Guida ufficiale di Terraform per conoscere come installare Terraform.

Bit sui gruppi di sicurezza

I gruppi di sicurezza sono una parte molto importante del servizio EC2. Quello che fanno è semplicemente controllare il traffico in arrivo e fuori dalle risorse a cui sono associati. Ad esempio, dopo aver creato un'istanza e attaccato un gruppo di sicurezza ad essa, la regola in entrata decide quale tipo di traffico può raggiungere l'istanza. Allo stesso modo, una regola in uscita decide quale tipo di traffico è autorizzato a uscire dall'istanza.

Esiste un gruppo di sicurezza predefinito fornito con ogni VPC appena creato (Cloud privato virtuale). Possiamo quindi creare ulteriormente nuovi SG (abbreviazione di gruppi di sicurezza) ma questi SG possono essere collegati solo alle risorse che appartengono a questo VPC.

Si possono allegare uno o più gruppi di sicurezza al momento dell'avvio di un'istanza. Più regole possono essere allegate a un gruppo di sicurezza che può anche essere modificato in seguito.

Creazione di un gruppo di sicurezza

In questa sezione, creeremo un gruppo di sicurezza che consenta solo il traffico in uscita "HTTP" (outgress), i.e. traffico che va dall'istanza e consenti tutto il traffico in entrata (ingresso) i.e. traffico che viene in istanza.

Nota: Quando un nuovo gruppo di sicurezza viene creato in un VPC, ha una regola di uscita "consenti tutto" per impostazione predefinita. Quando un nuovo gruppo di sicurezza viene creato in un VPC, questa regola predefinita viene cancellata dalla Terraform, ma è possibile impostare nuovamente questa regola se necessario.

Ora creiamo una directory di lavoro per il nostro progetto Terraform che terrà tutti i nostri file successivi. Apri un editor di testo e crea il seguente file:

$ nano secgrp.tf

Metti il ​​seguente codice all'interno di questo file e salvalo:

risorsa "aws_security_group" "demo-sg"
name = "SEC-GRP"
Descrizione = "Consenti il ​​traffico HTTP e SSH tramite Terraform"
ingresso
da_port = 80
to_port = 80
Protocol = "TCP"
cidr_blocks = ["0.0.0.0/0 "]

ingresso
da_port = 22
to_port = 22
Protocol = "TCP"
cidr_blocks = ["0.0.0.0/0 "]

Egress
da_port = 0
to_port = 0
Protocol = "-1"
cidr_blocks = ["0.0.0.0/0 "]

I due blocchi di ingresso definiti sopra consentono i protocolli HTTP e SSH da qualsiasi parte IPv4.

L'uscita consente tutto il traffico in uscita.

Descrizione di alcuni degli argomenti precedentemente usati:

uscita: Il blocco contenente la configurazione per le regole di uscita.

ingresso: Il blocco contenente la configurazione per le regole di ingresso.

descrizione: Descrive il titolo del gruppo di sicurezza. È facoltativo e il valore predefinito è "gestito da Terraform".

da_port: Indica il numero di porta iniziale.

to_port: Indica la porta finale.

protocollo: La specifica del protocollo. Se questo valore di campo è "-1", i valori from_port e to_port dovrebbero essere "0".

Distribuire il gruppo di sicurezza

Ora che abbiamo creato un gruppo di sicurezza, controlleremo se funziona effettivamente. Per questo, creiamo un'istanza EC2 e installiamo un semplice server Web con il messaggio "LinuxHint Terraform Tutorials". Apri un editor di testo e crea un file "Webserver.TF ".

$ Nano Webserver.tf

Ora, inserisci il seguente codice al suo interno:

Provider "AWS"
regione = "US-EAST-1"
Access_Key = "Your-Access-Key"
Secret_Key = "Your-Secret-Key"

risorsa "aws_instance" "webserver"
AMI = "AMI-09D56F8956AB235B3"
Instance_Type = “T2.Micro "
key_name = "your-keypair-name"
vpc_security_group_ids = [aws_security_group.demo-sg.id]
Associate_public_ip_address = true
root_block_device
Volume_Type = "GP2"
Volume_Size = "8"
delete_on_termination = true

user_data = "$ file (" userdata.sh")"
tags =
Name = "EsempioC2WebServer"

Sostituisci il "Il tuo keypair-name", "il tuo secret-key", "il tuo accesso ad accesso" con i valori nel tuo caso. Dopo questo, crea un file "UserData.Sh "per il codice di distribuzione del server Web.

$ nano userdata.sh

Incolla i seguenti contenuti in esso:

#!/Bin/Bash
Sudo Apt-get Aggiornamento
SUDO APT -EGT Aggiornamento -y
sudo apt -get installa apache2 -y
Sudo SystemCtl Riavvia Apache2
sudo chmod 777 -r/var/www/html/
cd/var/www/html/
sudo eco "

Tutorial di Terraform Linuxhint.

"> Indice.html

Esecuzione del server Web

Ora è il momento di inizializzare la directory Terraform usando il comando seguente:

$ Terraform init

Inoltre, è una buona cosa controllare la sintassi dei nostri file di progetto eseguendo il seguente comando:

$ Terraform Convalida

Ora costruiamo l'infrastruttura usando il comando "Terraform Applica":

$ Terraform si applica

Facoltativamente, possiamo visualizzare in anteprima le modifiche utilizzando il comando "Terraform Plan". Al termine del comando Applica, controlla la tua console EC2 per verificare l'istanza EC2 e il suo gruppo di sicurezza.

Per controllare lo stato del server Web, aprire un browser Web e incollare il nome DNS dell'istanza.

Allo stesso modo, prova l'SSH nell'istanza per vedere se siamo in grado di accedere con la nostra chiave privata.

Conclusione

In questa guida, abbiamo visto il processo di creazione di un gruppo di sicurezza. L'abbiamo anche allegato a un'istanza EC2 per vedere se funziona come previsto. Sia il protocollo SSH che HTTP funzionano correttamente.