Slow Read DDoS 공격과 웹 서버 연결 고갈 방어

Slow Read DDoS의 TCP 윈도우 악용 방식, 취약한 웹 서버 환경, 타임아웃·연결 제한·모니터링 기반 방어 전략을 정리한다.

2026-08-14 · 최초 발행 2025-06-28

적은 트래픽으로 연결 풀을 점유하는 공격

Slow Read DDoS는 대량 패킷을 쏟아붓는 방식과 다르다. 공격자는 HTTP 연결을 정상적으로 맺은 뒤 서버 응답을 매우 느리게 읽어 서버 측 연결을 오래 붙잡아 둔다. 결과적으로 제한된 연결 풀이 고갈되고, 정상 사용자는 새 연결을 받지 못할 수 있다.

트래픽 양 자체는 적지만 요청 형태가 일반 HTTP 요청과 유사하다. 이 때문에 전통적인 대역폭 중심 DDoS 방어만으로는 구분하기 어려운 경우가 있다.

TCP 수신 윈도우를 작게 유지하는 방식

공격자는 먼저 웹 서버에 연결하고 큰 파일이나 이미지처럼 응답량이 큰 객체를 요청한다. 이후 TCP 수신 윈도우 크기를 매우 작게 설정해 서버가 한 번에 보낼 수 있는 데이터를 제한한다. 최소한의 데이터를 읽고 주기적으로 신호를 보내 타임아웃을 피하면서 연결을 유지한다.

웹 서버공격자웹 서버공격자TCP 윈도우 크기를 극소화 (1-4 바이트)loop[연결 유지]서버 연결 풀 고갈정상 사용자 연결 거부TCP 연결 요청 (SYN)SYN-ACKACK (연결 수립)HTTP GET 요청 (대용량 파일)HTTP 응답 시작응답 데이터 전송 (매우 느리게 수신)ACK 패킷 (최소한의 속도로)

다수의 연결이 이 상태로 유지되면 서버는 연결 처리 자원을 공격 연결에 사용하게 된다.

일반적인 대량 트래픽 DDoS와 다른 점

특성 Slow Read DDoS 전통적인 DDoS
트래픽 양 적음 (저대역폭) 매우 많음 (고대역폭)
공격 복잡성 정교함 (프로토콜 특성 악용) 단순함 (대량 트래픽)
탐지 난이도 높음 상대적으로 낮음
필요 자원 적음 많음
방어 방법 특화된 방어 필요 일반적인 DDoS 방어
공격 지속성 장시간 지속 가능 자원에 따라 제한적

Slowloris는 헤더를 완성하지 않은 채 연결을 유지하는 Slow HTTP 공격 도구다. R-U-Dead-Yet(RUDY)는 POST 요청 본문을 매우 느리게 전송한다. SlowHTTPTest는 여러 Slow HTTP 공격을 테스트하는 데 사용되며, Slow Read 전용 도구는 TCP 윈도우 크기 조작에 초점을 둔다.

영향을 받기 쉬운 서버 조건

동시 연결 수가 제한된 웹 서버는 연결 점유 공격에 취약할 수 있다. 연결 타임아웃이 길거나 큰 파일과 이미지를 직접 서비스하는 구성도 공격 영향을 키운다. 메모리나 처리 성능이 제한된 환경, 기본 설정을 그대로 사용하는 서버 역시 점검 대상이다.

2012년에는 한 금융 기관이 Slow Read 공격으로 고객 서비스 중단을 겪었다. 공격자는 단 몇 대의 시스템으로 서버의 모든 연결을 소진시켰고, 기존 DDoS 방어 시스템은 이를 탐지하지 못했다.

2016년에는 주요 뉴스 웹사이트들이 Slow Read 공격으로 서비스 중단을 경험했다. 일반 브라우저 동작을 모방한 공격이 방화벽을 우회했고, 상대적으로 적은 리소스로 대규모 장애를 유발했다.

2019년에는 클라우드 서비스 제공업체가 분산된 Slow Read 공격으로 일부 고객 웹 애플리케이션의 접근 불가 상태를 수 시간 동안 겪었다. 공격이 다양한 지역에서 발생해 차단이 어려웠다.

연결 유지 시간을 통제하는 서버 설정

연결 및 읽기 타임아웃을 적절히 짧게 설정하는 것이 출발점이다. 원본 설정 범위에서는 10-30초가 제시된다. 최대 동시 연결 수를 조정하고, IP당 연결 수를 제한해 단일 출처의 연결 점유를 줄일 수 있다.

느린 읽기 패턴을 감시하고 비정상 연결을 차단하는 정책도 필요하다. TCP 수신 버퍼의 최소 크기를 설정하는 방법 역시 고려할 수 있다.

Apache 설정 예시

# 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 완화 서비스, WAF, 로드 밸런싱, 역방향 프록시는 서버가 공격 연결을 직접 감당하는 부담을 줄이는 수단이다. 의심스러운 동작을 보이는 IP를 추적하는 동적 평판 시스템과 애플리케이션 계층의 속도 제한도 함께 사용할 수 있다.

연결 상태와 전송 속도로 탐지하기

탐지 시에는 오래 지속되는 연결, 클라이언트별 데이터 수신 속도, ESTABLISHED 상태 연결 수의 비율을 확인한다. 비정상적으로 작은 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 대응은 공격 메커니즘을 이해한 뒤 서버의 연결 관리 정책과 관측 체계를 함께 조정하는 문제다. 설정 점검, 전문 완화 서비스 활용, 지속적인 연결 패턴 모니터링을 통해 서비스 가용성 저하 가능성을 낮출 수 있다.

DDoSSlow Read웹 서버 보안TCP네트워크 보안