작동 방식

DDoS 방어의 작동 방식, 단계별로

대부분의 설명은 "나쁜 트래픽을 필터링합니다"에서 끝나고, 그것으로는 아무것도 설명되지 않습니다. 그래서 하나의 공격을 끝까지 추적했습니다. 인터넷에서 들어오는 7 Tbps, 서버에 도달하는 400 Mbps의 실제 플레이어, 그리고 그 사이의 모든 단계를 무엇을 걷어내는지, 왜 다른 어떤 것도 그것을 걷어낼 수 없었는지와 함께 보여줍니다.

Cloudflare Spectrum
당신의 서버

왜 한 단계로는 결코 충분하지 않은가

DDoS 방어의 모든 단계는 무언가를 보지 못합니다. 7 Tbps 공격을 삼킬 만큼 큰 네트워크가 재는 것은 초당 비트이며, Minecraft 핸드셰이크가 무엇인지는 모릅니다. Minecraft 프로토콜을 완벽하게 읽는 필터도 그것이 동작하기 전에 공격이 회선을 채워버리면 소용이 없습니다. 두 실패 방식은 정반대이며, 그래서 진짜 방어는 제품이 아니라 연속된 순서입니다. 각 계층은 다음 계층이 볼 수 없는 것을 걷어내고 나머지를 아래로 넘깁니다.

아래 다이어그램이 바로 그 순서이며, 하나의 공격을 처음부터 끝까지 통과시킨 것입니다. 규모는 이 네트워크가 실제로 완화한 최대 볼류메트릭 공격에 맞췄습니다.

하나의 공격, 여섯 개의 단계

7 Tbps 공격을 인터넷에서 Minecraft 백엔드까지 추적한 흐름입니다. 각 단계는 그 다음 단계가 볼 수 없는 것을 걷어냅니다.

공격 규모7Tbps
10 Gbps7 Tbps
공격 유형
플레이어공격
  1. 애니캐스트 흡수

    Cloudflare Spectrum

    7Tbps
    수신
    6.6 Tbps · 94%

    원시 공격 트래픽이 Cloudflare의 애니캐스트 망에 도달해 330개 이상의 도시로 분산됩니다. 리플렉션, 증폭, 위조 UDP 같은 볼류메트릭 L3/L4 쓰레기는 공개 용량 500 Tbps 이상의 네트워크에서 여기서 소멸합니다.

  2. L4 완화

    Papyrus · AS216013

    600 Gbps

    400Gbps
    수신
    202 Gbps · 51%

    살아남는 것은 최소한 연결을 원하는 것처럼 보이는 TCP입니다. 커널 수준 SYN 필터링과 출발지별 속도 제한이 사용자 공간에 닿기 전에 연결 폭주를 폐기합니다.

  3. L7 완화

    Papyrus · AS216013

    198Gbps
    수신
    170 Gbps · 86%

    핸드셰이크는 완료하지만 유효한 Minecraft를 말하지 않는 연결 — 스캐너, 일반적인 L7 폭주, 형식이 깨진 프로토콜 — 은 페이로드 파싱에 실패하는 즉시 폐기됩니다.

  4. 프로토콜 인식 안티봇

    Cryo

    28Gbps
    수신
    27 Gbps · 96%

    이제 남은 것은 모두 Minecraft를 유창하게 구사합니다. Cryo는 핸드셰이크 자체를 파싱해 호스트명, 프로토콜 버전, 접속 빈도, 출발지 ASN, 이력을 모두 판정에 반영합니다. 공격이 커지면 auto-UAM이 제한을 조입니다.

  5. 검증 관문

    CryoLimbo

    1Gbps
    수신
    646 Mbps · 62%

    남은 찌꺼기는 우회 봇, 즉 안티봇에게 사람처럼 보이도록 특별히 작성된 클라이언트입니다. 이들은 limbo로 우회되어 물리 및 행동 검사로 그것을 증명해야 합니다. 여기서 걸린 진짜 플레이어는 통과해 계속 진행합니다.

  6. 깨끗한 트래픽

    당신의 서버

    400Mbps
    도달

    도달하는 것은 플레이어입니다. 실제 클라이언트 IP가 PROXY 프로토콜로 전달되므로 밴과 IP 기반 플러그인은 직접 연결과 똑같이 동작합니다. 오리진은 나머지 6.99 Tbps를 한 번도 보지 못했습니다.

