DDoS(분산 서비스 거부) 공격은 처리 가능한 양보다 많은 트래픽을 쏟아부어 서비스를 오프라인으로 만들려는 공격입니다. 이러한 공격이 어떻게 작동하는지, DDoS 방어가 무엇을 하고 무엇을 할 수 없는지 설명합니다.
세 가지 공격 유형
- 볼륨형 공격은 네트워크 회선 자체를 쓰레기 트래픽으로 가득 채우며 초당 기가비트로 측정됩니다. UDP 플러드와 DNS 또는 NTP 증폭이 그 예입니다.
- 프로토콜 공격은 서버의 연결 테이블을 고갈시키는 SYN 플러드처럼 연결 방식을 악용합니다.
- 애플리케이션 계층 공격은 초당 수천 건의 검색이나 로그인처럼 정상으로 보이는 요청을 대량으로 보내 CPU와 데이터베이스를 고갈시킵니다.
네트워크 용어로 앞의 둘은 3계층과 4계층(L3/L4) 공격이고 마지막은 7계층(L7)입니다.
네트워크 수준 방어의 작동 방식
- 사용자의 IP 주소로 향하는 트래픽은 먼저 제공업체의 필터링 장비를 통과합니다.
- 시스템이 정상 트래픽의 모습을 학습하고 이상 징후를 표시합니다.
- 위조된 출처나 형식이 잘못된 패킷 같은 악성 패킷은 서버에 도달하기 전에 폐기됩니다.
- 정상 트래픽은 보통 눈에 띄는 지연 없이 그대로 이어집니다.
저희 플랫폼의 모든 VPS에는 L3/L4 방어가 포함되어 있으며, 대부분의 장애를 일으키는 볼륨형 및 프로토콜 공격을 막아 줍니다.
L3/L4 방어가 막지 못하는 것
7계층 플러드는 실제 방문자처럼 보이기 때문에 네트워크 필터가 항상 구분할 수는 없습니다. 이런 공격은 애플리케이션 수준에서 처리합니다.
- 웹 사이트 앞에 CDN이나 리버스 프록시를 두고 적극적으로 캐시하세요.
- 로그인 및 검색 페이지에는 Nginx의 요청 제한(
limit_req_zone)을 사용하세요. - fail2ban을 사용해 반복 공격자를 차단하세요.
- 가능하면 정적 페이지로 제공하세요. 전송 비용이 거의 들지 않습니다.
노출 줄이기
- CDN을 쓴다면 원본 IP를 비공개로 유지하고, DNS 기록이나 이메일 헤더로 유출하지 마세요.
- 사용하지 않는 포트는 모두 닫으세요.
- 공격자가 작은 버그로 서버를 다운시키지 못하도록 소프트웨어를 최신 상태로 유지하세요.
- 문제를 일찍 알아챌 수 있도록 리소스 사용량을 모니터링하세요.
공격 중에 할 일
- 공격인지 확인하세요. 대역폭 그래프와 연결 수를 보는
ss -s를 확인하세요. - 호스트 지원팀에 연락하여 필터링을 조정하게 하세요.
- 요청 제한을 활성화하거나 사이트를 프록시 뒤에 두세요.
- 갈취 요구에 돈을 내지 마세요. 돈을 내도 반복 공격은 멈추지 않습니다.
자주 묻는 질문
DDoS 방어는 무슨 일을 하나요?
악성 트래픽 폭주를 서버에 닿기 전에 걸러 내어, 실제 방문자가 사이트에 계속 접속할 수 있게 합니다.
호스트의 DDoS 방어가 모든 공격을 막아 주나요?
아니요. 주로 대규모 네트워크 폭주를 처리합니다. 정상 요청처럼 보이는 애플리케이션 계층 공격은 본인 서버에서 요청 제한, 캐싱, 봇 규칙으로 대응해야 합니다.
작은 사이트에도 DDoS 방어가 필요한가요?
작은 사이트가 직접 표적이 되는 일은 드물지만, 스캔이나 폭주에 휘말릴 수는 있습니다. 기본적인 방어와 요청 제한은 저렴한 보험입니다.