DDoS 공격 종류와 방어 방법 완전정복

"디도스 공격을 당했다"는 뉴스, 정확히 무슨 일이 벌어진 것인지 유형과 실제 사고 사례, 방어 관점에서 정리했습니다.

한눈에 보기

DDoS(분산 서비스 거부) 공격은 서버를 해킹해 정보를 훔치는 공격이 아니라, 정상 이용자가 서비스에 접근하지 못하게 ‘막아 버리는’ 공격입니다. 미국 사이버보안·인프라보안국(CISA)은 DoS를 대상 시스템이나 네트워크 자원을 정당한 이용자가 쓸 수 없게 만드는 공격으로 설명하고, DDoS는 여러 기기가 동시에 이를 수행하는 것으로 설명합니다. 이 글은 공격 방법이 아니라 개념과 방어를 다룹니다. 유형별 원리, 공개 사후 보고가 있는 실제 사고 두 건, 그리고 서비스 운영자와 일반 이용자가 점검할 항목을 차례로 살펴봅니다.

아래 카드는 ‘DoS와 DDoS → 세 가지 유형 → 봇넷과 증폭 → 방어’ 순서로 개념을 나눈 것입니다.

🆚

DoS와 DDoS는 무엇이 다른가

DoS는 한 공격자가 단일 지점에서 공격하는 것이고, DDoS는 여러 대(때로는 수십만 대)의 좀비 PC로 이루어진 봇넷이 동시에 공격하는 것입니다.

DoS(Denial of Service, 서비스 거부 공격)는 하나의 공격 지점에서 대상 서버에 과도한 요청을 보내 정상적인 서비스를 방해하는 공격입니다. DDoS(Distributed Denial of Service, 분산 서비스 거부 공격)는 여기에 "분산"이 붙은 것으로, 악성코드에 감염되어 공격자가 원격으로 제어할 수 있게 된 다수의 기기(봇넷)가 동시에 같은 대상을 공격합니다. 공격 발신지가 수많은 서로 다른 IP로 분산되어 있어 단순히 특정 IP를 차단하는 방식으로는 막기 어렵다는 점이 DDoS를 훨씬 까다롭게 만듭니다.

🌊

볼류메트릭(Volumetric) 공격: 대역폭 자체를 소진

엄청난 양의 트래픽을 쏟아부어 대상 서버로 향하는 회선의 대역폭 자체를 가득 채워버리는 공격으로, UDP 플러드와 증폭 공격이 대표적입니다.

볼류메트릭 공격은 공격의 정교함보다는 순수한 트래픽 양으로 승부하는 방식입니다. 무의미한 UDP 패킷을 대량으로 퍼붓는 UDP 플러드가 대표적이며, DNS나 NTP처럼 작은 요청에 훨씬 큰 응답을 돌려주는 서버(반사체)에 피해자의 IP로 위장한 요청을 보내 응답을 피해자에게 쏟아지게 만드는 증폭(Amplification) 공격도 널리 쓰입니다. 초당 기가비트(Gbps) 단위로 측정되며, 대상 서버로 가는 회선 자체를 포화시켜 정상 트래픽이 아예 들어갈 자리가 없게 만듭니다.

🔧

프로토콜 공격: 연결 상태 자원을 소진

방화벽이나 로드밸런서, 서버가 연결 정보를 관리하는 방식의 허점을 노려 자원을 소진시키는 공격으로, SYN 플러드가 대표적입니다.

TCP 연결은 SYN-SYN/ACK-ACK로 이어지는 3단계 핸드셰이크로 시작되는데, SYN 플러드는 SYN 요청만 대량으로 보내고 마지막 ACK 응답은 절대 보내지 않아, 대상 서버가 미완성 연결을 계속 대기 상태로 쌓아두게 만들어 연결 테이블 자원을 소진시킵니다. 이 밖에도 조작된 패킷으로 방화벽이나 로드밸런서를 혼란시키는 공격들이 이 범주에 속합니다. 초당 패킷 수(pps)로 측정되며, 회선 대역폭보다는 중간 네트워크 장비의 처리 능력 자체를 노린다는 점이 볼류메트릭 공격과 다릅니다.

🎯

애플리케이션 계층 공격: 정상 트래픽처럼 위장

실제 사용자의 요청과 거의 구분되지 않는 형태로 웹 서버나 특정 기능에 부담을 주는 공격으로, HTTP 플러드와 슬로로리스가 대표적입니다.

HTTP 플러드는 겉보기엔 정상적인 웹 요청(GET·POST)을 매우 빠른 속도로 대량 전송해 서버나 데이터베이스에 부담을 주는 방식이고, 슬로로리스(Slowloris)는 반대로 HTTP 요청을 아주 천천히 조금씩만 보내 연결을 오래 붙잡아 서버의 동시 접속 한도를 소진시키는 방식입니다. 요청 자체는 트래픽 양이 적고 정상 사용자의 행동과 비슷해 앞선 두 유형보다 탐지와 차단이 더 어렵습니다. 초당 요청 수(rps)로 측정되며, 회선이 아니라 웹 애플리케이션이나 서버 소프트웨어 자체를 표적으로 삼습니다.