측정된 트래픽이 아니라 대화형 모델입니다. 모든 수치는 위의 두 컨트롤에서 계산됩니다. 플레이어 트래픽은 일정하게 유지됩니다. 실제로 접속하려는 사람 수는 공격 규모에 따라 달라지지 않기 때문입니다. 또한 각 노드에는 그 노드가 직접 버린 트래픽만 집계되며, 앞선 노드가 한 일은 절대 포함되지 않습니다. 기본 시나리오는 이 네트워크가 실제로 완화한 최대 볼류메트릭 공격 규모에 맞췄습니다.
01

단계 1 — 흡수, 양이 문제가 되지 않는 지점

모든 공격에서 첫 번째 질문은 보안이 아니라 산수입니다. 관이 공격보다 굵은가? 7 Tbps가 10 Gbps 회선에 도달하면 회선은 가득 차고 그 뒤의 모든 것이 오프라인이 됩니다. 서버도, 방화벽도, 돌아가는 어떤 플러그인도 이미 막힌 도로의 반대편에 있습니다. 머신에서 무엇을 설정하든 이는 바뀌지 않습니다.

흡수가 공격자가 만들어낼 수 있는 것보다 큰 용량의 네트워크에서 일어나야 하는 이유가 바로 이것입니다. 트래픽은 Cloudflare Spectrum의 애니캐스트 망으로 들어오며, 하나의 공격이 330개 이상의 도시로 나뉘어 공개 용량 500 Tbps 이상의 네트워크에 흡수됩니다. 양으로 보면 이 계층이 거의 모든 일을 합니다(예시에서 공격의 94%). 하지만 유용성으로 보면 가장 재미없는 부분을 맡습니다. 애초에 무엇인 척도 하지 않던 트래픽을 걷어낼 뿐이기 때문입니다.

02

단계 2 — L4 완화, 내용 없는 연결

흡수에서 살아남는 것은 최소한 연결을 열려는 트래픽입니다. 이것이 SYN 폭주 단계로, 대역폭이 아니라 연결 추적 상태를 고갈시키도록 설계된, 종종 위조된 엄청난 수의 연결 시도입니다. 필터링은 저희 자체 네트워크(AS216013)의 커널에서, 어느 것도 사용자 공간에 닿기 전에, 출발지별 속도 제한과 연결 예산으로 이뤄집니다.

레이어 4는 연결이 도착했다는 것을 압니다. 그 연결이 무엇을 말했는지는 모릅니다. 이 계층에서는 아직 어느 쪽도 아무 말을 하지 않았기 때문에 플레이어와 봇을 구분할 수 없습니다. 여기를 통과하는 것은 정상적으로 보이는 TCP 연결이며, 이 지점부터 질문은 더 이상 양에 관한 것이 아닙니다.

03

단계 3 — L7 완화, 이것이 애초에 게임이긴 한가

이제 트래픽을 읽습니다. 핸드셰이크를 완료하는 것 중 상당수는 Minecraft를 전혀 말하지 않습니다. 인터넷 전역 스캐너, 응답하는 것이면 무엇이든 겨냥한 일반 HTTP 폭주, 무언가 죽기를 바라는 형식이 깨진 쓰레기입니다. Minecraft 프로토콜을 기대하는 파서가 다른 것을 받으면 그중 어느 것도 살아남지 못합니다.

여기가 일반적인 "게임 보호" 장비가 어려움을 겪는 첫 계층입니다. 패킷 형태를 대조하는 것이 아니라 프로토콜을 실제로 구현해야 하기 때문입니다. 또한 남은 트래픽이 진짜로 위험해질 만큼 양이 떨어지는 지점이기도 합니다. 이 지점을 지나는 모든 것은 당신 게임의 언어를 말합니다.

04

단계 4 — 프로토콜 인식 안티봇, 진짜 중요한 단계

