Slow Read DDoS Attack: 네트워크 자원 고갈시키는 교묘한 공격 기법
Slow Read DDoS Attack: 네트워크 자원 고갈시키는 교묘한 공격 기법
개요
Slow Read DDoS(Distributed Denial of Service) 공격은 전통적인 대량 트래픽 기반 DDoS 공격과 달리, 적은 양의 트래픽으로 웹 서버의 자원을 고갈시키는 교묘한 공격 기술이다. 이 공격은 HTTP 프로토콜의 특성을 악용하여 서버 연결을 장시간 유지함으로써 서비스 가용성을 저하시킨다. 특히 공격 트래픽이 합법적인 HTTP 요청과 매우 유사하여 탐지가 어렵다는 특징이 있다.
공격 메커니즘
Slow Read DDoS 공격은 다음과 같은 단계로 진행된다:
- 연결 수립: 공격자는 웹 서버에 정상적인 HTTP 연결을 설정
- 응답 요청: 서버에 큰 객체(파일, 이미지 등)를 요청
- 읽기 속도 조절: TCP 수신 윈도우 크기를 매우 작게 설정(예: 1-4 바이트)
- 연결 유지: 최소한의 데이터만 읽으면서 타임아웃을 피하기 위한 주기적 신호 전송
- 자원 고갈: 다수의 연결을 통해 서버의 연결 풀을 고갈시킴
sequenceDiagram
participant A as 공격자
participant S as 웹 서버
A->>S: TCP 연결 요청 (SYN)
S->>A: SYN-ACK
A->>S: ACK (연결 수립)
A->>S: HTTP GET 요청 (대용량 파일)
S->>A: HTTP 응답 시작
Note over A,S: TCP 윈도우 크기를 극소화 (1-4 바이트)
loop 연결 유지
S-->>A: 응답 데이터 전송 (매우 느리게 수신)
A-->>S: ACK 패킷 (최소한의 속도로)
end
Note over S: 서버 연결 풀 고갈
Note over S: 정상 사용자 연결 거부
공격 특성
- 낮은 대역폭 요구: 대량의 트래픽 없이도 효과적인 공격 가능
- 탐지 어려움: 정상적인 HTTP 요청과 유사한 패턴을 보임
- 방화벽 우회: 기존 DDoS 방어 메커니즘을 우회하는 경우가 많음
- 연결 특성: 대부분의 웹 서버가 제한된 연결 풀을 가지고 있어 취약함
- 효율성: 소수의 공격 노드로도 대규모 서비스 장애 유발 가능
주요 공격 도구
- Slowloris: 가장 널리 알려진 Slow HTTP 공격 도구로, 헤더를 완성하지 않고 연결을 유지
- R-U-Dead-Yet (RUDY): POST 요청의 본문을 매우 느리게 전송하는 공격
- SlowHTTPTest: 다양한 Slow HTTP 공격을 테스트할 수 있는 도구
- Slow Read 전용 도구: TCP 윈도우 크기를 조작하여 특화된 Slow Read 공격 수행
일반적인 DDoS와의 차이점
다음 표는 Slow Read DDoS와 전통적인 DDoS 공격의 주요 차이점을 보여준다:
특성 | Slow Read DDoS | 전통적인 DDoS |
---|---|---|
트래픽 양 | 적음 (저대역폭) | 매우 많음 (고대역폭) |
공격 복잡성 | 정교함 (프로토콜 특성 악용) | 단순함 (대량 트래픽) |
탐지 난이도 | 높음 | 상대적으로 낮음 |
필요 자원 | 적음 | 많음 |
방어 방법 | 특화된 방어 필요 | 일반적인 DDoS 방어 |
공격 지속성 | 장시간 지속 가능 | 자원에 따라 제한적 |
취약한 서버 환경
Slow Read DDoS 공격에 특히 취약한 서버 환경은 다음과 같다:
- 제한된 연결 풀: 동시 연결 수가 제한된 웹 서버
- 긴 타임아웃 설정: 연결 타임아웃이 길게 설정된 서버
- 정적 컨텐츠 서빙: 큰 파일이나 이미지를 직접 서비스하는 서버
- 리소스 제한: 메모리나 프로세싱 파워가 제한된 환경
- 부적절한 설정: 기본 설정을 그대로 사용하는 서버
실제 공격 사례
2012년, 한 금융 기관은 웹사이트에 대한 Slow Read 공격으로 인해 고객 서비스가 중단되었다. 공격자는 단 몇 대의 시스템을 이용해 서버의 모든 연결을 소진시켰고, 기존 DDoS 방어 시스템은 이를 탐지하지 못했다.
2016년, 주요 뉴스 웹사이트들이 Slow Read 공격에 의해 서비스 중단을 경험했다. 공격은 일반적인 브라우저 행동을 모방하여 방화벽을 우회했고, 상대적으로 적은 리소스로 대규모 서비스 장애를 유발했다.
2019년, 클라우드 서비스 제공업체는 분산된 Slow Read 공격으로 인해 일부 고객의 웹 애플리케이션이 수 시간 동안 접근 불가 상태가 되었다. 공격은 다양한 지역에서 발생하여 차단이 어려웠다.
방어 전략
서버 설정 최적화
graph TD
A[서버 방어 설정] --> B[연결 타임아웃 감소]
A --> C[최대 동시 연결 수 조정]
A --> D[클라이언트당 연결 제한]
A --> E[읽기 타임아웃 설정]
A --> F[TCP 버퍼 크기 조정]
A --> G[요청 처리 시간 제한]
- 타임아웃 설정: 연결 및 읽기 타임아웃을 적절히 짧게 설정 (10-30초)
- 최대 연결 제한: 서버의 최대 동시 연결 수를 적절히 설정
- 클라이언트별 제한: IP당 최대 연결 수를 제한하여 단일 출처 공격 방지
- 읽기 속도 모니터링: 비정상적으로 느린 읽기 패턴 감지 및 차단
- TCP 수신 버퍼 조정: 최소 TCP 수신 버퍼 크기 설정
아파치 웹 서버 설정 예시
# Slow Read 공격 방어를 위한 Apache 설정
Timeout 10
KeepAliveTimeout 5
MaxRequestWorkers 200
MaxConnectionsPerChild 1000
RequestReadTimeout header=5-10,body=10,minrate=500
Nginx 웹 서버 설정 예시
# Slow Read 공격 방어를 위한 Nginx 설정
client_body_timeout 10s;
client_header_timeout 10s;
send_timeout 10s;
keepalive_timeout 10s;
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_conn conn_limit_per_ip 10;
고급 방어 전략
- DDoS 완화 서비스 활용: Cloudflare, AWS Shield, Akamai 등의 전문 서비스 이용
- WAF(Web Application Firewall) 구현: Slow Read 패턴을 감지하고 차단
- 로드 밸런싱: 다중 서버로 부하 분산
- 역방향 프록시 활용: 프록시 서버가 클라이언트 연결을 처리하고 백엔드 보호
- 동적 IP 평판 시스템: 의심스러운 동작을 보이는 IP 주소 모니터링 및 차단
- 애플리케이션 계층 속도 제한: 비정상적인 요청 패턴에 대한 속도 제한 설정
모니터링 및 탐지 방법
Slow Read 공격을 효과적으로 탐지하기 위한 주요 지표:
- 연결 지속 시간: 비정상적으로 오래 지속되는 연결 모니터링
- 데이터 전송 속도: 클라이언트의 데이터 수신 속도 추적
- 연결 상태 분포: ESTABLISHED 상태의 연결 수 비율 모니터링
- TCP 윈도우 크기: 비정상적으로 작은 TCP 윈도우 크기 감지
- 서버 자원 사용률: 연결 대비 비정상적인 자원 사용 패턴 확인
# 서버의 연결 상태 모니터링 명령어 예시
netstat -n | grep ESTABLISHED | wc -l
ss -tn state ESTABLISHED | wc -l
# 느린 연결 식별
netstat -tpn | awk '{print $5, $6}' | sort | uniq -c | sort -nr | head
결론
Slow Read DDoS 공격은 적은 리소스로 큰 피해를 줄 수 있는 교묘한 공격 방식이다. 전통적인 DDoS 방어 메커니즘으로는 탐지와 방어가 어려워 특화된 대응 전략이 필요하다. 서버 설정 최적화, 전문 DDoS 방어 서비스 활용, 지속적인 모니터링을 통해 이러한 공격에 대비해야 한다.
웹 서버 관리자는 Slow Read 공격의 메커니즘을 이해하고, 서버 설정을 적절히 조정하며, 비정상적인 연결 패턴을 감지할 수 있는 시스템을 구축해야 한다. 또한 정기적인 보안 감사와 스트레스 테스트를 통해 시스템의 취약점을 사전에 파악하고 보완하는 것이 중요하다.
Keywords
DDoS, Slow Read Attack, 서비스 거부 공격, TCP 윈도우 크기, Connection Pool, 웹서버 보안, 타임아웃 설정, HTTP 공격, 네트워크 보안, 연결 고갈 공격