실습 1-8 _ Private EC2

2026. 6. 6. 15:37·클라우드 컴퓨팅/AWS

실습 1-8 — Private EC2 생성

퍼블릭 EC2(Bastion)까지 만들었습니다. 이제 외부에서 직접 닿을 수 없는 프라이빗 서버를 띄우고, 오직 Bastion을 거쳐야만 들어갈 수 있게 만듭니다. 이게 실무의 핵심 보안 패턴입니다.

 

 

📌 PublicEC2와 무엇이 다른가

항목 PublicEC2 (1-6) PrivateEC2 (이번 편)

서브넷 Public-Subnet Private-Subnet
공인 IP 자동 할당 활성화 비활성화
SG 인바운드 소스 0.0.0.0/0 Public-Web-SSH-SG(SG 참조)
접속 방법 직접 SSH Bastion 경유만

01. 보안 그룹 생성 — 핵심은 'SG 참조'

EC2 → 보안 그룹 → 보안 그룹 생성.

  • 이름: Private-SSH-SG
  • 설명: Private Subnet Security Group
  • VPC: My-VPC

🖼️ 기본 세부 정보(이름·설명·VPC)

 

인바운드 규칙 — 규칙 추가:

유형 프로토콜 포트 소스

SSH TCP 22 사용자 지정 → 보안 그룹: Public-Web-SSH-SG

🖼️  인바운드 규칙(SSH 22, 소스 = sg-…(Public-Web-SSH-SG)) + 생성된 SG 목록

 

여기가 이번 편의 핵심입니다. 소스를 IP 대역이 아니라 다른 보안 그룹(Bastion의 SG) 으로 지정했습니다. 의미는:

"Public-Web-SSH-SG에 속한 인스턴스(= PublicEC2/Bastion)에서 오는 SSH만 허용한다."

 

즉 외부에서 PrivateEC2로 직접 SSH는 불가하고, 반드시 Bastion을 거쳐야 합니다. Bastion의 IP가 바뀌어도 규칙을 고칠 필요가 없습니다(IP가 아니라 SG로 묶었으니까).


02~07. EC2 인스턴스 시작

기본 흐름은 PublicEC2 편과 같습니다. 다른 부분만 표시합니다.

  • 03. 이름: PrivateEC2
  • 04. AMI: Amazon Linux 2023 kernel-6.1 AMI
  • 05. 인스턴스 유형: t3.micro
  • 06. 키 페어: 본인 키 페어 선택

🖼️  이름·AMI·인스턴스 유형·키 페어

07. 네트워크 설정 (편집) — PublicEC2와 정반대 포인트:

  • VPC: My-VPC
  • 서브넷: Private-Subnet
  • 퍼블릭 IP 자동 할당: 비활성화 ← 외부 노출 차단의 핵심
  • 방화벽: 기존 보안 그룹 선택 → Private-SSH-SG

🖼️ 네트워크 설정(Private-Subnet · 공인 IP 비활성화 · Private-SSH-SG)

⚠️ 공인 IP를 비활성화하는 이유 — 공인 IP가 없으면 인터넷에서 이 인스턴스를 주소로 지목할 방법 자체가 없습니다. SG 제한과 더불어 "외부 직접 접근 불가"를 이중으로 보장합니다.


08. 고급 세부 정보 — 사용자 데이터(User Data)

고급 세부 정보를 펼치고, 사용자 데이터에 부팅 시 실행할 스크립트를 넣습니다.

#!/bin/bash
(
echo "qwe123"
echo "qwe123"
) | passwd --stdin ec2-user
sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
systemctl restart sshd

🖼️ 사용자 데이터 입력란

이 스크립트가 하는 일: ec2-user에 비밀번호를 설정하고, SSH 비밀번호 인증을 활성화한 뒤 sshd를 재시작합니다.

왜 하나? Bastion에서 PrivateEC2로 SSH할 때, Bastion에 .pem 키가 없어도 비밀번호로 로그인할 수 있게 하기 위함입니다(실습 편의).

⚠️ 보안 경고(중요) — 비밀번호 인증 활성화 + qwe123 같은 약한 비밀번호는 실무에선 절대 금지입니다. 무차별 대입 공격에 취약합니다. 실무라면:

  • 비밀번호 인증 대신 키 기반 + ProxyJump/SSH Agent Forwarding 사용
  • 부득이 비밀번호를 쓰면 강력한 임의 비밀번호로

사용자 데이터는 평문으로 저장되니 비밀번호를 여기 적는 것 자체도 위험합니다. 학습용 단축임을 인지하세요.


09. 인스턴스 시작

인스턴스 시작 → 성공 → 모든 인스턴스 보기.

PrivateEC2는 공인 IP 없이 프라이빗 IP(10.9.2.x)만 가진 채 실행됩니다.

 


10. 인스턴스 접속

- PublicEC2에 SSH로 접속합니다. 

- ssh를 이용하여서 private ec2에 접속합니다. 그리고 접속을 시도 하는 중 비밀번호를 입력해줍니다. 

- "ping - c 3 www.google.com"  명령어를 private ec2 instance 내부에서 실행하면 접속되지 않음을 알 수 있습니다. 
   NAT GW를 생성해주어서 이 문제를 해결해 주겠습니다. 


마치며

이제 구조가 완성됩니다 — 외부 → PublicEC2(퍼블릭) → PrivateEC2(프라이빗). PrivateEC2는 공인 IP가 없고, SG가 소스를 Bastion SG로 제한하므로 외부 직접 접근이 원천 차단됩니다. 기억할 한 줄:

"프라이빗 서버의 문은 오직 Bastion 쪽으로만 열어둔다."

남은 것은 PrivateEC2가 외부로 나가는 길(NAT 게이트웨이) 입니다. NAT GW를 붙이면 yum update 같은 아웃바운드가 가능해집니다.


 

저작자표시 (새창열림)

'클라우드 컴퓨팅 > AWS' 카테고리의 다른 글

실습 2-1_ ELB 실습 ①편 — 환경 구성  (0) 2026.06.08
실습 1-9 _ NAT Gateway  (0) 2026.06.06
실습 1-7 _ Private Subnet & Private RT  (0) 2026.06.06
실습 1-6 _ EC2  (0) 2026.06.06
실습 1-5 _ IGW & RT Table  (0) 2026.06.06
'클라우드 컴퓨팅/AWS' 카테고리의 다른 글
  • 실습 2-1_ ELB 실습 ①편 — 환경 구성
  • 실습 1-9 _ NAT Gateway
  • 실습 1-7 _ Private Subnet & Private RT
  • 실습 1-6 _ EC2
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (301) N
      • 여러가지 (108)
        • 알고리즘 & 자료구조 (73)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (39)
        • 파이썬 (31)
        • 자바 (3)
        • 스프링부트 (5)
      • 컴퓨터 구조와 운영체제 (3)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (17) N
        • 도커 (2)
        • AWS (15) N
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (1)
        • 정보처리기사 (0)
        • 정보보안기사 (1)
        • 네트워크관리사 (0)
      • 재태크 (0)
        • 암호화폐 (0)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring Boot
    항해99
    AWS
    Python
    Redis
    Spring WebFlux
    그리디
    파이썬
    OOP
    java
    mybatis
    Docker-compose
    백준
    spring
    EC2
    시험
    완전탐색
    ecs
    DP
    SAA
    WebFlux
    FastAPI
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    취업리부트
    docker
    프로그래머스
    reactor
    celery
    RDS
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
실습 1-8 _ Private EC2
상단으로

티스토리툴바