Practice : Cloudflare - ALB - EC2


1. Why?

서버를 개방하는 순간, 우리는 악성 웹 봇 무작위 요청이나 브루트포스 공격, SSH 연결 시도, DDoS 등의 해킹 공격으로부터 안전하지 않다. SSH 연결 시도는 EC2 내부에서 sshd_config로 포트제어하고, password 설정 제거하고, ufw로 포트에 대한 방화벽 설정하고, 만에 하나 뚫려도 fail2Ban으로 차단하며, Inbound 규칙을 커스텀 포트로 제한하는 방식으로 방어해볼 수라도 있다.

근데 악성 웹 봇의 무작위 API 요청 공격이나, 브루트포스, DDoS, 그 외 OWASP Top 10 안에 드는 각종 해킹 기법을 적용한 요청 등에는 대응이 쉽지 않다. 이들을 서비스 차원에서 막아주는 솔루션이 필요하며, 이 중 WAF (Web Application Firewall)가 있다.

image.png

이전 프로젝트에서는 AWS WAF를 사용했다. 그에 따른 월 평균 비용은 $10.91 이며, 초기 사용량은 적어서 전체 평균이 낮아진 것을 감안하고 2월~3월 기준 평균을 계산해보면 $14.16 인 것을 알 수 있다. 이는 약 20,800원에 달하는 수치이다.

이러한 비용 이슈를 해결하기 위한 대안으로는 Nginx 설정Cloudflare가 있는데, Nginx는 구현 복잡도가 크고 관리가 번거로워서 Cloudflare를 도입하고자 한다.

Cloudflare는 무료 플랜에서도 WAF, SSL, CDN, Caching, Rate Limiting 등 대부분의 웹 보안에 필요한 기능을 제공하며, ALB 앞단에서 프록시로 작동하기 때문에 AWS 리소스를 보완하기 적합하다.

Untitled-2026-04-19-1523.svg


2. 기본 개념 이해

Apex Domain (Root Domain) : example.com 처럼 앞에 아무것도 없는 도메인

Sub Domain : www.example.com, api.example.com 처럼 앞에 무언가 붙은 도메인


ALB (Application Load Balancer)를 만들면 고정된 IP 주소 (ex. 192.168.1.1)을 주지 않고, 문자열 주소인 DNS Name (ex. alb-12345.ap-northeast-2.elb.amazonaws.com)을 준다.