Jak tworzyć grupy bezpieczeństwa w AWS za pomocą Terraform

Jak tworzyć grupy bezpieczeństwa w AWS za pomocą Terraform
AWS kontroluje różne usługi, które oferuje. Dlatego bardzo ważne jest, aby użytkownik wiedział, jak skutecznie wdrożyć zalecane praktyki bezpieczeństwa AWS. Elastyczna usługa obliczeniowa lub EC2 jest jedną z najczęściej używanych usług AWS. Możesz tworzyć nowe instancje tutaj, usunąć je, skonfigurować sieci i bezpieczeństwo oraz wiele innych operacji.

Terraform by Hashicorp to infrastruktura i narzędzie kodowe, które można wykorzystać do zarządzania różnymi usługami AWS. Jest podobny do usługi AWS CloudFormation z większą liczbą funkcji i korzyści. Dzięki Terraform możemy zaplanować zmiany, które należy zastosować przed ich faktycznym zastosowaniem.

Co obejmujemy?

W tym przewodniku wykorzystamy funkcje Terraform do tworzenia grup bezpieczeństwa. W tym SG pozwolimy na przykład tylko ruch HTTP i ruch SSH. Następnie dołączymy tę grupę bezpieczeństwa do instancji AWS z serwerem WWW, a następnie sprawdzimy, czy załączone SGS działają zgodnie z oczekiwaniami.

Czego potrzebujemy?

Aby wykonać ten przewodnik, powinieneś mieć konto AWS i dostęp do poświadczeń AWS w lokalnym systemie, z którego uruchamiasz Terraform. Powinieneś także zainstalować terraform w swoim systemie. Możesz odwołać się do oficjalnego przewodnika Terraform, aby dowiedzieć się, jak zainstalować Terraform.

Bity o grupach bezpieczeństwa

Grupy bezpieczeństwa są bardzo ważną częścią usługi EC2. To, co robią, to po prostu kontrolować ruch przychodzący i wychodzący z zasobów, z którymi są powiązane. Na przykład po utworzeniu instancji i dołączeniu grupy bezpieczeństwa, reguła przychodząca decyduje, jaki rodzaj ruchu może osiągnąć instancję. Podobnie reguła wychodząca decyduje, jaki rodzaj ruchu może wyjść z instancji.

Istnieje domyślna grupa bezpieczeństwa, która jest dostarczana z każdym nowo utworzonym VPC (wirtualna chmura prywatna). Następnie możemy dalej tworzyć nowe SG (skrót od grup bezpieczeństwa), ale te SG można dołączyć tylko z zasobami należącymi do tego VPC.

Można dołączyć jedną lub wiele grup bezpieczeństwa w momencie uruchomienia instancji. Do grupy bezpieczeństwa można dołączyć wiele reguł, które można również zmodyfikować później.

Tworzenie grupy bezpieczeństwa

W tej sekcji utworzymy grupę bezpieczeństwa, która umożliwia jedynie ruch wychodzący „HTTP” (Zestaw), i.mi. ruch z instancji i pozwól, aby cały ruch przychodzący (wnikowy) i.mi. ruch przybywa do instancji.

Notatka: Gdy nowa grupa bezpieczeństwa jest tworzona w VPC, ma domyślnie reguła „Zezwól na wszystko”. Gdy nowa grupa bezpieczeństwa jest utworzona w VPC, ta domyślna reguła jest usuwana przez Terraform, ale możesz ponownie skonfigurować tę zasadę.

Teraz tworzymy działający katalog dla naszego projektu Terraform, który będzie utrzymywał wszystkie nasze kolejne pliki. Otwórz edytor tekstu i utwórz następujący plik:

$ nano secgrp.tf

Umieść następujący kod w tym pliku i zapisz go:

Zasób „aws_security_group” „demo-sg”
Nazwa = „sec-grp”
Opis = "Zezwalaj na ruch HTTP i SSH przez Terraform"
wnikanie
from_port = 80
to_port = 80
protokół = "tcp"
cidr_blocks = ["0.0.0.0/0 "]