아직 움직이는 모든 것은 이제 Minecraft를 유창하게 구사합니다. 유효한 핸드셰이크, 그럴듯한 사용자명, 정확한 프로토콜 버전이 수천 개의 가정용 및 데이터센터 주소에서 도착합니다. 이것이 실제로 Minecraft 서버를 죽이는 공격이며, 위의 모든 계층에게는 보이지 않습니다. 연결 하나하나만 보면 진짜 플레이어의 접속과 구분되지 않기 때문입니다.

  • 호스트명 인식 — 제공하지 않는 호스트명을 요청하는 연결은 오타를 낸 플레이어가 아닙니다. 다른 어떤 것이 실행되기 전에 폐기됩니다.
  • auto-UAM을 갖춘 접속 속도 제한 — ping과 로그인을 합친 속도가 올라가면 자동으로 조여지는 IP별·전역 예산. 미리 설정해 두는 대신 대응이 공격에 맞춰 확장됩니다.
  • 리스크 스코어링 — 출발지 국가, ASN, 데이터센터 대역, 프로토콜 행동, 과거 이력이 결합해 판정이 되며, 그 후에야 접속 진행이 허용됩니다.
  • ping 및 MOTD 처리 — 상태 폭주는 엣지 캐시에서 응답합니다. 서버로 전달해 초당 수천 번 답하게 하지 않습니다.

예시에서 이 계층은 도달한 것의 96%를 걷어냅니다. 26 Gbps의 트래픽이며, 그렇지 않았다면 겉보기에 진짜인 접속 시도로 백엔드에 도착했을 양입니다. 이는 Cryo가 공격을 완화하는 방식에서 자세히 설명한 것과 같은 엔진입니다.

05

단계 5 — 단계 4를 통과하도록 만들어진 봇을 위한 검증

잘 만들어진 봇은 안티봇을 연구합니다. 접속 간격을 조절하고, 그럴듯한 이름을 쓰고, 가정용 프록시에서 연결하며, 이상치로 점수화될 만한 일은 하지 않습니다. 정확히 그렇게 하지 않도록 만들어졌기 때문입니다. 점수화만으로는 잡을 수 없고, 이 찌꺼기가 사람들이 우회 봇이라 부르는 것입니다.

그래서 마지막 계층은 점수 매기기를 멈추고 묻기 시작합니다. 의심스러운 접속은 가벼운 limbo 월드인 CryoLimbo로 우회되어 진짜 클라이언트임을 보여야 합니다. 게임의 물리 법칙을 따르는 움직임, 서버 상태에 대한 올바른 응답, 헤드리스 봇이 단순히 흉내 내는 것이 아니라 실제로 구현해야 하는 행동입니다. 통과는 플레이어에게는 값싸고 공격자에게는 비쌉니다. 그것이 설계의 전부입니다. 여기서 걸린 진짜 플레이어는 통과해 서버로 진행하며, 대개 알아채지도 못합니다.

06

실제로 도달하는 것

400 Mbps의 플레이어입니다. 서버는 조용한 날에 봤을 연결을 봅니다. 실제 클라이언트 IP가 PROXY 프로토콜로 전달되므로 밴, 부계정 탐지, IP 기반 플러그인이 직접 연결과 똑같이 동작합니다. 서버 안에서 보면 공격은 더 작은 문제가 된 것이 아니라 아예 보이지 않습니다. 운영자가 공격을 처음 알아채는 계기가 렉 스파이크가 아니라 Discord 알림인 경우가 많은 이유입니다.

이 비율은 곱씹어 볼 만합니다. 볼류메트릭 계층이 공격의 94%를 걷어냈고 마지막 두 계층은 합쳐서 0.4% 미만을 걷어냈습니다. 그런데도 서버가 버티는지를 결정하는 것은 그 두 계층입니다. 봇과 플레이어를 구분할 수 있었던 것은 그 둘뿐이기 때문입니다. 용량은 흥미로운 문제를 가질 권리를 사줍니다. 그 문제를 해결해 주지는 않습니다.

07

단계가 어디에 있는지는 무엇을 하는지만큼 중요하다

위의 모든 계층은 당신의 하드웨어보다 앞에서 동작합니다. 이는 구현 세부사항이 아니라 구조적 요점입니다. 플러그인도 계층 5의 일을 어느 정도는 할 수 있고 잘 해내는 것도 있습니다. 하지만 연결이 이미 당신의 머신에 수락되고 할당되고 파싱된 뒤에 동작하므로, 회선의 잘못된 쪽에서 싸우는 셈입니다. 이 트레이드오프는 엣지 안티봇 vs 플러그인 안티봇에서 다룹니다. 그래서 합리적인 구성은 둘 중 하나가 아니라, 앞에는 엣지, 뒤에는 두 번째 계층으로서의 플러그인입니다.

