Como criar grupos de segurança na AWS usando o Terraform

Como criar grupos de segurança na AWS usando o Terraform
A AWS controla os vários serviços que ele oferece. Portanto, é muito importante para o usuário saber como implementar efetivamente as práticas de segurança recomendadas pela AWS. Um serviço de computação elástico ou EC2 é um dos serviços da AWS mais usados. Você pode criar novas instâncias aqui, excluí -las, configurar a rede e a segurança e muitas outras operações.

Terraform by Hashicorp é uma infraestrutura e uma ferramenta de código que pode ser usada para gerenciar os vários serviços da AWS. É semelhante ao serviço da AWS CloudFormation com mais recursos e benefícios. Com o Terraform, podemos planejar as alterações a serem aplicadas antes de serem realmente aplicadas.

O que cobrimos?

Neste guia, utilizaremos os recursos do Terraform para criar grupos de segurança. Neste SG, permitiremos apenas o tráfego HTTP e o tráfego SSH, por exemplo. Em seguida, anexaremos este grupo de segurança a uma instância da AWS executando um servidor da web e verificamos se os SGs anexados estão funcionando como esperado.

O que precisamos?

Para executar este guia, você deve ter uma conta da AWS e acesso às credenciais da AWS no seu sistema local de onde você está executando o Terraform. Você também deve ter o Terraform instalado em seu sistema. Você pode se referir ao Guia Oficial do Terraform para aprender sobre como instalar o Terraform.

Bits sobre grupos de segurança

Grupos de segurança são uma parte muito importante do serviço EC2. O que eles fazem é simplesmente controlar o tráfego que entra e sai dos recursos que estão associados. Por exemplo, depois de criar uma instância e anexar um grupo de segurança, a regra de entrada decide que tipo de tráfego pode alcançar a instância. Da mesma forma, uma regra de saída decide que tipo de tráfego pode sair da instância.

Existe um grupo de segurança padrão que vem com todos os VPC recém -criados (Cloud Virtual Private). Em seguida, podemos criar novos SGs (abreviação de grupos de segurança), mas esses SGs só podem ser anexados aos recursos que pertencem a este VPC.

Pode -se anexar um ou vários grupos de segurança no momento do lançamento de uma instância. Várias regras podem ser anexadas a um grupo de segurança que também pode ser modificado posteriormente.

Criando um grupo de segurança

Nesta seção, criaremos um grupo de segurança que permita apenas o tráfego de saída "HTTP" (outido), eu.e. tráfego saindo da instância e permita todo o tráfego de entrada (entrada) i.e. tráfego chegando à instância.

Observação: Quando um novo grupo de segurança é criado em um VPC, ele tem uma regra de saída de "permitir tudo" por padrão. Quando um novo grupo de segurança é criado em um VPC, essa regra padrão é eliminada pelo Terraform, mas você pode configurar esta regra novamente, se necessário.

Agora, criamos um diretório de trabalho para o nosso projeto Terraform que manterá todos os nossos arquivos subsequentes. Abra um editor de texto e crie o seguinte arquivo:

$ nano secgrp.tf

Coloque o seguinte código dentro deste arquivo e salve -o:

Recurso "AWS_SECURITY_GROUP" "Demo-SG"
Nome = “sec-grp”
Descrição = "Permitir tráfego HTTP e SSH via Terraform"
Ingressão
de_port = 80
to_port = 80
protocolo = "tcp"
cidr_blocks = ["0.0.0.0/0 "]

Ingressão
de_port = 22
to_port = 22
protocolo = "tcp"
cidr_blocks = ["0.0.0.0/0 "]

saída
de_port = 0
to_port = 0
protocolo = "-1"
cidr_blocks = ["0.0.0.0/0 "]

Os dois blocos de entrada definidos acima permitem os protocolos HTTP e SSH de qualquer lugar IPv4.

A saída permite todo o tráfego de saída.

Descrição de alguns dos argumentos usados ​​anteriormente:

saída: O bloco que contém a configuração das regras de saída.

entrada: O bloco que contém a configuração das regras de entrada.

descrição: Descreve o título do grupo de segurança. É opcional e o valor padrão é "gerenciado pela Terraform".

de_port: Indica o número da porta inicial.

to_port: Indica a porta final.

protocolo: A especificação do protocolo. Se esse valor de campo for "-1", os valores de From_port e To_Port devem ser "0".

Implantando o grupo de segurança

Agora que criamos um grupo de segurança, verificaremos se está realmente funcionando. Para isso, criamos uma instância do EC2 e instalamos um servidor da web simples com a mensagem “Tutoriais do Linuxhint Terraform”. Abra um editor de texto e crie um arquivo “WebServer.tf ”.

$ Nano WebServer.tf

Agora, coloque o seguinte código dentro dele:

Provedor "AWS"
região = "US-leste-1"
Access_key = "Your-Acacess-Key"
Secret_key = "Your-secret-key"

Recurso "AWS_INSTANCE" "WebServer"
ami = "ami-09d56f8956ab235b3"
instance_type = “T2.micro ”
key_name = "seu nome-name"
vpc_security_group_ids = [AWS_SECURITY_GROUP.Demo-sg.eu ia]
associado_public_ip_address = true
root_block_device
volume_type = "gp2"
volume_size = "8"
Delete_on_nMensinity = true

user_data = "$ file (“ userData.sh ”)"
tags =
Name = "ExpletEC2WebServer"

Substitua o 'Your-Kyypair-name', 'Your-Secret-Key', 'You-Acacess-Key' com os valores no seu caso. Depois disso, crie um arquivo “UserData.SH ”para o código de implantação do servidor da web.

$ nano userData.sh

Cole o seguinte conteúdo nele:

#!/BIN/BASH
Atualização de sudo apt-get
sudo apt -get upgrade -y
sudo apt -get install apache2 -y
sudo systemctl reiniciar apache2
sudo chmod 777 -r/var/www/html/
CD/var/www/html/
sudo eco "

Tutoriais do Linuxhint Terraform.

"> ÍNDICE.html

Executando o servidor da web

Agora é a hora de inicializar o diretório Terraform usando o seguinte comando:

$ Terraform init

Além disso, é bom verificar a sintaxe de nossos arquivos de projeto executando o seguinte comando:

$ Terraform Validar

Agora, construímos a infraestrutura usando o comando "Terraform Apply":

$ Terraform se aplica

Opcionalmente, podemos visualizar as alterações usando o comando "Terraform Plan". Quando o comando Aplicar terminar, verifique seu console EC2 para verificar a instância do EC2 e seu grupo de segurança.

Para verificar o status do servidor, abra um navegador da web e cole o nome DNS da instância.

Da mesma forma, tente o SSH na instância para ver se somos capazes de fazer login com nossa chave privada.

Conclusão

Neste guia, vimos o processo de criação de um grupo de segurança. Também o anexamos a uma instância do EC2 para ver se está funcionando como esperado. Tanto o protocolo SSH quanto HTTP estão funcionando corretamente.