How to defense / prevent DDOS attack?

DDOS 공격이란, 사실 우리가 단순히 아는 것과는 달리 자세히 들어가면 많이 복잡하고, 방어하는것도 상당히 까다로운 공격이다.

단순하게 요약해서 DDOS가 뭔지 말하자면 대상의 인터넷 서비스를 압도적인 쓰레기 트래픽을 처리하게 만들어서 서버의 리소스를 부족하게 만드는 것이다.

이 쓰레기 트래픽은 단순 패킷일수도, HTTP요청일수도 있고, 혹은 이와는 다른 무언가일수도 있다.

DDOS방어가 어려운 대표적인 이유 중 하나는 "비용"이다.
공격자가 공격을 위해서 인프라를 확장하는 비용보다, 수비자가 방어를 위해서 인프라를 확장하는 비용이 훨씬 높고, 구축하는것도 더 까다롭기 때문이다.

같은 자원을 갖고있다면 질 수 밖에 없는 싸움이 되는 것이다.

단순 워드프레스 혹은 파이썬으로 만들어진 애플리케이션은 초당 수천개의 패킷만으로도 무너질 수 있다. 하지만 직렬화되어 처리하는 리눅스 계층은 패킷을 초당 30만개 넘게 처리할 수 있고, Gigabyte network card는 초당 천만 개의 패킷도 처리가 가능하다.

도저히 처리할 수 없는 패킷이 들어와서 감당이 안될경우, 사실 가장 효과적인 방법은 BGP Routing과 같은것을 이용해서 공격을 받는 IP주소로 패킷이 라우팅되지 않도록 하는 것이다.
이렇게 되면 해당 IP주소로 운영되는 서비스가 중단이 되지만, 서비스를 여러 IP주소로 Migration을 하도록 처리를 해놨으면 효과적인 방어 방법이 될 수도 있다.

SYN, BOTNET등등 방어가 더욱 까다로운 케이스들이 많다. IP Table을 이용해서 방어를 하는 게 더 효율적인 방어가 될수도 있다.

일반적으로 요즘은 DDOS 방어 기능이 탑지된 서비스를 사용을한다.

대표적으로 Cloudflare같은 서비스가 있다. 그러면 이러한 서비스는 어떻게 그 수많은 공격들을 효과적으로 방어를 하는걸까?

https://www.cloudflare.com/learning/ddos/what-is-a-ddos-attack/

Cloudflare DDoS Protection · Cloudflare DDoS Protection docs
Cloudflare automatically detects and mitigates distributed denial-of-service (DDoS) attacks via our autonomous DDoS systems.

위 Cloudflare의 docs를 보면 어떻게 Cloudflare가 효과적으로 DDOS를 수비하는지에 대해서 방법이 러프하게 기재가 되어있다.

흥미로운 글들이 많고 인싸이트를 넓힐 수 있으니 나와 같이 DDOS에 대해서 더 깊은 궁금증을 느끼는 사람이라면 DOCS를 읽어보는 것을 추천한다.