서비스 거부 (DoS) 및 분산 서비스 거부 (DDoS)
핵심 인사이트 (3줄 요약)
- 본질: DoS (Denial of Service) 및 DDoS (Distributed DoS) 공격은 시스템 권한을 탈취(Hacking)하는 것이 아니라, 타겟 서버의 네트워크 대역폭, CPU, 메모리, 커널 세션 자원 등을 고갈시켜 정상적인 사용자의 서비스 이용을 원천적으로 불가능하게 만드는 가용성(Availability) 파괴 공격이다.
- 가치: 해커의 단일 PC에서 이루어지던 고전적 DoS와 달리, 현대의 DDoS는 악성 봇넷(Botnet)과 프로토콜의 증폭 반사(Reflection) 취약점을 활용해 수십 Tbps의 폭발적 트래픽을 생성하며 인터넷 근간 인프라를 마비시키는 전략적 사이버 테러 도구다.
- 융합: 운영체제 (OS)의 TCP 스택(Backlog Queue, Time-wait)과 웹 애플리케이션 아키텍처의 비동기 처리 구조를 교묘히 타격하므로, 단순 방화벽 확장이 아닌 CDN/Anycast 망 분산, WAF 임계치 제어, 블랙홀(Blackholing) 라우팅 등 L3에서 L7을 아우르는 융합 방어 아키텍처가 필수적이다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
개념 및 정의 서비스 거부 (DoS, Denial of Service) 공격은 타겟 시스템이 감당할 수 없는 엄청난 양의 트래픽을 전송하거나, 치명적인 오작동을 유발하는 패킷을 보내 시스템의 가용 자원(대역폭, 메모리, 프로세스 연결 수)을 완전히 바닥나게 하는 공격이다. 분산 서비스 거부 (DDoS, Distributed DoS)는 이 공격을 좀비 PC(봇넷) 수만~수십만 대가 분산된 위치에서 일제히 쏟아붓게 함으로써 파괴력을 극대화한 진화 형태다.
필요성 및 등장 배경 정보보안의 3요소(기밀성, 무결성, 가용성) 중 데이터가 유출되지 않았더라도 서비스 자체가 멈춘다면 기업은 즉각적인 금전적/신뢰적 타격을 입는다. 과거 Ping of Death나 SYN Flooding 같은 1:1 기반의 DoS 공격은 방어측 인터넷 회선망(Pipe)의 발전과 OS TCP 커널 패치로 점차 막히기 시작했다. 그러자 해커들은 사물인터넷(IoT) 기기 취약점을 뚫어 거대한 봇넷 군단을 만들거나, NTP/DNS 서버의 응답 크기 차이를 이용해 트래픽을 수백 배로 불리는(Amplification) DDoS 기법을 개발하여 클라우드 센터조차 무너뜨리는 괴물 트래픽을 뿜어내기 시작했다.
┌─────────────────────────────────────────────────────────────────┐
│ DoS와 DDoS 공격 아키텍처의 근본적 진화 차이 비교도 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ [고전적 DoS (1:1 공격)] │
│ │
│ 해커 (Attacker) ━━━━(악성 트래픽 폭탄)━━━━▶ 타겟 서버 │
│ => 한계: 해커의 회선 속도가 타겟 서버의 회선 속도보다 │
│ 느리면 공격 실패. 방어자가 해커 IP 차단하면 끝. │
│ │
│ [현대적 DDoS (N:1 분산 공격 아키텍처)] │
│ │
│ ┌─ 좀비 PC (Bot) ──┐ │
│ 해커 (Attacker) ├─ IP 카메라 (Bot) ─┤ │
│ │ ├─ 홈 공유기 (Bot) ─┤ │
│ (명령 하달) ├─ 좀비 PC (Bot) ──┤ │
│ ▼ └─ 봇넷 군단 수만 대 ┘ │
│ C&C 서버 ───────────────┘ │ │
│ (Command & Control) ▼ │
│ (( 수십 Tbps 트래픽 폭풍 )) │
│ ▼ │
│ 타겟 서버 및 전체 네트워크 다운│
└─────────────────────────────────────────────────────────────────┘
[다이어그램 해설] 이 아키텍처 다이어그램은 DoS에서 DDoS로의 패러다임 전환이 갖는 파괴력의 차이를 직관적으로 보여준다. 1:1 DoS는 복싱 시합처럼 체급(대역폭) 차이에 의해 승패가 결정되지만, DDoS는 해커가 C&C(명령 제어) 서버를 통해 전 세계에 퍼져 있는 취약한 단말(좀비 봇넷)에 공격 명령을 하달하는 구조다. 따라서 해커 자신의 위치나 IP는 완벽히 숨겨지며, 좀비 단말들이 제각각 정상적인 IP로 위장하여 동시다발적으로 트래픽을 쏘아대므로 단순한 IP 차단 방식(ACL) 방화벽은 수만 개의 룰을 처리하다 CPU 자원이 고갈되어 스스로 뻗어버리는 치명적인 결과를 낳는다.
- 📢 섹션 요약 비유: 한 명의 진상 손님(DoS)이 매대에서 계산을 방해하는 것은 경비원을 불러 끌어내면 되지만, 수만 명의 가짜 손님(DDoS 봇넷)이 백화점 출입구를 동시에 막아버리면 진짜 손님은 아예 들어가지도 못하고 건물 전체가 마비되는 것과 같습니다.
Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)
공격 유형별 구성 요소 및 타겟 지점
DDoS 공격은 공격이 타겟으로 삼는 OSI 7계층 지점에 따라 크게 세 가지 부류로 나뉜다.
| 분류 (OSI 계층) | 주요 공격 기법 | 고갈시키는 자원 | 동작 원리 / 비유 |
|---|---|---|---|
| L3/L4 대역폭 고갈형 (Volume Based) | UDP Flooding, ICMP Flooding | 인터넷 회선 용량 (Bandwidth), 라우터 PPS 처리 한계 | 엄청난 양의 소포(패킷)를 우체국 도로에 쏟아부어 도로 자체를 마비시킴 |
| L3/L4 상태 고갈형 (Protocol / State) | TCP SYN Flooding, Smurf Attack | 방화벽 세션 테이블, OS 커널의 백로그 큐 (Backlog Queue) | 식당 예약을 수만 개 걸어놓고(SYN) 나타나지 않아, 진짜 손님을 받지 못하게 테이블을 고갈시킴 |
| L7 애플리케이션형 (App Layer) | HTTP GET Flooding, Slowloris | 서버 CPU, 메모리, DB 커넥션 풀, 웹 스레드 워커 | 한 명이 주문 카운터에 가서 동전으로 계산하며 시간을 질질 끌어(Slow) 뒷사람을 못 받게 함 |
심층 동작 원리: TCP SYN Flooding과 OS 커널 고갈
L4 계층의 가장 대표적이고 고질적인 공격인 SYN Flooding은 TCP 프로토콜의 '3-Way Handshake' 설계 취약점을 집요하게 파고든다.
┌──────────────────────────────────────────────────────────────────┐
│ TCP 3-Way Handshake와 SYN Flooding 공격 커널 상태 변화 │
├──────────────────────────────────────────────────────────────────┤
│ │
│ [정상적인 TCP 연결 프로세스] │
│ Client ──(1. SYN)──▶ Server (SYN_RECV 상태 전이) │
│ ※ 커널 Backlog Queue에 연결 정보 저장 │
│ Client ◀──(2. SYN-ACK)─ Server │
│ Client ──(3. ACK)──▶ Server (ESTABLISHED 상태 전이) │
│ ※ Queue에서 제거하고 통신 시작 │
│ │
│ [TCP SYN Flooding 공격 흐름] │
│ 해커 ──(1. 가짜 IP SYN 1)──▶ Server [Queue 1 할당] │
│ 해커 ──(1. 가짜 IP SYN 2)──▶ Server [Queue 2 할당] │
│ 해커 ──(1. 가짜 IP SYN 3)──▶ Server [Queue 3 할당] │
│ ... (1초에 수만 개 발생) │
│ │
│ 서버 응답 ◀──(2. SYN-ACK)─ 가짜 IP (존재하지 않거나 응답안함) │
│ │
│ 결과: 타겟 서버의 OS 커널 Backlog Queue(보류 중인 연결 대기열)가│
│ 가득 차서 가용 한계에 도달 (Queue Full). │
│ 이후 도달하는 정상 사용자의 진짜 SYN 요청은 커널 레벨에서 │
│ 가차 없이 폐기(Drop)되어 접속이 거부됨 (가용성 파괴) │
└──────────────────────────────────────────────────────────────────┘
[다이어그램 해설] 이 구조도는 DDoS가 단순히 대역폭을 막는 것이 아니라, OS 내부의 논리적 자원을 어떻게 고갈시키는지를 정밀하게 보여준다. 서버 OS(리눅스/윈도우)는 SYN 요청을 받으면 클라이언트가 ACK로 응답할 때까지 해당 세션 정보를 메모리의 '백로그 큐(Backlog Queue)'에 유지한다. 해커는 출발지 IP를 조작(Spoofing)한 대량의 SYN 패킷만 던지고 사라진다. 서버는 가짜 주소로 SYN-ACK를 보내고 하염없이 타임아웃(Timeout)이 날 때까지 큐 공간을 비우지 못한다. 순식간에 큐 용량(예: 1024~4096개)이 꽉 차버리면, OS는 큐를 보호하기 위해 새롭게 들어오는 모든 통신 요청(진짜 고객의 접근)을 버려버린다. 네트워크 회선(10Gbps)은 텅텅 비어있음에도 불구하고, 서버는 서비스 불가(DoS) 상태에 빠지는 것이다.
- 📢 섹션 요약 비유: 가짜 번호로 짜장면 100그릇을 배달 주문(SYN)해놓고 잠적해버리면, 중국집 주방(커널 큐)은 가짜 요리를 만드느라 꽉 차서 정작 가게를 찾아온 진짜 손님의 주문은 하나도 받지 못하는 원리입니다.
Ⅲ. 융합 비교 및 다각도 분석
반사 증폭(Reflection Amplification) 공격 (DRDoS) 분석
단순한 봇넷 DDoS를 넘어, 가장 파괴적인 위력을 자랑하는 기법이 바로 분산 반사 서비스 거부 (DRDoS, Distributed Reflection DoS) 공격이다. 이는 스푸핑(Spoofing)과 네트워크 프로토콜의 증폭(Amplification) 배율을 완벽히 융합한 천재적이고 악랄한 기법이다.
| 비교 항목 | 전통적 Botnet DDoS | DRDoS (증폭 반사 공격) |
|---|---|---|
| 트래픽 생성 주체 | 해커가 감염시킨 봇(좀비 PC) | 인터넷상의 정상적인 오픈 서버(DNS, NTP, Memcached 등) |
| 공격 메커니즘 | 봇들이 직접 타겟으로 트래픽 발송 | 출발지 IP를 '타겟 IP'로 스푸핑하여 정상 서버에 요청 전송 |
| 증폭 효과 (Amplification) | 1:1 (요청한 만큼 트래픽 생성) | 적게는 50배 (DNS)에서 많게는 51,000배 (Memcached)로 증폭 |
| 은닉성 및 방어 난이도 | 봇넷 IP 차단으로 부분적 방어 가능 | 전 세계의 정상적인 대형 서버에서 날아오므로 차단이 매우 어려움 |
DRDoS의 가공할 파괴력을 수치적 증폭 계수로 시각화하면 다음과 같다.
┌───────────────────────────────────────────────────────────────┐
│ DRDoS (NTP 증폭 반사 공격) 트래픽 폭증 메커니즘 │
├───────────────────────────────────────────────────────────────┤
│ │
│ [1단계: 질의 변조 및 스푸핑] │
│ 해커 ──(64 Bytes 작은 요청)──▶ 정상적인 NTP 서버 │
│ 출발지 IP: 타겟의 IP (스푸핑) │
│ 명령어: `monlist` (서버의 최근 접속자 600명 목록 요청)│
│ │
│ [2단계: 반사 및 증폭 (Reflection & Amplification)] │
│ NTP 서버는 받은 요청이 진짜 '타겟'이 보낸 줄 앎 │
│ NTP 서버 내부에 저장된 거대한 결과값(수십 개의 패킷) 생성 │
│ │
│ [3단계: 거대 트래픽 직격] │
│ 정상 NTP 서버 ━━━━(3,000 Bytes 응답)━━━━▶ 타겟 서버 피해자 │
│ (약 500배 증폭되어 쏟아짐!) │
│ │
│ 결과: 해커가 10Mbps 대역폭만으로 공격해도, │
│ 타겟 서버에는 5Gbps(500배)의 괴물 트래픽이 꽂히게 됨. │
└───────────────────────────────────────────────────────────────┘
[다이어그램 해설] 이 다이어그램은 DRDoS가 왜 "핵무기급" 공격인지 설명한다. UDP 프로토콜은 핸드쉐이크가 없어 IP 스푸핑이 자유롭다. 해커는 인터넷에 열려있는 무고한 NTP(시간 동기화) 서버나 DNS 서버들에게 64바이트짜리 깃털같이 가벼운 질의를 던지되, 응답받을 주소를 공격 목표(Target)의 IP로 속인다. 특히 monlist 같은 특수 명령어는 결과값이 원본 요청보다 수백 배 거대하다(증폭). 결과적으로 해커의 작은 움직임이 거대한 쓰나미로 증폭되어(Amplification) 타겟에게 반사(Reflection)된다. 이 공격 트래픽은 글로벌 대기업의 정상 서버 IP를 달고 오기 때문에, 방어자는 섣불리 해당 IP를 차단(Blacklist)할 수도 없는 진퇴양난에 빠진다.
- 📢 섹션 요약 비유: 해커가 피자집, 치킨집, 족발집 수십 군데에 전화를 걸어 "주소는 타겟 빌딩 1층이고 한 군데당 100인분씩 배달해주세요"라고 거짓 주문(반사 및 증폭)을 넣어서, 타겟 빌딩 앞을 수천 대의 오토바이로 마비시키는 교활한 전술입니다.
Ⅳ. 실무 적용 및 기술사적 판단
실무 시나리오: L7 애플리케이션 공격 (Slowloris) 방어 설계
- 상황 (L7 핀포인트 공격): 대규모 트래픽 증가 현상(Flooding)이 전혀 없는데도 웹 서버(Apache)가 계속해서 먹통이 되며 "503 Service Unavailable" 에러를 뿜어낸다. 네트워크 차원의 방화벽 대역폭이나 라우터 CPU 상태는 매우 정상적이다.
- 원인 분석 (Slowloris 공격): 해커가 정상적인 TCP 연결을 맺은 뒤, HTTP 헤더의 마지막 끝맺음 기호인
\r\n\r\n을 일부러 보내지 않고, 10초에 한 번씩 쓸데없는 X-Header 한 줄만 전송하며 연결을 지연시키고 있다. 아파치 워커(Worker) 스레드는 헤더가 완료되기를 기다리며 연결을 계속 물고 있다가, 스레드 가용 풀(MaxClients)이 순식간에 고갈되어 버린 것이다. (소량의 트래픽으로 서비스 마비 달성). - 아키텍처 및 OS 방어 결단:
- 이벤트 루프(Event Loop) 웹서버로의 교체: 1커넥션 당 1스레드를 점유하는 아파치 구조 대신, 비동기 논블로킹 I/O (epoll/kqueue) 기반의 Nginx 서버로 앞단을 교체하여 수만 개의 껍데기 연결을 단일 스레드로 무력화 처리한다.
- 타임아웃(Timeout) 튜닝: OS 단의 TCP/HTTP Timeout 설정(
client_header_timeout,client_body_timeout)을 5초 이내로 극단적으로 짧게 줄여, 완전한 헤더를 제때 보내지 않는 좀비 세션을 커널 레벨에서 신속하게 Drop 시킨다.
도입 체크리스트 (클라우드 네이티브 DDoS 완화 전략)
현대 수 Tbps 급의 공격은 기업 내부 망(On-Premise) 방화벽(IPS/UTM) 장비로는 절대 막아낼 수 없다. 트래픽이 회선 제공자(ISP) 단에서 꽉 막히면 장비가 아무리 좋아도 "파이프가 막힌" 상태이기 때문이다.
- OS 커널 하드닝 (Kernel Tuning):
net.ipv4.tcp_syncookies = 1활성화 (SYN Flooding 시 백로그 큐를 안 쓰고 쿠키로 인증).net.ipv4.tcp_max_syn_backlog크기 대폭 확장.
- 클라우드 트래픽 분산 (Anycast & Scrubbing Center): AWS Shield, Cloudflare 등 글로벌 스크러빙 센터(Scrubbing Center)와 계약하여 BGP Anycast 라우팅을 적용했는가? (수백 Gbps 공격이 오면 트래픽을 글로벌 클라우드 망으로 우회 흡수시켜 더러운 패킷만 걸러내고 깨끗한 패킷만 본사로 전달하는 아키텍처 구축 필수).
안티패턴
-
인라인(Inline) 단일 장비 방어 맹신: 수십 Gbps 회선 환경에서, L7 장비(WAF나 방화벽) 1대를 인라인으로 세워두고 DDoS를 막으려는 아키텍처. 엄청난 양의 볼륨 공격이 들어오면 패킷 검사(Inspection) 오버헤드 때문에 방화벽 CPU 리소스가 먼저 100%를 치며, 스스로 전체망을 차단해 버리는 'Self-DoS' 현상을 유발한다.
-
📢 섹션 요약 비유: 거대한 홍수(수 Tbps 트래픽)가 밀려오는데 집 대문 앞에 튼튼한 방패 하나(단일 방화벽 장비)를 둔다고 막을 수 없습니다. 물결을 수만 갈래 수로로 분산시키고 정수장(스크러빙 센터)을 통과하게 만드는 도시 차원의 거대한 치수 공사가 필요합니다.
Ⅴ. 기대효과 및 결론
정량/정성 기대효과 (융합형 Anti-DDoS 아키텍처 도입 시)
| 구분 | 온프레미스 단일 방어 한계 | 클라우드 + OS 튜닝 융합 방어 시 | 기술적 함의 |
|---|---|---|---|
| 가용성 (Uptime) | 10Gbps 이상 공격 시 회선 장애 (100% 다운) | 무제한 대역폭 풀 기반 99.99% 연속성 유지 | 비즈니스 손실액 및 평판 저하 원천 봉쇄 |
| 커널 자원 (OS) | 세션 1만 개 누적 시 커널 패닉 / 연결 거부 | SYN Cookie 및 WAF 엣지 커팅으로 세션 보호 | 백엔드 서버는 오직 '정제된' 진짜 트래픽만 처리 |
| 운영 (Ops) | 보안 담당자가 수동으로 IP ACL 수천 개 등록 작업 | ML 알고리즘이 L7 볼륨 이상 탐지 후 자동 룰 적용 | 방어 레이턴시 제로화 및 휴먼 에러 방지 |
미래 전망
IoT 기기의 폭발적 증가(IP 카메라, 스마트 냉장고 등)와 5G 통신망의 보급은 해커들에게 더 거대하고 빠른 봇넷 무기고를 제공하고 있다. 미라이(Mirai) 봇넷 류의 소스코드 공개로 누구나 테라비트(Tbps)급 공격을 할 수 있는 시대다. 이에 맞서 방어자들은 eBPF 기반의 커널 초고속 패킷 필터링(XDP) 기술을 발전시키고 있다. 리눅스 커널의 네트워크 스택 깊숙한 곳까지 가기 전에(네트워크 카드 드라이버 단계에서), 규칙에 맞지 않는 DDoS 패킷을 초당 수천만 개씩 시스템 콜 오버헤드 없이 즉각 파기(Drop)하는 선언적 프로그램 기술이 미래의 DDoS 최전선 방패막이가 될 것이다.
참고 표준
-
RFC 4987: TCP SYN Flooding 대응 가이드라인 (SYN Cookies 메커니즘)
-
RFC 5635: BGP Blackholing (라우팅 기반 공격 트래픽 흡수 표준)
-
KISA DDoS 대응 가이드: 대역폭, 세션, 애플리케이션 계층별 모범 완화 정책
-
📢 섹션 요약 비유: 해커가 아무리 많은 좀비 군단을 이끌고 물량 공세(DDoS)를 펼치더라도, 우리는 거대한 클라우드 방어막(거름망)과 똑똑한 커널 스택(XDP 자동문)을 통해 더러운 흙탕물은 바다로 흘려보내고 깨끗한 식수만 집 안으로 들여보낼 수 있게 진화하고 있습니다.
📌 관련 개념 맵 (Knowledge Graph)
| 개념 명칭 | 관계 및 시너지 설명 |
|---|---|
| TCP 3-Way Handshake | 가용성 파괴 공격(SYN Flooding)이 악용하는 OS 네트워크 연결 수립의 근원적 아키텍처 취약점이다. |
| 스푸핑 (Spoofing) | DRDoS의 반사 공격(Reflection)을 성립시키기 위해 필수적으로 선행되어야 하는 소스 IP 변조 기술이다. |
| SYN 쿠키 (SYN Cookie) | 커널의 백로그 큐를 소진시키는 공격을 무력화하기 위해, 상태 저장 없이(Stateless) 암호학적 해시를 응답에 담아 연결을 검증하는 커널 레벨 완화 기술이다. |
| XDP (eXpress Data Path) / eBPF | 쏟아지는 DDoS 볼륨 공격 트래픽을 OS 커널 진입 전 NIC 하드웨어 단계에서 0초에 가깝게 고속으로 폐기해 버리는 차세대 패킷 필터링 구조다. |
| CDN & Scrubbing Center | 온프레미스의 물리적 파이프 한계를 극복하기 위해 트래픽을 클라우드로 흡수하여 세척(Scrub)하는 L7/클라우드 융합 아키텍처다. |
👶 어린이를 위한 3줄 비유 설명
- 내가 혼자서 문구점 카운터에 백 원짜리 동전 수천 개를 내밀며 계산을 일부러 질질 끌면 다른 친구들이 물건을 못 사게 되는데, 이게 DoS 공격(서비스 거부) 이에요.
- 해커가 전 세계 수만 명의 악당 친구들(봇넷)을 동시에 동원해서 문구점 문 앞을 완전히 가로막아 꼼짝도 못하게 만드는 게 바로 DDoS 공격이랍니다.
- 이를 막기 위해 문구점 사장님은 입구를 여러 동네(클라우드 분산)에 나눠서 만들고, 가짜 돈을 내는 사람들은 입구 경비원(SYN 쿠키/WAF)이 바로바로 쫓아내게 만들었어요!