서비스 거부 (DoS)
서비스 거부(DoS, Denial of Service)는 시스템이 감당할 수 없을 만큼 많은 일을 시켜서 정상적인 사용자가 서비스를 쓰지 못하게 만드는 공격입니다. 많은 사람이 가게 입구를 가로막아 진짜 손님이 들어가지 못하는 상황과 비슷합니다. 공격자는 짧은 시간에 요청을 대량으로 보내거나, 처리에 오래 걸리는 작업을 반복하게 만듭니다. 그러면 서버의 CPU, 메모리, 네트워크 같은 자원이 바닥납니다. 서비스 거부(DoS) 중에서도 여러 대의 컴퓨터로 동시에 공격하는 경우는 분산 서비스 거부(DDoS) 공격이라고 합니다.
요청이 많지 않아도 서비스 거부는 생길 수 있습니다. 애플리케이션이 입력값을 제대로 처리하지 못하거나 특정 기능이 비효율적으로 동작하는 경우입니다. 공격이 성공하면 서비스가 느려지거나 응답하지 않고, 심하면 서버가 완전히 멈춥니다. 서비스 거부는 정보를 훔치거나 바꾸는 공격이 아닙니다. 서비스를 계속 쓸 수 있는 상태, 즉 가용성(Availability)을 직접 위협하는 공격입니다.
서비스 거부를 막으려면 애플리케이션에서 요청 크기, 처리 시간, 업로드 파일 크기 등을 적절히 제한해야 합니다. 일정 시간에 받을 수 있는 요청 수를 제한하는 방법(Rate Limiting), 연결 수 제한, 시간 제한(Timeout)도 쓸 수 있습니다. 비정상적인 트래픽을 찾아 차단하는 네트워크 장비나 웹 방화벽(WAF)을 함께 쓰는 것이 좋습니다. 애플리케이션의 예외 처리와 자원 관리를 제대로 구현하는 것도 중요합니다.
대표 사례는 다음과 같습니다. 2023년 HTTP/2 프로토콜의 ‘Rapid Reset’ 취약점을 악용한 DDoS 공격이 초당 약 4억 건의 요청으로 Google, Cloudflare 등을 공격했습니다.

