Practice : Cloudflare - ALB - EC2
서버를 개방하는 순간, 우리는 악성 웹 봇 무작위 요청이나 브루트포스 공격, SSH 연결 시도, DDoS 등의 해킹 공격으로부터 안전하지 않다. SSH 연결 시도는 EC2 내부에서 sshd_config로 포트제어하고, password 설정 제거하고, ufw로 포트에 대한 방화벽 설정하고, 만에 하나 뚫려도 fail2Ban으로 차단하며, Inbound 규칙을 커스텀 포트로 제한하는 방식으로 방어해볼 수라도 있다.
근데 악성 웹 봇의 무작위 API 요청 공격이나, 브루트포스, DDoS, 그 외 OWASP Top 10 안에 드는 각종 해킹 기법을 적용한 요청 등에는 대응이 쉽지 않다. 이들을 서비스 차원에서 막아주는 솔루션이 필요하며, 이 중 WAF (Web Application Firewall)가 있다.

이전 프로젝트에서는 AWS WAF를 사용했다. 그에 따른 월 평균 비용은 $10.91 이며, 초기 사용량은 적어서 전체 평균이 낮아진 것을 감안하고 2월~3월 기준 평균을 계산해보면 $14.16 인 것을 알 수 있다. 이는 약 20,800원에 달하는 수치이다.
이러한 비용 이슈를 해결하기 위한 대안으로는 Nginx 설정과 Cloudflare가 있는데, Nginx는 구현 복잡도가 크고 관리가 번거로워서 Cloudflare를 도입하고자 한다.
Cloudflare는 무료 플랜에서도 WAF, SSL, CDN, Caching, Rate Limiting 등 대부분의 웹 보안에 필요한 기능을 제공하며, ALB 앞단에서 프록시로 작동하기 때문에 AWS 리소스를 보완하기 적합하다.
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)을 준다.