정상 요청처럼 보이는 홍수
DDoS(분산 서비스 거부) 공격은 수많은 기기에서 동시에 트래픽을 쏟아부어 대상 서버나 네트워크를 마비시키는 공격입니다. 공격자는 악성코드에 감염된 컴퓨터와 보안이 허술한 IoT 기기들을 원격으로 조종해 봇넷이라는 무리를 만들고, 신호 한 번으로 이들이 일제히 같은 대상에 요청을 보내게 만듭니다.
까다로운 점은 각각의 요청이 그 자체로는 정상처럼 보인다는 것입니다. 한 건 한 건은 평범한 접속인데, 수십만 수백만 건이 한꺼번에 몰리면 서버의 처리 능력이나 회선 용량이 바닥나 정작 진짜 사용자는 서비스에 접근하지 못합니다. 정문에 가짜 손님 수만 명을 들여보내 진짜 손님이 들어오지 못하게 막는 것과 같습니다. 그래서 공격 트래픽과 정상 트래픽을 가려내는 일이 방어의 핵심 과제가 됩니다.
공격은 어느 계층을 노리는가
DDoS는 무엇을 고갈시키려 하는가에 따라 성격이 크게 다릅니다. 노리는 지점이 다르면 막는 방법도 달라집니다.
볼류메트릭 공격
가장 흔한 유형으로, 대상과 인터넷 사이의 대역폭을 통째로 잡아먹어 회선 자체를 막아버립니다. 도로를 차량으로 가득 채워 아무도 지나가지 못하게 하는 셈입니다. 공격자는 작은 요청으로 큰 응답을 끌어내는 증폭 기법을 써서, 적은 자원으로 거대한 트래픽을 만들어냅니다. 순수한 양으로 밀어붙이는 공격입니다.
프로토콜 공격
서버나 방화벽 같은 장비의 연결 처리 자원을 고갈시킵니다. 예를 들어 연결을 맺으려는 척 요청만 잔뜩 보내고 완성하지 않으면, 장비는 그 미완성 연결들을 기다리느라 자원을 묶입니다. 이런 식으로 TCP 연결을 추적하는 테이블을 가득 채우면, 정작 정상 연결을 받을 여유가 사라집니다. 대역폭이 아니라 장비의 상태 관리 능력을 노리는 공격입니다.
애플리케이션 계층 공격
가장 정교한 유형으로, 정상 요청과 거의 구분되지 않는 트래픽을 보내 서버의 처리 능력을 소진시킵니다. 예를 들어 검색이나 로그인처럼 서버에 부담을 주는 작업을 반복 요청하는 식입니다. 트래픽 양 자체는 많지 않아도 서버가 무거운 작업을 계속하게 만들어 효과를 내므로, 단순히 양만 보고는 걸러내기가 어렵습니다.
어떻게 막아내는가
방어의 핵심은 공격 트래픽을 정상 트래픽과 구분해 걸러내되, 진짜 사용자는 막지 않는 것입니다. 너무 강하게 거르면 정상 사용자까지 차단되고, 너무 약하게 거르면 공격을 흘려보내게 됩니다.
트래픽 분산 흡수
방어의 출발점은 규모입니다. 공격 트래픽을 전 세계 여러 데이터센터로 흩어서 흡수하면, 한 지점에 집중됐다면 무너졌을 공격도 분산되어 충격이 줄어듭니다. 이는 CDN의 애니캐스트 분산 구조가 그대로 방어막이 되는 지점입니다. 공격이 들어오는 만큼 받아낼 거점이 넓게 펼쳐져 있으면, 한 곳을 무너뜨리려는 시도가 분산되어 힘을 잃습니다.
레이트 리미팅
출발지별로, 또는 특정 엔드포인트별로 일정 시간 안에 받을 요청 횟수에 상한을 둡니다. 정상 사용자라면 좀처럼 도달하지 않을 횟수를 넘어서는 출발지는 비정상으로 보고 억제합니다. 짧은 시간에 비정상적으로 많은 요청을 보내는 봇을 걸러내는 데 효과적입니다.
행위 분석과 필터링
트래픽의 패턴, 헤더의 생김새, 연결을 맺는 방식 등을 분석해 봇과 사람을 구분합니다. 사람의 접속에서는 자연스럽게 나타나는 특징이 자동화된 공격에서는 빠져 있거나 어색한 경우가 많습니다. 의심스러운 요청에는 간단한 검증을 요구해, 그것을 통과하지 못하는 자동화된 트래픽을 걸러냅니다.
공격을 빠르게 알아채는 것이 먼저다
아무리 좋은 방어 수단이 있어도 공격이 시작된 것을 늦게 알면 소용이 없습니다. 그래서 평상시 트래픽의 기준선을 파악해두는 일이 방어의 출발점입니다. 시간대별로 평소 어느 정도의 트래픽이 들어오는지 알고 있어야, 갑자기 그 선을 크게 벗어나는 순간을 공격의 신호로 포착할 수 있습니다.
탐지가 빠를수록 대응도 빨라집니다. 트래픽이 비정상적으로 치솟는 패턴, 특정 출발지에 몰린 요청, 평소 없던 종류의 트래픽 같은 신호를 자동으로 감지해 방어 수단을 즉시 가동하는 체계가 중요합니다. 사람이 일일이 지켜보다 대응하기에는 공격이 너무 빠르게 전개되므로, 탐지부터 차단까지를 자동화해두는 것이 현실적인 방어입니다.
평소 설계가 곧 방어력이다
DDoS 방어를 공격이 시작된 뒤에야 고민하면 이미 늦습니다. 회선 용량에 여유를 두고, 자원을 여러 곳에 분산하고, 자동으로 확장되는 구조를 갖추는 등 평상시의 설계가 그대로 방어력으로 이어집니다. 충분한 여유와 분산이 있는 시스템은 어지간한 공격은 흔들림 없이 흡수해버립니다. 결국 DDoS 대응은 특별한 방어 장비 하나의 문제가 아니라, 시스템 전체를 얼마나 견고하고 분산되게 설계했느냐의 문제로 귀결됩니다.
다중 경로라는 보험
근본적으로 DDoS 방어는 단일 지점에 의존하지 않는 구조에서 나옵니다. 받아내는 곳이 한 군데뿐이면 그곳만 무너뜨리면 끝이지만, 여러 곳으로 나뉘어 있으면 전부를 동시에 무너뜨려야 하므로 공격의 난이도가 크게 올라갑니다.
한 경로가 막혀도 다른 경로로 우회하는 메시형 다중 경로 설계가 그 토대이며, 트래픽을 여러 곳으로 분산할수록 한 곳을 겨냥한 공격은 그만큼 흩어집니다. 평소의 분산 설계가 그대로 공격에 대한 보험이 되는 셈입니다. 공격 유형별 동작과 방어 원리는 Cloudflare Learning의 DDoS 공격 개요 문서에 정리돼 있습니다.