디도스 (DDoS) 방어 방법

메인 워드프레스 블로그가 지난 8월 말부터 지속적으로 디도스(DDoS) 공격을 받고 있습니다. 처음에는 어떻게 대응해야 할지 몰라 당황했지만, 몇 번 공격을 받다 보니 대응하는 요령을 익히게 되었습니다.

디도스 (DDoS) 방어 방법

디도스(DDoS)란?

디도스(DDoS: distributed denial-of-service)는 “분산 서비스 거부 공격”을 의미하며, 여러 대의 컴퓨터가 네트워크의 특정 서버, 서비스, 웹사이트 또는 다른 네트워크 리소스로 거대한 양의 트래픽을 일시에 보내어 정상적인 서비스를 방해하는 사이버 공격 기법입니다. 공격자들은 보통 많은 수의 감염된 컴퓨터(봇넷이라고 함)를 사용하여 트래픽을 생성하고, 이러한 트래픽으로 인해 타겟 시스템이 과부하를 일으켜 정상적인 사용자의 요청을 처리할 수 없게 됩니다.

디도스 공격의 주요 목적은 서비스를 중단시켜 경제적 손실을 유발하거나 시스템의 보안 취약점을 파악하는 것입니다. 또한, 일부 공격자는 몸값을 요구하거나 경쟁 회사에 피해를 주기 위해 디도스 공격을 이용하기도 합니다. 디도스는 다양한 방법으로 이루어질 수 있는데, 대표적인 예로는 UDP 플러드, SYN 플러드, HTTP 플러드 등이 있습니다. 이러한 공격을 방어하기 위해서는 트래픽 분석, 대역폭 증가, 공격 트래픽 필터링 등의 방법이 사용됩니다.

디도스 대응 방법

디도스 공격이 발생하면 다량의 HTTP 요청이 짧은 시간에 유입되어 서버의 CPU 사용량이 급등하면서 사이트가 매우 느려지거나 다운됩니다.

클라우드웨이즈(Cloudways)의 유휴 CPU 사용량 그래프를 살펴보면 디도스 공격이 발생하면 일시적으로 CPU 사용량이 급증하는 것을 볼 수 있습니다.

한 달 동안 약 14차례의 디도스 공격이 있었습니다. 공격이 발생할 때마다 CPU 사용율이 급증하여 일시적으로 정상적인 사이트 이용이 어렵게 되었습니다.

제가 당한 디도스 공격은 몇 가지 패턴을 가지고 있었습니다.

  1. 며칠 동안 하루에 한 번씩 불규칙한 시간에 공격이 시작되었습니다. 오전 10시부터 시작되기도 하고, 어떤 경우는 오후 2시, 오후 7시, 심지어 새벽 1시에도 공격이 시작된 적도 있었습니다.
  2. 4~5일 정도 연속으로 공격이 이루어진 후에 며칠 정도 잠잠했습니다.
  3. 한 번 공격이 시작되면 3~4시간 정도 공격이 지속되었고, 특정 날에는 8시간까지 지속되기도 했습니다.
  4. 공격에 이용한 IP 주소는 매번 달라졌으며, 이전에 사용된 일부 IP 주소가 함께 이용되곤 했습니다.

디도스 공격을 받게 되면 다음과 같은 방법으로 대응하고 있습니다.

  1. 클라우드플레어(Cloudflare) 연동: 공격이 시작되면 Under Attack 모드를 활성화합니다.
  2. 디도스 공격 알림 설정: Cloudflare에서 디도스 공격을 감지하면 이메일로 알림이 전송되도록 설정했습니다.
  3. 클라우드웨이즈(Cloudways)에서 공격에 사용된 IP 주소들을 확인하여 차단. CPU 사용량이 급증하여 내려가지 않을 경우 이 조치를 취하면 CPU 사용량이 안정화됩니다.
  4. 서버 크기 업그레이드. 2GB 램 서버 크기에서 디도스 공격이 잘 방어가 안 되어서 4GB 램 서버 크기로 업그레이드하니 방어가 되었습니다.
  5. 일부 불량(?) 국가 차단하기. 클라우드플레이어에서 중국 등 일부 국가에서의 유입을 차단시켰습니다.

저는 클라우드플레이어의 무료 요금제에 가입하여 중요한 몇 개의 도메인을 추가하여 연동시켰습니다.

방문자 증가로 인해 트래픽이 많이 발생하는 경우 웹호스팅 상품을 업그레이드해야 하지만, 클라우드플레어에 연동시키면 대부분의 트래픽을 클라우드플레어에서 감당하도록 할 수 있습니다. 클플 CDN 사용 시 우리나라에서 사이트 속도가 조금 느려질 수 있지만, 트래픽이 많은 경우 괜찮은 선택일 수 있습니다.

디도스 공격이 시작되면 클라우드플레이어에 접속하여 Under Attack 모드를 활성화하면 대부분 CPU 사용률이 안정화될 것입니다.

공격 강도가 심할 경우 공격에 사용된 IP주소들을 확인하여 차단하면 어느 정도의 공격에 대응이 가능한 것 같습니다.

클라우드웨이즈에서는 Monitoring 페이지에서 요청 수가 많은 IP 주소들을 확인할 수 있습니다. .htaccess 파일에 다음과 같은 코드를 추가하여 해당 IP 주소들을 차단할 수 있습니다.

deny from ip주소1
deny from ip주소2
...

저는 Cloudflare의 WAF에서도 규칙을 추가하여 동시에 IP들을 차단시켰습니다.

클라우드플레이어에서는 또한 특정 국가로부터의 유입을 차단하거나, 또는 특정 국가를 제외한 모든 국가의 유입을 차단하는 것이 가능합니다.

일반 웹호스팅에서 디도스 공격이 발생하면 해당 사이트가 차단되거나, 심할 경우 퇴출될 수도 있습니다. 실제로 최근 싱가포르에 있는 한 클라이언트가 관리하는 사이트에 디도스 공격이 의심되는 공격이 들어와서 사이트가 차단되어 난리(?)가 난 적이 있습니다.

디도스 공격 때문에 어려움을 겪는 경우 클라우드웨이즈를 이용하고 Cloudflare에 도메인을 연동하여 대응할 수 있을 것입니다. 클라우드웨이즈에 대한 자세한 정보와 가입 방법은 아래 글을 참고하세요.

📍 클라우드웨이즈 가입 방법 (+ Cloudways 프로모 코드, 할인 쿠폰 코드)

이 블로그도 현재 클라우드웨이즈에서 호스팅되고 있습니다.

참고

Leave a Comment