외부
↓
[ Route Table ]
↓
[ NACL Inbound ] ← 서브넷 입구
↓
[ Security Group Inbound ]
↓
[ EC2 ]
↓
[ Security Group Outbound ]
↓
[ NACL Outbound ] ← 서브넷 출구
↓
외부
[0]
개요
Route Table
Security Group
Access Control List
-
[1]
Route Table은 길을 만들어준다
- RT를 만들때 VPC_ID로 생성
- RT 아래 Route에 IGW와 CIDR(0.0.0.0/16) 을 만들어 기본 루트인 VPC와 연결
- assoc으로 subnet에 rt를 연결
-
[2]
Security Group // 리소스 단위 문지기
EC2 ENI(네트워크 인터페이스)에 직접 어태치됨
stateful이므로 인바운드만 허용해주면 아웃바운드 자동 허용됨
허용 기반
-
[3]
Network ACL // 서브넷 단위 문지기
패킷 단위 필터여서, 이 패킷이 요청 응답인지? 를 구분 x
rule number 낮은게 먼저 적용
TCP 80
Source: 0.0.0.0/0
ALLOW
TCP 1024-65535
Destination: 0.0.0.0/0
ALLOW
목적지 포트는 54321 (ephemeral port)
-
[4]
반송지 (inbound target) 의 IP주소와 Port가 필요 (포트는 특정할 수 없으므로 사실상 임의로 설정) 하다는 점에 주의해야 합니다
반송지 : 응답 패킷이 되돌아가는 목적지
# Inbound PACKET
Src IP: 1.2.3.4
Src Port: 54321 ← 임시 포트 (Ephemeral Port)
Dst IP: 10.0.0.10
Dst Port: 80
클라이언트는 임의의 고포트 (1024 ~ 65535) 를 사용
이 포트는 매 요청마다 바뀜
서버 입장에서는 미리 알 수 없음
# 응답 패킷 (반송)
Src IP: 10.0.0.10
Src Port: 80
Dst IP: 1.2.3.4
Dst Port: 54321 ← 아까 그 임의 포트
SG는 포트를 몰라도 자동 허용, 그래서 설정이 단순함
NACL : 이 패킷이 응답인지 모르고, 그냥 outbound 패킷 하나 뿐, 그래서 목적지 IP / port가 필요한데
문제는 포트가 매번 랜덤
따라서 포트는 특정할 수 없으므로, 사실상 임의로 설정
실제 의미 : 1024 ~ 65535 전부 열어라
-
[5]
실제 NACL 설정 예시
Inbound (요청 허용)
ALLOW
Protocol : TCP
Port : 80
Source : 0.0.0.0/0
ALLOW
Protocol : TCP
Port : 1024-65535 // 임시 포트 전체
Destination : 0.0.0.0/0
-------------------------------------
[6]
실무
| SG | NACL |
| 서비스 포트 제어 | 전체 IP 차단 |
| 리소스별 접근 제어 | 국가/대역 블로킹 |
| Bastion / ALB 연결 제어 | 서브넷 단위 보호 |
'[2] 250909~ 클라우드 > [b] 12월 : Terraform + Ansible' 카테고리의 다른 글
| [11] 보안 케이스 테스트 : 웹은 되는데 curl만 안됨 (0) | 2025.12.26 |
|---|---|
| [10] NACL 보안 케이스 테스트 : SSH (0) | 2025.12.26 |
| [8] EC2 생성 및 pem키 로그인 (0) | 2025.12.20 |
| [7] SG (0) | 2025.12.20 |
| [6] Route Table (0) | 2025.12.20 |