🤖

봇넷과 증폭 공격은 어떻게 작동하나

악성코드에 감염된 기기들의 네트워크(봇넷)가 공격 병력이 되고, 증폭 공격은 반사체 서버를 속여 작은 요청을 훨씬 큰 응답으로 부풀립니다.

봇넷은 사용자도 모르게 악성코드에 감염되어 공격자의 명령을 받는 다수의 기기(PC, IoT 기기 등)로 이루어진 네트워크입니다. 증폭 공격에서는 공격자가 반사체 역할을 하는 공개 DNS·NTP 서버 등에 피해자의 IP 주소를 발신지로 위장한 작은 질의를 보내면, 서버는 훨씬 큰 응답을 그 위장된 IP, 즉 실제 피해자에게 돌려보내게 됩니다. 이렇게 하면 공격자가 실제로 쓴 대역폭보다 몇 배에서 수십 배 더 큰 트래픽을 피해자에게 쏟아부을 수 있습니다.

🛡️

기업과 개인이 할 수 있는 방어 방법

기업은 CDN·WAF·애니캐스트 분산과 통신사 차원의 블랙홀 라우팅을 활용하고, 일반 가정에서는 공유기 방화벽과 펌웨어 업데이트 정도가 현실적인 대비책입니다.

서비스를 운영하는 기업 입장에서는 CDN으로 트래픽을 지리적으로 분산시키고, WAF(웹 애플리케이션 방화벽)로 비정상 요청 패턴을 걸러내며, 요청 빈도를 제한하는 레이트 리미팅을 적용하는 것이 기본적인 대응입니다. 공격 규모가 매우 크면 인터넷 서비스 제공업체(ISP) 차원에서 해당 트래픽을 아예 폐기하는 블랙홀 라우팅을 쓰기도 합니다. 일반 가정 사용자는 직접 DDoS의 표적이 되는 경우는 드물지만, 자신의 IoT 기기나 공유기가 모르는 새 봇넷의 일원이 되지 않도록 기본 비밀번호를 바꾸고 펌웨어를 최신 상태로 유지하는 것이 실질적인 예방입니다.

세 가지 유형 한눈에 비교

유형별로 ‘무엇이 한계에 도달하는가’가 다르므로 측정 단위와 방어 방법도 달라집니다. 분류는 보안 업계에서 흔히 쓰는 틀을 따른 것이며 자료마다 세부 구분이 조금씩 다릅니다.

유형노리는 자원흔한 측정 단위대표 예
볼류메트릭회선 대역폭bps(Gbps, Tbps)UDP 플러드, 증폭 공격
프로토콜서버·방화벽·로드밸런서의 연결 상태 자원ppsSYN 플러드
애플리케이션 계층웹 서버·애플리케이션 기능rpsHTTP 플러드, 슬로로리스

증폭의 정도도 프로토콜마다 크게 다릅니다. 위키백과(Denial-of-service attack)의 UDP 증폭 표에는 DNS가 최대 약 179배, NTP가 약 556.9배, memcached가 약 5만 배로 실려 있습니다. 이는 특정 조건에서의 최대치이고 이후 버전에서 개선된 것도 있으므로(memcached 1.5.6, NTP 4.2.7p26에서 수정) 오늘의 위험을 그대로 나타내지는 않습니다.

공개 사후 보고로 본 실제 사고

사례 1. 2016년 10월 21일 Dyn DNS 사고

2016년 10월 21일 DNS 서비스 업체 Dyn이 세 차례의 DDoS 공격을 받았습니다(위키백과 기준 UTC 11:10~13:20, 15:50~17:00, 20:00~22:10). Dyn은 많은 웹사이트의 도메인 이름을 IP 주소로 풀어 주는 업체여서, Dyn이 흔들리자 Amazon, Twitter, Netflix, GitHub, Reddit, PayPal 등 수많은 서비스가 유럽과 북미, 특히 미국 동부에서 접속되지 않았습니다. 표적은 개별 사이트가 아니라 DNS라는 공통 의존 지점이었던 것입니다. Dyn은 ‘수천만 개의 IP 주소’에서 악의적 요청이 들어왔다고 밝혔고, 공격은 Mirai 악성코드에 감염된 프린터, IP 카메라, 가정용 게이트웨이, 베이비 모니터 등 사물인터넷 기기의 봇넷으로 추정되었습니다. Mirai의 소스 코드가 몇 주 전 공개되어 있었던 점이 배후를 가리기 어렵게 했다고 브라이언 크렙스가 지적했습니다. 2017년 12월 미 법무부는 Mirai 및 클릭 사기 봇넷 관련 사건에서 세 명의 유죄 인정을 발표했습니다. 배울 점은 두 가지입니다. 하나는 서비스가 의존하는 DNS를 한 업체에만 두는 구조의 위험, 다른 하나는 보안이 허술한 가정용 IoT 기기가 대규모 공격의 병력이 된다는 점입니다.

사례 2. 2018년 2월 28일 GitHub 1.35Tbps 공격

