사용자 지정 VPC 내에서 EC2 인스턴스를 안전하게 시작하는 방법

기본 AWS 네트워킹에서 안전하고 사용자 지정 가능한 가상 프라이빗 클라우드(VPC) 설정으로 전환하는 방법을 알아보세요. 이 가이드는 VPC 생성, 퍼블릭/프라이빗 서브넷 정의, 제어된 인터넷 액세스를 위한 라우팅 테이블 구성(IGW 또는 NAT를 통해), 그리고 EC2 인스턴스를 안전하게 시작하고 관리하기 위한 엄격한 보안 그룹 규칙 적용에 대해 자세히 설명합니다.

36 조회수

맞춤형 VPC 내에서 EC2 인스턴스를 안전하게 시작하는 방법

기본 AWS 공개 네트워크에 Amazon EC2 인스턴스를 직접 시작하는 것은 빠르지만, 프로덕션, 스테이징 또는 민감한 환경의 경우 불필요한 위험을 초래합니다. 컴퓨팅 리소스를 보호하려면 AWS 클라우드의 논리적으로 격리된 자체 영역인 가상 사설 클라우드(VPC) 내에 리소스를 격리해야 합니다. 이 가이드는 맞춤형 VPC를 구성하고, 서브넷 및 라우팅 테이블과 같은 필수 네트워킹 구성 요소를 정의하고, 엄격한 보안 그룹 규칙으로 보호되는 EC2 인스턴스를 안전하게 시작하는 필수 단계를 안내합니다.

VPC 구성을 마스터하는 것은 강력하고 확장 가능하며 안전한 AWS 인프라를 구축하는 데 기본이 됩니다. 네트워크 경계를 수동으로 정의하면 트래픽 흐름, IP 주소 지정 및 외부 연결에 대한 세분화된 제어 권한을 얻어 무단 액세스로부터 애플리케이션 환경을 크게 강화할 수 있습니다.

안전한 VPC의 핵심 구성 요소 이해하기

가상 사설 클라우드(VPC)는 모든 안전한 AWS 네트워킹이 구축되는 기반입니다. 인스턴스를 시작하기 전에 다음 구성 요소가 올바르게 구성되었는지 확인해야 합니다.

  1. VPC: 네트워크의 기본 컨테이너로, 사설 IP 주소 범위(CIDR 블록)를 정의합니다.
  2. 서브넷: VPC 내의 구분으로, 공개(인터넷 직접 액세스 가능) 또는 사설(격리됨)로 분류됩니다.
  3. 인터넷 게이트웨이(IGW): 공개 서브넷의 리소스가 인터넷과 통신하는 데 필요합니다.
  4. 라우팅 테이블: 서브넷의 네트워크 트래픽을 보낼 위치를 결정하는 규칙입니다.
  5. 보안 그룹(SG): 인스턴스 수준에서 인바운드 및 아웃바운드 트래픽을 제어하는 상태 저장 방화벽입니다.

1단계: 맞춤형 VPC 및 서브넷 생성

네트워크 인클로저를 생성하고 기능 영역으로 분할하는 것부터 시작합니다. 표준 설정의 경우 최소한 하나의 공개 서브넷과 하나의 사설 서브넷을 권장합니다.

1.1 VPC 생성

VPC를 생성할 때 나중에 온프레미스 네트워크(예: AWS VPN 또는 Direct Connect 사용)와 겹치지 않는 사설 CIDR 블록을 선택하십시오.

예시 VPC CIDR: 10.0.0.0/16

1.2 서브넷 생성

서브넷은 고가용성을 위해 특정 가용 영역(AZ) 내에 있어야 합니다. 이 예에서는 us-east-1a에 공개 서브넷 하나와 사설 서브넷 하나를 생성합니다.

  • 공개 서브넷: 10.0.1.0/24 (배스천 호스트 또는 로드 밸런서용으로 사용)
  • 사설 서브넷: 10.0.2.0/24 (애플리케이션 서버 및 데이터베이스용으로 사용)

2단계: 인터넷 연결 및 라우팅 구성

사설 서브넷의 리소스는 인터넷에 직접 액세스해서는 안 됩니다. 공개 서브넷의 리소스는 인터넷 게이트웨이(IGW)를 통해 인터넷에 도달하도록 올바르게 라우팅되어야 합니다.

2.1 인터넷 게이트웨이(IGW) 연결

  1. AWS 콘솔에서 IGW 리소스를 생성합니다.
  2. 이 IGW를 새로 생성한 VPC에 연결합니다.

2.2 라우팅 테이블 구성

라우팅 테이블은 트래픽 경로를 정의합니다. 공개 서브넷용 하나, 사설 서브넷용 하나, 최소한 두 개가 필요합니다.

공개 라우팅 테이블

이 테이블은 모든 비로컬 트래픽(0.0.0.0/0)을 연결된 인터넷 게이트웨이로 보냅니다.

대상 대상
10.0.0.0/16 (VPC CIDR) local
0.0.0.0/0 igw-xxxxxxxx (사용자의 IGW ID)

이 라우팅 테이블을 공개 서브넷(10.0.1.0/24)과 연결합니다.

사설 라우팅 테이블

이 테이블은 내부 통신만 허용합니다. 중요하게도 IGW를 가리키는 경로는 없어야 합니다.

