슬로로리스 공격은 웹 서버를 대상으로 하는 서비스 거부(DoS) 공격의 한 유형으로, 여러 연결을 열어둔 채 불완전한 HTTP 요청을 전송하여 서버가 연결을 닫지 못하도록 합니다. 이로 인해 서버는 도착하지 않는 나머지 요청 데이터를 기다리느라 리소스가 고갈됩니다. 슬로로리스 공격은 특히 Apache와 같이 스레드 기반 아키텍처를 사용하여 수신 요청을 처리하는 웹 서버에 효과적입니다.
Slowloris 공격은 웹 서버가 수신 HTTP 요청을 처리하는 방식을 악용합니다. 웹 브라우저와 같은 클라이언트가 서버에 요청을 보낼 때, 클라이언트는 전체 HTTP 요청을 전송하고 응답을 기대합니다. 그러나 Slowloris 공격에서는 공격자가 부분적인 HTTP 요청을 전송하고 헤더를 매우 느리게 전송하여 연결을 유지합니다. 작동 방식은 다음과 같습니다.
일부 HTTP 요청 전송: 공격자는 HTTP 요청(예: GET 메서드)의 시작 부분과 헤더를 함께 전송합니다. 요청이 완료되지 않아 서버는 추가 데이터를 기대하게 됩니다.
연결 유지: 연결을 유지하기 위해 공격자는 주기적으로 HTTP 요청의 작고 불완전한 부분을 보내 서버가 연결을 닫지 못하도록 합니다.
서버 리소스 고갈: 나머지 요청이 완료될 때까지 서버는 연결을 유지합니다. 공격자가 완료되지 않은 요청을 충분히 보내면 서버는 사용 가능한 스레드나 프로세스를 고갈시켜 정상적인 사용자에게 응답하지 않거나 속도가 느려집니다.
Slowloris 공격의 주요 장점은 최소한의 트래픽과 공격자의 비교적 낮은 리소스 소모로 심각한 서비스 중단을 유발할 수 있다는 것입니다. Slowloris를 이해하고 완화함으로써 얻을 수 있는 이점은 다음과 같습니다.
효율적인 리소스 소비: 기존의 DDoS 공격은 막대한 양의 트래픽을 생성하는 반면, Slowloris 공격은 매우 적은 데이터로 서버를 과부하시킬 수 있어 탐지 및 완화가 더욱 어렵습니다.
간단하고 은밀함: Slowloris는 실행이 비교적 간단하며 단일 머신에서 실행할 수 있습니다. 또한, 많은 트래픽을 생성하지 않기 때문에 은밀하며, 정상적인 트래픽과 구별하기 어렵습니다.
특정 웹 서버 공격: 이 공격은 특정 유형의 웹 서버(예: Apache)에 가장 효과적입니다. 기업에서 이러한 서버 구성을 사용하는 경우, Slowloris에 대한 정보를 숙지하면 사전 예방적 보호 조치를 구현하는 데 도움이 될 수 있습니다.
Slowloris 공격에 대한 방어에는 효과적이기는 하지만 다음과 같은 몇 가지 과제와 고려 사항이 있습니다.
탐지 난이도: Slowloris는 비정상적으로 많은 양의 트래픽을 생성하지 않기 때문에 정상적인 트래픽과 구별하기 어려울 수 있습니다. 관리자는 서버 장애가 발생하기 전까지 공격을 알아차리지 못할 수 있습니다.
서버 성능에 미치는 영향: 공격자 수가 적더라도 심각한 속도 저하 또는 서비스 거부를 유발할 수 있습니다. 특히 Apache와 같이 스레드 기반 모델을 사용하는 웹 서버는 공격자가 실제 데이터를 전송하지 않고 서버 리소스를 소모하기 때문에 취약합니다.
최신 시스템에서의 효과 제한: 많은 최신 서버에서 Slowloris 공격의 효과를 약화시키는 방어 시스템을 구현했습니다. 서버는 연결 유지 시간을 제한하거나 의심스러운 동작을 감지하면 연결을 자동으로 종료할 수 있습니다.
Slowloris 공격으로부터 보호하려면 다음과 같은 여러 가지 전략을 구현할 수 있습니다.
시간 초과 및 연결 제한 설정: 서버에 적절한 시간 초과 및 연결 제한을 설정하면 공격 성공 가능성을 줄이는 데 도움이 될 수 있습니다. 예를 들어, 일정 시간이 지나면 유휴 연결을 종료하도록 서버를 설정할 수 있습니다.
역방향 프록시 사용: Nginx 또는 HAProxy와 같은 역방향 프록시 서버를 웹 서버 앞에 배치하면 Slowloris 공격을 탐지하고 차단하는 데 도움이 될 수 있습니다. 이러한 프록시는 들어오는 요청을 처리하고 정상적인 트래픽은 웹 서버로 전달하는 동시에 불완전하거나 의심스러운 요청은 걸러냅니다.
속도 제한: 속도 제한은 단일 IP 주소에서 들어오는 연결 수를 제한하도록 구성하여 악의적인 행위자가 설정할 수 있는 느린 연결 수를 줄이는 데 도움이 됩니다.
침입 탐지 시스템(IDS): IDS는 네트워크 트래픽에서 HTTP 요청이 완료되지 않거나 연결 시도가 반복되는 등 비정상적인 패턴을 감지하고 서버가 과부하되기 전에 경고를 발생시킬 수 있습니다.
웹 애플리케이션 방화벽(WAF): WAF는 Slowloris 공격의 일부로 보이는 트래픽을 필터링하고 차단하는 데 도움이 될 수 있습니다. 예를 들어, 적절한 헤더가 없거나 불완전한 연결을 차단하도록 WAF를 구성할 수 있습니다.
비스레드 서버 사용: 각 요청에 대해 개별 스레드에 의존하지 않는 이벤트 기반 또는 비스레드 웹 서버(예: Nginx, LiteSpeed) 사용을 고려하세요. 이러한 서버는 많은 연결을 더 효율적으로 처리하기 때문에 Slowloris 공격에 더 강합니다.
Slowloris 공격은 다른 DDoS 공격 방식보다 빈도가 낮지만, 웹 서버 구성의 특정 취약점을 노리는 공격자에게는 여전히 효과적인 도구입니다. 공격의 작동 방식을 이해하고 적절한 완화 조치를 구현함으로써 조직은 이러한 형태의 서비스 중단에도 시스템의 복원력을 유지할 수 있습니다.