1인 개발자를 위한 Cloudflare 설정 방법 (Vercel 사용자 필독)
1인 개발자들이 쉽게 당하는 해커의 DDoS 공격 방어 준비 방법을 소개한다. Cloudflare 무료 플랜을 활용해서 브라우저와 서버 사이에 중간 방패를 두는 이유와 설정 방법을 정리했다.

📌 목차
- 해커의 공격에 취약한 1인 개발자들 👩💻👨💻
- Cloudflare가 필요한 이유? 🤷♀️
- Cloudflare 설정 방법 ⚙️
ERR_TOO_MANY_REDIRECT
문제 해결 🛠️- Email 주소 난독화 설정 해제 📭
- 마무리
해커의 공격에 취약한 1인 개발자들 👩💻👨💻
최근 해외에서는 Vercel을 사용하는 1인 개발자들의 서비스가 해커들의 공격을 받는 사례가 많아졌다.
개발을 시작한 지 얼마 되지 않았거나, AI로 개발을 진행해서 개발과 보안 관련 지식이 부족한 1인 개발자들이 희생양이 되고 있다.
해커들은 주로 서비스에 DDoS 공격(서버나 네트워크에 과도한 트래픽을 보내서 정상적인 서비스 운영을 방해하는 공격)을 가해서 서비스를 마비시키고, 비트코인을 보내면 서비스를 정상화해주겠다는 이메일을 보내는 방식이다.


Cloudflare가 필요한 이유? 🤷♀️
그런데 1인 개발자들은 무료 플랜Cloudflare를 서버의 앞 단에 붙이는 것만으로도 해커의 공격에 미리 대비할 수 있다는 사실을 모르는 경우가 많다.
지난 몇 년간 트위터를 통해서 매일 해외 1인 개발자들의 소식을 접해왔는데(트위터에서 1인 개발자들만 팔로우함 😅), 1인 개발자가 해커의 공격을 받고 급하게 트위터에서 사람들에게 자문을 구하고, 그제야 Cloudflare를 부랴부랴 설정하는 상황들을 너무 많이 봤다.
Bannerbear가 DDoS 공격을 받고 서비스가 먹통 되었다가 복구한 이야기 👇

물론 Cloudflare에서 특정 국가 IP 차단이나, 초당 서버 요청 수 제한(Rate Limiting) 등을 미리 해두는 것이 좋다.
하지만 해커의 공격은 보통 사용자가 꽤 많아진(그러나 방어가 허술한) 서비스들을 대상으로 하기 때문에, 사용자가 많지 않을 때에는 본 서버 앞 단에 Cloudflare를 붙이는 작업을 해두는 것만으로도 충분하다.
미리 Cloudflare를 붙여두면, 이후에 실제로 공격을 받는 상황에서 Cloudflare의 Under Attack Mode를 켜서 공격을 중지시키고, 필요한 방화벽 설정 등을 수월하게 진행할 수 있기 때문이다.
Cloudflare 설정 방법 ⚙️
그래서 개발자가 아닌 1인 개발자(?)들도 쉽게 따라 할 수 있는 Cloudflare 설정 방법을 정리했다.
1️⃣ 도메인(domain) 추가 → 무료 플랜 선택


Quick scan for DNS records (Recommended)
를 선택하면 Cloudflare가 알아서 DNS 레코드를 스캔해서 아래처럼 보여준다.
Continue to activation
클릭 후 플랜 선택 화면에서 무료 플랜 선택2️⃣ Nameservers 변경 방법 확인

3️⃣ 해당 도메인이 등록된 DNS Provider에 접속
4️⃣ Cloudflare가 제공한 Nameservers 추가 (Custom DNS)

5️⃣ Cloudflare에서 기존 Nameservers 제거

6️⃣ 설정 완료 후 몇 분 뒤에 설정 완료 메시지 확인

Active
가 보이면 정상적으로 설정된 상태다.ERR_TOO_MANY_REDIRECT 문제 해결 🛠️
위에 설명한 설정을 완료하고 서비스에 접속을 시도하면, ERR_TOO_MANY_REDIRECT
에러 화면이 뜨고 서비스에 접근 할 수 없다. 😱

ERR_TOO_MANY_REDIRECT
에러 이유는👇
- Cloudflare의 encryption mode 기본 설정이 Flex다.
- 이 설정은 브라우저와 Cloudflare 사이의 요청은 HTTPS로 하지만, Cloudflare와 본 서버 사이의 요청은 HTTP로 한다.
- 그런데 SSL 인증서를 가진 본 서버에서 Cloudflare에서 넘어온 HTTP 요청을 HTTPS로 redirect 한다.
- 그럼 또다시 Cloudflare는 HTTP로 본 서버에 요청을 보내고, 본 서버는 다시 HTTPS로 redirect 한다.
- 이 과정이 무한 반복되어
ERR_TOO_MANY_REDIRECTS
에러로 서비스에 접근할 수 없게 된다.
이 문제는 Cloudflare의 SSL/TLS encryption 모드를 Flexible
에서 Full(Strict)
로 바꾸면 해결된다. 👇


Full(Strict)
로 설정하면 Cloudflare가 브라우저에서 넘어온 요청을 본 서버(Origin Server)에도 HTTPS로 요청해서 본 서버가 redirect를 시도하지 않기 때문이다.
Email 주소 난독화 설정 해제 📭
Cloudflare는 다양한 기능을 제공하지만, 기본 설정이 과도한 경우가 있다.
아래 이미지는 Cloudflare를 설정한 이후 웹서비스에 깨진 링크가 있는 페이지들이 탐지되었다는 내용이다. (www.example.com/{xyz}/cdn-cgi/l/email-protection
경로가 404 응답)
Cloudflare의 Scrape Shield 기능이 방문자의 주소에 대한 가시적인 변경 없이 봇과 스패머의 수집을 방지하기 위해 웹 사이트에 난독화된 이메일 주소를 표시했기 때문이다.

이 404 페이지들이 생성되는 것을 방지하기 위해서는, Cloudflare Scrape Shied 기능의 이메일 주소 난독화 설정(Email Adress Obfuscation)을 해제하면 된다. 👇

마무리
앞서 언급했듯이, Cloudflare를 서버 앞 단에 붙인다고 해커의 공격을 방어할 수 있는 것은 아니다. 하지만 이 설정을 해둔 상태에서 해커의 공격을 받는 것과, 이 설정 조차 하지 않고 해커의 공격을 받는 것은 엄청난 차이다.
실시간으로 유저들의 불만이 쏟아지는데, 뭐가 문제인지 전혀 감을 잡지 못하면 당황하게 되고, 이 상황에서 해커가 이메일로 해결책을 미끼로 금전을 요구하면, 결국 방어는 시도해 보지도 못하고 해커에게 당할 가능성이 높기 때문이다. (실제로 수많은 해외 1인 개발자들이 이 방식에 당했음을 고백했다)
나도 Vercel로 운영 중인 모든 서비스의 앞 단에 Cloudflare를 붙여두었다. (아직 사용자가 많지 않아서 해커의 공격 대상은 아니겠지만.. 😭)
Vercel에도 Firewall 설정이 있지만, 아직은 Cloudflare만큼 안정적이고 풍부한 기능을 제공하지 않는다.
저는 보안/네트워크 전문가가 아니기 때문에, 더 필요한 설정이나 잘못된 부분을 알려주시면 감사하겠습니다. 🙇♂️
Comments ()