자주 묻는 질문

DDoS 방어는 실제로 어떻게 작동하나요?+

공격보다 용량이 큰 곳에서, 대상에 도달하기 전에 트래픽을 필터링함으로써 작동합니다. 방어는 단계의 연속이며, 각 계층은 앞선 계층이 구조적으로 볼 수 없는 것을 잡아냅니다. 거대한 네트워크가 원시 볼류메트릭 공격을 흡수하고, 패킷 필터링이 연결 폭주를 폐기하고, 프로토콜 필터링이 실제로는 게임이 아닌 트래픽을 폐기하며, 행동 검증이 플레이어를 그럴듯하게 흉내 내는 봇을 잡습니다. 단일 계층이 전부를 해내지는 못합니다.

방화벽이나 플러그인은 왜 DDoS 공격을 막을 수 없나요?+

위치 때문입니다. 7 Tbps가 10 Gbps 회선을 겨냥하면 회선은 가득 차고, 그 너머에서 돌아가는 어떤 것도 발언권이 없습니다. 방화벽 규칙이 아무리 완벽해도 서버는 오프라인입니다. 플러그인은 더 나중에, 연결이 이미 슬롯과 스레드와 로그인을 소모한 뒤에 동작합니다. 둘 다 마지막 계층으로는 유용하지만, 어느 쪽도 첫 번째 계층이 될 수는 없습니다.

레이어 4와 레이어 7 DDoS 방어의 차이는 무엇인가요?+

레이어 4는 연결을 다룹니다. SYN 폭주, 위조 패킷, 원시 연결 속도입니다. 100만 건의 TCP 연결이 도착했다는 것은 알려주지만 그중 어느 것이 무엇을 말했는지는 알려주지 못합니다. 레이어 7은 트래픽이 실제로 무엇인지를 다룹니다. Minecraft라면 프로토콜을 말하는지, 어떤 호스트명을 요청했는지, 접속이 플레이어처럼 행동하는지입니다. 봇 공격은 레이어 7 문제이며, 그래서 L4만 쓰는 필터링은 이를 그대로 통과시킵니다.

공격 중에 실제로 얼마나 많은 트래픽이 제 서버에 도달하나요?+

이 페이지의 계산 예시에서는 7 Tbps 중 400 Mbps입니다. 17,500분의 1로 줄어들며 오리진은 나머지 6.99 Tbps를 전혀 보지 못합니다. 정확한 비율은 공격에 따라 다르지만 형태는 일정합니다. 볼류메트릭 계층이 양적으로 압도적인 대부분을 걷어내고, 마지막 계층들이 실제로 서버를 다운시켰을 트래픽을 걷어냅니다.

이렇게 많은 계층을 거치면 플레이어의 지연이 늘어나나요?+

거의 측정되지 않는 수준입니다. 각 계층은 검사를 위해 트래픽을 대기시키지 않고 와이어 스피드로 인라인 처리하기 때문입니다. 플레이어는 가장 가까운 애니캐스트 진입점에 연결하며(서버에 직접 닿는 것보다 짧은 경로인 경우가 많습니다), 의심스러워 보이는 연결만 검증을 위해 붙잡힙니다. 깨끗한 접속은 여기서 설명한 모든 계층을 어디에도 멈추지 않고 통과합니다.

이 페이지의 모든 계층은 무료 플랜을 포함한 모든 플랜에서 동작합니다. 유료 등급이 더해주는 것은 용량과 제어이지 보호가 아닙니다. 무료 네트워크를 만들면 약 5분 만에 여섯 계층 모두의 뒤에 서게 됩니다.

다음 공격은 이미 예약되어 있습니다.
그때는 엣지 뒤에 서 계세요.

보안은 저희가 맡을 테니, 여러분은 성장에만 집중하세요. 무료 플랜, 카드 불필요, DNS 레코드 하나 — 마음에 들지 않아도 잃는 것은 5분뿐입니다.