디도스(Distributed Denial of Service)란?
디도스의 정의
디도스(DDoS, Distributed Denial of Service) 공격은 다수의 시스템에서 특정 서버나 네트워크, 애플리케이션으로 대량의 트래픽과 요청을 보내 정상적인 서비스 제공을 방해하는 공격이다. 공격 트래픽이 시스템의 처리 용량을 넘어서면 서버와 네트워크 장비의 자원이 소진되고, 접속 지연이나 연결 실패, 페이지 오류 등이 발생하게 된다.
공격 대상은 웹사이트에 한정되지 않는다. 모바일 앱, 온라인 게임, 결제 서비스, DNS 서버, VPN, API처럼 외부 요청을 처리하는 다양한 서비스가 디도스 공격의 대상이 될 수 있으며 내부 시스템에 직접 침입하지 않고도 서비스 이용을 방해하거나 중단시킬 수 있다.
디도스 공격은 대량의 패킷을 전송해 네트워크 대역폭을 소진시키거나, 정상적인 웹 요청과 유사한 요청을 반복해 서버와 데이터베이스의 처리 자원을 고갈시키는 등 다양한 방식으로 이루어진다. 공격 방식은 다르지만 다수의 시스템에서 동시에 트래픽과 요청을 발생시켜 정상적인 서비스 이용을 방해한다는 공통점이 있다.
디도스는 여러 시스템을 이용해 공격한다는 점에서 한 개 또는 소수의 시스템에서 발생하는 DoS 공격과 구분된다.
DoS와 DDoS 차이점
DoS와 DDoS 두 공격 모두 서비스가 정상적인 요청을 처리하지 못하게 만드는 공격이지만 공격 트래픽이 발생하는 방식과 규모, 출발지 확인 및 대응 난이도에서 차이가 있다.
| 구분 | DoS 공격 | DDoS 공격 |
|---|---|---|
| 공격 출발지 | 한 개 또는 소수의 시스템 | 여러 지역에 분산된 다수의 시스템 |
| 공격 규모 | 제한적 | 대규모 트래픽 발생 가능 |
| 출발지 확인 | 상대적으로 쉬움 | 분산된 IP로 인해 어려움 |
| 대응 방법 | 출발지 차단, 서버 보호 | 트래픽 필터링, WAF, CDN, 스크러빙 등 |
| 정상 요청 구분 | 공격 출발지가 제한적이어서 상대적으로 식별하기 쉬움 | 정상 사용자와 혼재하여 식별이 어려움 |
이러한 차이는 공격에 동원되는 시스템의 수와 제어 방식에서 비롯된다. DoS 공격은 한 개 또는 소수의 시스템에서 발생하지만, DDoS 공격은 공격자가 장악한 다수의 PC와 서버, 공유기, IoT 기기 등을 동시에 활용한다. 이처럼 여러 기기에서 공격 트래픽이 분산되어 발생하기 때문에 출발지를 특정하고 정상 요청과 구분하기가 어렵다.
디도스 공격 방법
공격자는 PC, 서버, 공유기, IP 카메라, IoT 기기 등에 악성코드를 감염시킨다. 감염된 기기는 공격자의 원격 명령을 수행하는 봇(bot)이 되며, 이러한 봇을 다수 연결한 네트워크를 봇넷(botnet)이라고 한다.
공격자가 명령을 내리면 봇넷을 구성하는 기기들이 특정 서버나 서비스로 동시에 트래픽을 보낸다. 대량의 요청이 이어지면 서버의 CPU와 메모리, 네트워크 장비의 세션 처리 용량이 빠르게 소진되며 공격 트래픽이 시스템의 처리 한도를 넘어서면 정상 사용자의 요청에 대한 응답이 늦어지고, 웹사이트와 API, 결제와 같은 주요 서비스가 지연되거나 중단될 수 있다.
디도스 공격 유형
디도스 공격은 어떤 자원을 소진시키는지에 따라 대역폭 공격, 프로토콜 공격, 애플리케이션 계층 공격으로 나눌 수 있다. 실제 공격에서는 여러 유형을 동시에 사용하거나 방어 상황에 따라 공격 방식을 바꾸기도 한다.
대역폭 공격
대역폭 공격은 대상 네트워크가 처리할 수 있는 용량 이상의 트래픽을 전송하는 공격이다. 서버가 정상적으로 작동하더라도 인터넷 회선에 공격 트래픽이 집중되면 정상 사용자가 서비스에 접속하기 어려워진다.
- UDP Flooding: UDP 패킷을 대량으로 전송해 네트워크 대역폭과 대상 시스템의 패킷 처리 용량 소진
- ICMP Flooding: Ping 요청 등에 사용되는 ICMP 패킷을 집중적으로 전송해 네트워크 대역폭과 시스템의 응답 처리에 부하를 주는 공격
- 반사·증폭 공격: 피해 시스템의 IP 주소로 출발지를 위조한 요청을 외부 서버에 보내, 요청보다 큰 응답 트래픽을 피해 시스템에 집중
프로토콜 공격
프로토콜 공격은 TCP/IP 통신과 연결 처리 절차를 악용해 서버와 보안 장비의 세션 처리 용량을 소진시키는 방식이다. 전체 트래픽 규모가 크지 않더라도 방화벽, 침입방지시스템, 로드밸런서, 서버의 연결 처리 기능에 장애를 일으킬 수 있다.
- SYN Flooding: TCP 연결 요청을 반복하고 연결을 완료하지 않아 서버의 세션 처리 용량 소진
- ACK Flooding: ACK 패킷을 대량으로 전송해 방화벽과 서버의 패킷 검사 및 세션 처리 부하 증가
- TCP Flag Flooding: TCP 플래그를 비정상적으로 설정한 패킷을 전송해 네트워크 장비의 패킷 검사 자원 소진
- Fragmentation Flooding: 조각화된 IP 패킷을 대량으로 전송해 대상 시스템의 패킷 재조립 처리 자원을 소진시키는 공격
암호화 및 애플리케이션 계층 공격
암호화 및 애플리케이션 계층 공격은 HTTPS 연결을 반복하거나 웹서비스의 실제 기능을 호출하는 방식이다. 네트워크 트래픽이 비교적 적더라도 서버의 연산 능력과 애플리케이션 처리 용량을 빠르게 소진시킬 수 있다.
- SSL/TLS Flooding: SSL/TLS 연결 설정을 반복해 서버의 암호화 연산과 연결 처리 자원 소진.
- HTTP Flooding: GET, POST 등의 요청을 대량으로 전송해 웹 서버와 애플리케이션의 처리 용량 소진
- HTTPS Flooding: 암호화된 HTTP 요청을 반복해 서버와 보안 장비의 연결 및 요청 처리 부하 증가
- Slow HTTP 공격: HTTP 데이터를 느리게 전송해 연결을 장시간 유지하고 웹 서버의 동시 연결 한도 소진
멀티벡터 디도스 공격
멀티벡터 디도스 공격은 여러 공격 방식을 동시에 사용하거나, 방어 상황에 따라 공격 유형을 바꾸는 공격이다.
UDP Flooding과 SYN Flooding을 함께 사용하면 네트워크 대역폭뿐 아니라 방화벽과 서버의 연결 처리 용량까지 빠르게 소진될 수 있다. 여기에 로그인이나 검색 API를 겨냥한 HTTP Flooding이 더해지면 네트워크, 보안 장비, 애플리케이션 서버에서 동시에 장애가 발생할 수 있다.
공격자는 적용된 방어 정책에 따라 공격 방식을 바꾸기도 한다. 네트워크 구간에서 대량의 트래픽이 차단되면 애플리케이션 계층 공격으로 전환하고, 웹 요청 제한이 강화되면 UDP나 TCP 패킷을 이용한 공격으로 변경하는 것 같이 지속적으로 공격을 이어 나갈 수 있다.
멀티벡터 공격은 한 가지 탐지 지표나 장비 로그만으로 파악하기 어렵다. 네트워크 트래픽과 패킷 수, 보안 장비의 세션 상태, HTTP 요청량, 서버 자원 사용률을 모두 확인해야 공격 유형과 변화를 정확히 파악할 수 있다.
디도스 공격의 주요 탐지 신호
단 하나의 신호만으로 디도스 공격 여부를 판단하기는 어렵다. 공격을 탐지하기 위해 트래픽과 네트워크 성능, 서비스 상태 등의 변화를 종합적으로 확인해야 한다.
다음과 같은 변화는 DDoS 공격이 가해지고 있는 신호일 수 있다.
- 평소 기준을 벗어난 급격한 트래픽 증가
- 특정 IP 주소 또는 IP 대역의 요청 집중
- TCP, UDP, ICMP 트래픽 비율의 급격한 변화
- 패킷 크기와 요청 빈도의 비정상적인 변화
- 특정 웹페이지나 URL의 반복적인 요청 증가
- 완료되지 않은 연결 요청의 증가
- 웹사이트와 온라인 서비스의 응답 지연 또는 중단
정상적인 이벤트나 이용자 증가로도 트래픽이 늘어날 수 있기 때문에 트래픽 규모만 봐서는 안 되며 출발지, 요청 빈도, 프로토콜, 발생 시간, 서비스 응답 상태를 함께 확인해야 한다. 또한 이러한 지표에 대한 실시간 모니터링을 통해 공격을 빠르게 탐지하고 대응해야 한다.
Article
해외 해킹 그룹 디도스 공격 확산, 가장 먼저 점검해야 할 것은?
디도스 공격의 대응방안
디도스 공격이 발생하면 대량의 트래픽과 요청이 네트워크와 서버, 애플리케이션에 집중되면서 정상적인 서비스 제공이 어려워질 수 있다. 피해를 최소화하기 위해서는 공격 트래픽이 주요 시스템에 도달하기 전에 필터링하고 서버나 기능에 요청이 집중되지 않도록 제어해야 한다.
다음은 대표적인 디도스 공격 대응 방안이다.
공격 트래픽 필터링
트래픽 필터링은 비정상적인 프로토콜이나 패킷 구조, 반복되는 연결 요청, 공격에 사용된 IP 주소 등을 차단한다. 이를 통해 공격 트래픽이 서버와 네트워크 장비까지 도달하는 양을 최소화하고 정상 요청을 처리할 수 있는 자원을 확보할 수 있다. 이때 봇넷은 여러 IP 주소를 사용하고 정상 요청과 비슷한 요청을 보낼 수 있기 때문에 IP 주소뿐 아니라 패킷 특성과 요청 빈도, 세션 상태를 함께 확인해야 한다.
Case Study
대규모 공격에도 안정적인 서비스 운영, L사의 DDoS 방어 체계 구축 사례
요청 속도 제한
요청 속도 제한(rate limiting)는 일정 시간 동안 하나의 IP 주소나 세션, 사용자 계정, API 키가 보낼 수 있는 요청 수를 제한해 동일한 기능에 요청이 집중되는 것을 막아 웹 서버와 애플리케이션, 데이터베이스의 처리 부담을 줄일 수 있다. 요청 속도를 제한할 때 제한 기준을 지나치게 낮게 설정하면 정상 사용자의 요청까지 차단될 수 있기 때문에 로그인, 검색, 파일 조회 등 기능마다 평소 요청량과 서버에 주는 부하가 다르므로 서비스 특성에 맞게 기준을 설정해야 한다.
웹 애플리케이션 방화벽 적용
웹 애플리케이션 방화벽(WAF, Web Application Firewall)은 웹서비스로 들어오는 HTTP와 HTTPS 요청을 분석하고 비정상적인 요청을 차단한다. 요청 경로와 방식, 헤더, 반복 횟수, 세션 행동 등을 기준으로 로그인이나 검색, 파일 조회 기능에 집중되는 공격을 식별할 수 있다. WAF를 적용하면 정상적인 웹 요청과 다른 패턴을 보이는 애플리케이션 계층 공격을 서버에 도달하기 전에 제한할 수 있다. 하지만 대량의 패킷으로 네트워크 대역폭을 소진하는 공격은 WAF만으로 처리하기 어려우므로 네트워크 구간의 방어 기술이 함께 필요하다.
CDN과 Anycast 기반 트래픽 분산
CDN(Content Delivery Network)은 웹 콘텐츠와 사용자 요청을 여러 지역의 네트워크 거점에서 처리하며 Anycast는 동일한 IP 주소로 들어오는 트래픽을 사용자와 가까운 네트워크 거점으로 분산한다.
이와 같은 구성을 적용하면 트래픽이 하나의 서버나 데이터센터에 집중되는 것을 방지할 수 있지만 트래픽을 분산하는 것만으로 공격 요청이 제거되는 것은 아니기 때문에 필터링과 WAF, 요청 속도 제한을 함께 적용해야 한다.
클라우드 스크러빙과 트래픽 우회
클라우드 스크러빙은 서비스로 향하는 트래픽을 외부 방어 인프라로 우회해 검사하는 방식이다. 스크러빙 센터는 공격 트래픽을 필터링하고 정상 트래픽만 서비스로 전달한다. 조직의 네트워크 용량을 넘어서는 대역폭 공격도 외부 구간에서 처리할 수 있어 통신 회선과 내부 방화벽이 공격 트래픽으로 마비되는 것을 막을 수 있다. 공격 발생 시 바로 우회할 수 있도록 통신사업자나 방어 서비스 제공업체와 적용 절차를 미리 정해 둬야 한다.
디도스 공격은 트래픽 규모와 요청 형태가 다양하고 여러 계층을 동시에 노릴 수 있어 한 가지 방어 방식만으로 대응하기 어렵다. 공격으로 인해 서비스가 중단되지 않도록 비정상 트래픽을 신속하게 차단하면서 정상 사용자의 접속은 유지해야 한다. 이를 위해 공격 특성과 서비스 구조를 고려해 네트워크와 애플리케이션 계층의 방어 수단을 유기적으로 연계해야 한다.
Case Study
디도스 공격 실전 대응 가이드
FAQ
디도스 공격은 항상 대규모 트래픽을 발생시키는가?
디도스는 대규모 트래픽만 발생시키지 않는다. UDP Flood나 DNS 증폭 공격처럼 네트워크 대역폭을 소진하는 공격은 트래픽 규모가 크지만 애플리케이션 계층 공격은 일반적인 웹 접속과 비슷한 HTTP 요청을 반복하기 때문에 전체 트래픽은 크게 늘지 않았는데 특정 페이지의 응답만 느려질 수도 있다. 이 때문에 트래픽 규모만으로 공격 여부를 판단해서는 안 된다. 특정 URL에 요청이 몰리는지, 완료되지 않은 연결이 계속 쌓이는지, 서비스 응답 시간이 평소와 달라졌는지도 살펴야 한다.
DoS보다 DDoS 공격의 대응이 더 어려운 이유는 무엇인가?
공격 출발지가 분산돼 있기 때문이다. DoS 공격은 일반적으로 하나 또는 제한된 위치에서 발생하는 반면 DDoS 공격은 공격자가 감염시킨 다수의 PC, 서버, 라우터, IoT 기기에서 동시에 요청을 보낸다. 이 때문에 일부 IP 주소를 차단해도 다른 주소에서 공격이 이어질 수 있으며 정상 사용자가 이용하는 네트워크와 공격 출발지가 겹칠 수도 있어 차단 범위를 넓게 적용하기 어렵다.
트래픽이 갑자기 늘면 디도스 공격인가?
트래픽 증가만으로는 판단하기 어렵다. 할인 행사, 서비스 출시, 뉴스 보도처럼 실제 이용자가 몰리는 상황에서도 비슷한 변화가 나타날 수 있어 요청의 형태를 함께 확인해야 한다. 특정 주소가 반복적으로 호출되는지, 같은 유형의 패킷이 짧은 시간에 집중되는지, 평소와 다른 국가나 IP 대역에서 요청이 늘었는지 살펴볼 필요가 있다.
공격 유형에 따라 대응 방법도 달라지는가?
볼륨형 공격은 대량의 트래픽으로 네트워크 대역폭을 소진한다. CDN, Anycast 네트워크, 클라우드 스크러빙처럼 외부 구간에서 트래픽을 분산하거나 걸러내는 방식이 필요하다.
SYN Flood와 같은 프로토콜 공격은 서버와 네트워크 장비의 연결 처리 자원을 노린다. 이 경우 완료되지 않은 연결 수와 세션 상태를 확인해야 한다.
HTTP Flood는 웹 요청을 이용한다. 특정 URL의 반복 요청과 접속 패턴을 분석하고 WAF와 속도 제한을 적용할 수 있다.
CDN과 WAF를 적용하면 디도스 공격을 모두 막을 수 있는가?
두 기술의 역할이 다르므로 모든 디도스 공격을 막는 단일 방어 수단으로 볼 수 없다.
CDN은 여러 네트워크 지점에서 웹 트래픽을 처리해 원본 서버에 요청이 집중되는 것을 줄인다. WAF는 HTTP 요청을 검사해 특정 경로나 기능을 반복 호출하는 공격을 제한한다.
UDP나 ICMP 트래픽으로 네트워크 대역폭을 소진하는 공격에는 별도의 네트워크 방어가 필요하다. 보호 대상과 공격 유형에 따라 트래픽 분산, 필터링, 스크러빙을 함께 구성해야 한다.
안랩의 디도스 대응 솔루션
AhnLab DPX는 네트워크와 애플리케이션 계층에서 발생하는 다양한 디도스 공격을 탐지하고 차단하는 디도스 대응 솔루션이다. 유입 패킷과 트래픽 패턴을 분석해 대용량 플러딩 공격, 프로토콜 공격, HTTP Flooding과 같은 애플리케이션 계층 공격에 대응하며 정상 사용자의 요청과 공격 트래픽을 구분해 서비스 중단 위험을 줄인다. 또한 조직의 네트워크 용량을 초과하는 대규모 공격이 발생하면 클라우드 스크러빙 센터와 연계해 공격 트래픽을 외부에서 정제하고 정상 트래픽만 서비스로 전달할 수 있다.