GitHub가 공개한 사고 보고에 따르면 2018년 2월 28일 GitHub는 정점 1.35Tbps(초당 1억 2,690만 패킷)의 트래픽을 받았습니다. 공개 인터넷에 UDP가 켜진 채 노출된 memcached 서버를 이용한 증폭 공격이었고, 증폭 배율은 최대 약 5만 1천 배라고 설명되었습니다. GitHub.com은 17:21~17:26 UTC에 접속이 불가했고 17:26~17:30 UTC에 간헐적으로 불안정했습니다. GitHub는 17:26에 Akamai의 방어망을 통해서만 경로를 광고하도록 바꿔 추가 처리 용량을 확보했고, 이후 경계에서 접근 제어 목록으로 공격을 걸러냈습니다. GitHub는 데이터의 기밀성이나 무결성이 위험에 처하지 않았다고 밝혔고, 대응 자동화와 복구 시간 단축을 다음 과제로 제시했습니다. 배울 점은 대규모 공격이라도 외부 방어 전문 사업자(스크러빙)와의 사전 연결이 있으면 수 분 안에 복구할 수 있다는 점, 그리고 증폭의 근본 원인은 인터넷에 노출된 잘못 설정된 서버라는 점입니다.

상황별 대응 점검표 (가상 예시)

아래는 실제 사건이 아닌 가상 예시입니다. 소규모 쇼핑몰 운영자가 ‘사이트가 갑자기 느려졌다’는 문의를 받았다고 합시다. CISA는 이런 증상(느린 성능, 특정 사이트 접속 불가)이 공격이 아닌 일반적인 기술 문제나 점검에서도 나타날 수 있다고 안내합니다. 그러므로 먼저 아래 순서로 원인을 좁힙니다.

흔한 오해와 정정

한계와 더 알아볼 점

Dyn 사고의 배후는 사고 직후 여러 집단이 주장했지만 확인되지 않았고, 위키백과는 이후 Mirai 관련 사건의 유죄 인정과 2020년 한 명의 유죄 인정을 언급하는 정도로만 설명합니다. 이 글에는 공격 규모의 최근 기록도 담지 않았습니다. 기록은 계속 갱신되므로 CISA와 각 사업자의 최신 보고서를 확인하는 편이 정확합니다. 또 방어 방법의 효과는 환경마다 달라서 위 점검표는 일반 정보일 뿐이며, 실제 서비스 운영에는 전문 보안 업체와의 상담이 필요합니다.

다른 해킹·보안 위협도 함께 알아두면 좋아요

해커의 목적과 유형이 궁금하다면 해커의 종류 완전정복을, 사회공학적 공격 수법이 궁금하다면 소셜 엔지니어링 공격 관련 글도 확인해보세요. 트래픽 분산에 쓰이는 CDN 기초와 방화벽 기초도 방어 이해에 도움이 됩니다.

내 홈 네트워크 보안도 점검해보세요

내 공유기나 IoT 기기가 봇넷에 이용되지 않도록 기본 보안 설정을 점검하고 싶다면홈 네트워크 보안 설정하는 방법을 참고해보세요.

자주 묻는 질문

DDoS 공격은 왜 완전히 막기 어렵나요?

공격 트래픽이 수많은 서로 다른 IP 주소(감염된 좀비 기기들)에서 동시에 발생하기 때문에, 특정 IP 몇 개만 차단하는 방식으로는 대응이 안 됩니다. 게다가 애플리케이션 계층 공격은 정상 사용자의 요청과 매우 비슷해 보여, 실제 사용자를 차단하지 않으면서 공격만 걸러내기가 쉽지 않습니다.

내 컴퓨터가 봇넷의 일부가 됐는지 어떻게 알 수 있나요?

평소보다 인터넷 사용량이 눈에 띄게 늘거나 컴퓨터가 이유 없이 느려지는 경우 의심해볼 수 있지만, 정교한 악성코드는 눈에 띄는 증상 없이 조용히 작동하기도 합니다. 신뢰할 수 있는 백신 프로그램으로 정기적인 검사를 하고, 운영체제와 공유기 펌웨어를 최신 상태로 유지하는 것이 가장 기본적인 예방입니다.

DoS와 DDoS는 공식 문서에서 어떻게 구분하나요?

CISA는 DoS를 정당한 이용자가 시스템이나 네트워크 자원에 접근하지 못하게 하는 공격으로, DDoS를 여러 기기를 동원해 같은 일을 하는 공격으로 설명합니다. 동원된 기기 중 상당수는 약한 비밀번호의 IoT 기기라고도 설명합니다.

Dyn 사고에서 왜 Dyn과 관계없는 사이트까지 접속이 안 됐나요?

사이트 자체는 멀쩡해도, 이름을 IP 주소로 바꿔 주는 DNS 업체가 응답하지 못하면 이용자가 접속 주소를 얻지 못하기 때문입니다. 그래서 DNS를 한 업체에 의존하는 구조가 약점이 될 수 있습니다.

가정에서 DDoS를 당하면 어떻게 하나요?

일반 가정이 직접 표적이 되는 일은 드뭅니다. 접속이 이상하게 느리거나 끊기면 CISA 안내처럼 ISP에 먼저 문의해 장애인지 공격인지 확인하세요.