[2] 250909~ 클라우드/[b] 12월 : Terraform + Ansible

[11] 보안 케이스 테스트 : 웹은 되는데 curl만 안됨

서버관리자 페페 2025. 12. 26. 13:39

[0]

브라우저로 웹은 잘 되는데 (http://)

EC2에서 curl하면 timeout / 응답 없음

 

-

 

[1]

Architecture

EC2 on Public Subnet

IGW 연결 정상

SG는 정상

NACL을 보안 강화 한다고 직접 수정

 

-

 

[2]

NACL 설정 (문제 있는 상태)

# Inbound
ALLOW TCP 80
ALLOW TCP 443
DENY ALL

# Outbound
ALLOW TCP 80
ALLOW TCP 443
DENY ALL

-> 이 상태에서 웹 접속은 되는 것처럼 보인다

 

-

 

[3]

왜 브라우저 웹은 되는 것처럼 보이냐?

외부 사용자 -> EC2(웹 접속) 의 경우

Client: 203.0.113.10:52341
EC2: 10.0.1.10:80

 

curl은 아주 정직해서

curl http://example.com

- TCP 연결

- 응답 못 받으면 바로 timeout

 

 

브라우저는 

- 재시도

- keep-alive

- 캐시

- CDN 중계

 

덕분에 초기 HTML 만 어찌어찌 보일 수 있음

하지만 내부적으로는 깨진 연결

 

-

 

[4]

EC2 -> 외부로 curl 할때 실제 패킷 흐름

curl https://google.com

google.com:443 -> EC2:10.0.1.10:49152

 

여기서 Inbound NACL에 TCP 1024-65535 허용x

 

응답 패킷 차단 ->  curl 타임아웃

 

-

 

[5]

정답 설정

-> 수신, 응답 모두 Ephemeral Port 허용 체크

# NACL INBOUND
ALLOW TCP 80
ALLOW TCP 443
ALLOW TCP 1024-65535   ← 응답용 (중요)
DENY ALL

# NACL OUTBOUND
ALLOW TCP 80
ALLOW TCP 443
ALLOW TCP 1024-65535   ← 응답용 (중요)
DENY ALL