12강 / 20강

DDoS — 문이 아니라 길을 막는 공격

가용성을 노리는 공격과 rate limit

DDoS — 문이 아니라 길을 막는 공격
어떤 공격은 훔치지 않습니다. 그냥 손님이 못 들어오게 길을 막습니다.

지금까지의 공격은 대부분 기밀성·무결성(훔치기·바꾸기)을 노렸습니다. 이번은 가용성을 노리는 공격 — DoS/DDoS 입니다. 목적이 정보 탈취가 아니라 영업 방해예요. 세일 날 경쟁사가, 혹은 협박범이 서버를 마비시키는 거죠.

1강의 CIA 를 기억하세요 — 이건 가용성 공격입니다.

공격의 층이 다르면 방어의 층도 다릅니다

L7 (요청 폭주)
정상처럼 생긴 요청을 초당 수만 번. rate limit 으로 막는다
L3/L4 (회선 폭주)
SYN flood·증폭 공격. 회선이 먼저 막혀 앞단(CDN)에서 걸러야 한다

중요한 직관 — 회선이 100Mbps 인데 10Gbps 가 쏟아지면 서버가 아무리 튼튼해도 소용없습니다. 내 서버에 도착하기 전에 막아야 하고, 그건 남의 큰 회선(Cloudflare 같은 CDN)을 빌려서 합니다.

DDoS 실험실 — 공격 유형·rate limit·CDN 을 켜고 끄며 서버 생존을 본다
불러오는 중…

rate limit — 초당 몇 개까지만

애플리케이션 계층 공격은 nginx 의 limit_req 로 막습니다. "한 IP 당 초당 N 개까지만 통과, 나머지는 429 Too Many Requests"라고 정하는 거예요. 그러면 서버는 살아 있고, 진짜 손님은 계속 쇼핑할 수 있습니다.

가장 큰 방어는 '앞단'입니다

회선을 마비시키는 대형 DDoS 는 내 서버 혼자 못 막습니다. 그래서 현실적인 방어는 Cloudflare 같은 CDN 을 앞에 세우는 것입니다. CDN 은 전 세계에 거대한 회선을 갖고 있어 공격 트래픽을 자기 선에서 흡수하고, 정상 요청만 우리 서버로 넘겨 줍니다. 우리 drson.iotok.org 도 Cloudflare 뒤에 있어요.

🤔 확인 문제
DDoS 가 훔치는 것은 무엇인가요? (CIA 중)
🤔 확인 문제
nginx rate limit 을 전체 요청 한도로 걸면 생기는 문제는?