대상 대상
10.0.0.0/16 (VPC CIDR) local

이 라우팅 테이블을 사설 서브넷(10.0.2.0/24)과 연결합니다.

모범 사례: 사설 서브넷의 리소스가 패치나 업데이트를 다운로드해야 하는 경우, 공개 서브넷에 배치된 NAT 게이트웨이를 사용해야 합니다. 그런 다음 사설 라우팅 테이블은 0.0.0.0/0 트래픽을 IGW 대신 NAT 게이트웨이로 보냅니다.

3단계: 엄격한 보안 그룹 규칙 정의

보안 그룹(SG)은 EC2 인스턴스에 대한 가상 방화벽 역할을 합니다. 인스턴스 수준에서 작동하며 상태 저장(반환 트래픽은 자동으로 허용됨)입니다.

안전한 설정을 위해서는 최소 권한 원칙을 준수하여 필요한 인바운드 트래픽만 명시적으로 허용해야 합니다.

웹 서버용 예시 보안 그룹(사설 서브넷)

이 EC2 인스턴스가 공개 서브넷에 있는 애플리케이션 로드 밸런서(ALB)에서만 액세스할 수 있는 애플리케이션 서버인 경우, 규칙은 매우 제한적이어야 합니다.

인바운드 규칙

유형 프로토콜 포트 범위 소스
HTTP TCP 80 ALB의 SG ID
HTTPS TCP 443 ALB의 SG ID
SSH TCP 22 회사 네트워크 또는 배스천 호스트 SG ID의 IP 범위

아웃바운드 규칙

기본적으로 아웃바운드 트래픽은 일반적으로 모든 대상(0.0.0.0/0)에 허용됩니다. 필요한 경우 추가로 제한할 수 있습니다(예: RDS 인스턴스 SG로의 연결만 허용).

보안 팁: 공개적으로 액세스 가능한 보안 그룹의 포트 22(SSH) 또는 포트 3389(RDP)에 0.0.0.0/0을 할당하지 마십시오. 관리 액세스는 항상 알려진 내부 IP 범위로 제한하십시오.

4단계: EC2 인스턴스를 안전하게 시작하기

인스턴스를 시작할 때 위에서 설정한 올바른 네트워크 구성 요소에 매핑되었는지 확인하십시오.

  1. AMI 및 인스턴스 유형 선택: 원하는 Amazon 머신 이미지(AMI) 및 하드웨어 사양을 선택합니다.
  2. 네트워크 설정: '인스턴스 세부 정보 구성' 단계에서:
    • 네트워크: 맞춤형 VPC를 선택합니다.
    • 서브넷: 인터넷에 직접 노출되지 않아야 하는 애플리케이션 서버를 시작하는 경우 사설 서브넷(10.0.2.0/24)을 선택합니다.
    • 퍼블릭 IP 자동 할당: 사설 서브넷에 시작하는 경우 비활성화되어 있는지 확인합니다. (공개 서브넷을 선택하는 경우 배스천 호스트와 같이 직접 공개 액세스가 필요한 인스턴스에 대해 이를 활성화할 수 있습니다.)
    • 보안 그룹: 3단계에서 구성한 보안 그룹을 선택합니다.
  3. 스토리지 및 키 페어: 스토리지를 구성하고 보안 SSH 액세스를 위한 키 페어를 연결합니다.

사설 서브넷의 인스턴스 액세스

사설 서브넷에 있는 인스턴스는 공용 IP 주소가 없으므로 공용 인터넷에서 직접 SSH로 액세스할 수 없습니다. 두 가지 보안 방법 중 하나를 사용해야 합니다.

  1. 배스천 호스트(점프 박스): 공개 서브넷에 작고 강화된 EC2 인스턴스를 시작합니다. 먼저 배스천 호스트에 SSH로 연결한 다음, 배스천 호스트에서 해당 사설 IP 주소를 사용하여 사설 인스턴스에 SSH로 연결합니다.
  2. AWS Systems Manager (SSM) 세션 관리자: 이것이 선호되는 최신 방법입니다. 인스턴스에 SSM 에이전트가 설치되어 있고 SSM 연결을 허용하는 적절한 IAM 역할이 연결되어 있는 경우, 인바운드 SSH 규칙이나 배스천 호스트 없이 AWS 콘솔에서 직접 보안 셸 세션을 시작할 수 있습니다.

요약 및 다음 단계

맞춤형 VPC 내에서 EC2 인스턴스를 보호하는 것은 네트워크 보안을 거시적 수준(VPC, 서브넷, 라우팅 테이블)에서 미시적 수준(보안 그룹)까지 계층화하는 것을 포함합니다. IP 주소 지정 및 트래픽 흐름을 신중하게 제어하여 다음을 수행할 수 있습니다.

  • 애플리케이션 서버가 격리된 사설 서브넷에 상주하도록 보장합니다.
  • 필요한 곳에만 IGW 또는 NAT 게이트웨이를 사용합니다.
  • 보안 그룹 인그레스 규칙을 통해 최소 권한 원칙을 적용합니다.

인스턴스가 시작되면 AWS CloudTrail 및 VPC 흐름 로그를 사용하여 활동을 모니터링하여 사설 네트워크 트래픽에 대한 지속적인 가시성을 유지해야 합니다.