AWS VPC, EC2, NAT Gateway 인프라 구성 실습

y001·2025년 3월 23일
0
post-thumbnail

전체 인프라 구성도

VPC, 퍼블릭 서브넷, 프라이빗 서브넷, NAT 게이트웨이, 인터넷 게이트웨이, 퍼블릭 및 프라이빗 EC2 인스턴스 구성


1. 환경 구성하기

VPC 생성

  • 이름: MyVPC01
  • CIDR: 10.0.0.0/16
  • DNS 해석 및 DNS 호스트 이름 활성화
  • VPC는 한 번 잘못 설계하면 수정이 어렵기 때문에 처음부터 충분히 넓게 잡아야 한다.

인터넷 게이트웨이 생성 및 연결

  • 이름: MyIGW
  • MyVPC01에 연결
  • 인터넷과의 연결을 위한 필수 요소

퍼블릭 서브넷 생성

  • MyPublicSubnet (10.0.1.0/24, ap-northeast-2a)
  • 퍼블릭 IPv4 자동 할당 활성화

퍼블릭 라우팅 테이블 생성 및 연결

  • 이름: MyPublicRouting
  • 라우팅 경로:
    • 10.0.0.0/16 → local
    • 0.0.0.0/0 → MyIGW
  • MyPublicSubnet에 연결

퍼블릭 보안 그룹 생성 (MyPublicSecugroup)

  • 인바운드: HTTP(80), HTTPS(443), SSH(22), ICMP
  • 태그: Name = MyPublicSecugroup

퍼블릭 EC2 인스턴스 생성 (MyWeb1)

  • Amazon Linux 2023, t3.micro
  • 퍼블릭 서브넷 선택 및 퍼블릭 IP 자동 할당
  • 보안 그룹: MyPublicSecugroup
  • 사용자 데이터 스크립트:
#!/bin/bash
hostnamectl --static set-hostname MyWeb1
echo "toor1234." | passwd --stdin root
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
sed -i 's/^#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
systemctl restart sshd
yum install -y httpd
echo "<h1><p style=\"color:red\">MyWeb1 test web page</p></h1>" > /var/www/html/index.html
systemctl enable --now httpd.service

EC2 접속 및 웹 서버 확인


2. EC2 인스턴스를 프라이빗 서브넷에 배치하면 외부 접근을 막을 수 있다.

NAT 게이트웨이 생성 (MyNatGW)

  • 퍼블릭 서브넷에 생성
  • 탄력적 IP 연결
  • 외부 요청은 가능하지만 외부에서 직접 접근은 불가능하게 만드는 핵심 요소

프라이빗 서브넷 생성

  • MyPrivateSubnet (10.0.100.0/24, ap-northeast-2a)

프라이빗 라우팅 테이블 생성 및 연결

  • 이름: MyPrivateRouting
  • 라우팅 경로:
    • 10.0.0.0/16 → local
    • 0.0.0.0/0 → MyNatGW
  • MyPrivateSubnet에 연결

프라이빗 보안 그룹 생성 (MyPrivateSecugroup)

  • 인바운드: HTTP, HTTPS, SSH, ICMP
  • 추천: 소스 IP를 VPC 내부 대역으로 제한

프라이빗 EC2 인스턴스 생성 (MyWeb11)

  • Amazon Linux 2023, t3.micro
  • MyPrivateSubnet에 배포 (퍼블릭 IP 없음)
  • 보안 그룹: MyPrivateSecugroup
  • 사용자 데이터 스크립트:
#!/bin/bash
hostnamectl --static set-hostname MyWeb11
echo "toor1234." | passwd --stdin root
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
sed -i 's/^#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
systemctl restart sshd
yum install -y httpd
echo "<h1><p style='color:blue'>MyWeb11 test web page</p></h1>" > /var/www/html/index.html
systemctl enable --now httpd.service

public ec2(MyWeb1)에서 SSH, ping, curl 테스트

👉 이렇게 구성하면 외부에서는 접근할 수 없고 내부에서만 관리가 가능하다.
보안을 강화하는 가장 기본적인 설계 패턴이다.


3. NAT Gateway를 사용하면 프라이빗 EC2 인스턴스에서 인터넷을 사용할 수 있다.

  • 프라이빗 인스턴스는 인터넷과 직접 연결되지 않는다.
  • 하지만 yum update나 패키지 설치, 외부 API 호출 등 외부 요청은 가능해야 한다.
  • 이때 NAT Gateway를 통해 프라이빗 EC2 인스턴스는 인터넷으로 outbound 요청을 할 수 있다.
  • 외부에서는 절대 그 인스턴스에 직접 들어올 수 없으면서도, 내부에서는 필요한 작업을 자유롭게 할 수 있는 구조이다.

0개의 댓글