wnikanie
from_port = 22
to_port = 22
protokół = "tcp"
cidr_blocks = ["0.0.0.0/0 "]

egress
from_port = 0
to_port = 0
protokół = "-1"
cidr_blocks = ["0.0.0.0/0 "]

Dwa zdefiniowane powyżej bloki wnikowe pozwalają protokołom HTTP i SSH z dowolnego miejsca IPv4.

Wyjście umożliwia cały ruch wychodzący.

Opis niektórych wcześniej używanych argumentów:

wyjście: Blok zawierający konfigurację reguł wyjścia.

ingres: Blok zawierający konfigurację reguł wnikania.

opis: Opisuje tytuł grupy bezpieczeństwa. Jest to opcjonalne, a wartość domyślną jest „zarządzana przez Terraform”.

From_port: Oznacza numer portu startowy.

do portu: Oznacza port końcowy.

protokół: Specyfikacja protokołu. Jeśli ta wartość pola wynosi „-1”, wartości from_port i to_port powinny wynosić „0”.

Wdrażanie grupy bezpieczeństwa

Teraz, gdy utworzyliśmy grupę bezpieczeństwa, sprawdzimy, czy faktycznie działa. W tym celu tworzymy instancję EC2 i instalujemy prosty serwer WWW z komunikatem „Tutoriale Linuxhint Terraform”. Otwórz edytor tekstu i utwórz plik „WebServer.TF ”.

$ Nano Webserver.tf

Teraz umieść w nim następujący kod:

Dostawca „AWS”
region = „US-East-1”
access_key = „Your-Access-Key”
secret_key = „Your-Secret-Key”

Zasób „AWS_INSTANCE” „WebServer”
ami = "AMI-09D56F8956AB235B3"
instance_type = „t2.mikro ”
key_name = "your-keypair-nazwa"
vpc_security_group_ids = [AWS_Security_Group.Demo-SG.ID]
associate_public_ip_address = true
root_block_device
volum_type = "gp2"
volum_size = "8"
delete_on_termination = true

user_data = "$ plik („ UserData.cii")"
tagi =
Name = "exampleC2WebServer"

Zastąp „Your-Keyypair-nazwa”, „Your-Secret-Key”, „Your-Access-Key” z wartościami w twoim przypadku. Następnie utwórz plik „UserData.sh ”dla kodu wdrażania serwera WWW.

$ nano UserData.cii

Wklej następującą zawartość:

#!/bin/bash
Sudo apt-get Aktualizacja
sudo apt -get aktualiza
sudo apt -get instaluj apache2 -y
sudo systemctl restart apache2
sudo chmod 777 -r/var/www/html/
CD/var/www/html/
sudo echo "

Samouczki Linuxhint Terraform.

"> indeks.html

Uruchamianie serwera WWW

Nadszedł czas, aby zainicjować katalog Terraform za pomocą następującego polecenia:

$ Terraform init

Warto również sprawdzić składnię naszych plików projektu, uruchamiając następujące polecenie:

$ Terraform potwierdza

Teraz budujemy infrastrukturę za pomocą polecenia „Terraform Apply”:

$ Terraform Zastosuj

Opcjonalnie możemy wyświetlić podgląd zmian za pomocą polecenia „Plan Terraform”. Po zakończeniu polecenia Zastosuj sprawdź konsolę EC2, aby zweryfikować instancję EC2 i jego grupę bezpieczeństwa.

Aby sprawdzić status serwera WWW, otwórz przeglądarkę internetową i wklej nazwę DNS instancji.

Podobnie wypróbuj SSH w instancji, aby sprawdzić, czy jesteśmy w stanie zalogować się z naszym kluczem prywatnym.

Wniosek

W tym przewodniku widzieliśmy proces tworzenia grupy bezpieczeństwa. Dołączyliśmy go również do instancji EC2, aby sprawdzić, czy działa zgodnie z oczekiwaniami. Zarówno protokół SSH, jak i HTTP działają poprawnie.