실습 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 |




