HTTP GET Flooding

HTTP GET Flooding웹 서버를 대상으로 대량의 HTTP GET 요청을 보내 서비스를 마비시키는 DoS/DDoS 공격이다. 핵심은 정상 요청처럼 보이는 GET 요청을 과도하게 발생시켜 서버 자원을 소모시킨다는 점이다.

일반적인 웹 서비스에서는 사용자가 페이지를 요청하면 브라우저가 HTTP GET 요청을 보낸다. HTTP GET Flooding 공격에서는 이 정상 동작을 악용해, 공격자가 수천~수만 개의 GET 요청을 매우 짧은 시간에 반복적으로 전송한다. 요청 자체는 정상 형식이기 때문에, 단순 패킷 필터링으로는 공격과 정상 사용자를 구분하기 어렵다.

이 공격의 특징은 네트워크 계층이 아니라 애플리케이션 계층(L7)을 직접 노린다는 것이다. 웹 서버는 각 GET 요청마다 세션 처리, 스크립트 실행, DB 조회, 파일 로딩 같은 작업을 수행하게 되는데, 이 과정에서 CPU, 메모리, 스레드, DB 커넥션 같은 자원이 빠르게 고갈된다. 그 결과 정상 사용자는 웹 페이지에 접속할 수 없게 된다.

HTTP GET Flooding의 주요 특징을 정리하면 다음과 같다.
HTTP GET 요청을 대량으로 전송한다.
정상 웹 요청과 구분이 어렵다.
웹 서버의 CPU, 메모리, 스레드 자원을 고갈시킨다.
애플리케이션 계층 기반 DoS/DDoS 공격이다.

보안 측면에서 이 공격은 단순한 SYN Flood 같은 네트워크 공격보다 대응이 까다롭다. 방화벽만으로는 막기 어렵고, 웹 방화벽(WAF), 요청 빈도 제한(Rate Limiting), CAPTCHA, 비정상 트래픽 분석 같은 애플리케이션 레벨 대응이 필요하다.

핵심 포인트는 다음이다.
HTTP GET Flooding은 L7 공격이다.
정상 요청 형태를 사용한다.
웹 서버 자원 고갈을 유발한다.
대응 기술로 WAF가 자주 언급된다.