DDoS 공격은 오늘날 인터넷 보안의 주요 관심사입니다. DDoS 공격이 작동하는 방식과 이러한 공격을 중지할 수 있는 방법에 대해 자세히 알아보십시오.
이 글을 읽은 후에 다음을 할 수 있습니다:
관련 콘텐츠
인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!
글 링크 복사
분산 서비스 거부(DDoS) 공격은 인터넷 트래픽의 폭주로 공격 대상이나 그 주변 인프라를 압도하여 공격 대상 서버나 서비스, 네트워크의 정상적인 트래픽을 방해하는 악의적인 시도를 말합니다.
DDoS 공격은 보안이 침해된 다수의 시스템을 공격 트래픽의 원천으로 활용하여 효과를 달성합니다. 여기에 활용되는 기기에는 컴퓨터 및 IoT 장치 등의 기타 네트워크 자원이 포함될 수 있습니다.
상위 수준에서 보았을 때 DDoS 공격은 예상치 못한 교통 체증이 고속도로를 틀어막아 평상시의 트래픽이 목적지에 도달하지 못하게 되는 것과도 비슷합니다.
DDoS 공격은 인터넷에 연결된 컴퓨터들의 네트워크를 통해 수행됩니다.
이러한 네트워크는 맬웨어에 감염된 컴퓨터 및 기타 기기(예: IoT 장치)들로 이루어져 있으며 공격자는 맬웨어를 이용하여 이를 원격으로 제어할 수 있습니다. 제어되는 개별 기기는 봇(bot)(또는 좀비)이라고 지칭되며 봇으로 이루어진 그룹은 봇넷(botnet)이라고 부릅니다.
봇넷이 구성되고 나면 공격자는 각각의 봇에게 원격으로 명령을 전송함으로써 공격을 지시할 수 있습니다.
봇넷이 피해자의 서버나 네트워크를 공격 대상으로 삼으면 각 봇은 대상의 IP 주소로 요청을 보내고 이는 해당 서버나 네트워크에 잠재적 과부하를 일으켜 정상적인 트래픽에 대한 서비스 거부(denial-of-service)로까지 이어지게 됩니다.
각 봇은 합법적인 인터넷 장치이기 때문에 공격 트래픽을 정상적인 트래픽과 분리하는 것이 어려울 수 있습니다.
DDoS 공격 시 가장 뚜렷하게 나타나는 증상은 사이트 또는 서비스가 갑자기 느려지거나 사용이 제한되는 것입니다. 그러나 정상적인 트래픽 급증과 같은 여러 원인에 의해 유사한 성능상의 문제가 발생하는 경우도 있으므로 대개는 추가 조사가 필요합니다. 트래픽 분석 도구를 사용하면 다음과 같이 명백한 DDoS 공격의 징후를 발견할 수 있습니다.
DDoS 공격의 보다 구체적인 다른 징후들도 있으며 이는 공격의 유형에 따라 달라집니다.
네트워크 연결의 다양한 구성요소를 대상으로 하는 여러 가지 유형의 DDoS 공격이 있습니다. 서로 다른 DDoS 공격들의 작동 방식을 이해하려면 먼저 네트워크 연결의 바탕이 되는 요소를 알아야 합니다.
인터넷상의 네트워크 연결은 상이한 많은 구성요소 또는 “계층(layer)”으로 구성되어 있습니다. 집을 지을 때 기초부터 쌓아올리는 것과 마찬가지로 모델의 각 계층에는 서로 다른 용도가 부여됩니다.
아래의 OSI 모델은 7개의 상이한 계층에서의 네트워크 연결을 기술하는 개념적인 프레임워크입니다.
거의 모든 DDoS 공격에는 대상 장치나 네트워크를 트래픽으로 압도하는 것이 포함되지만, 그러한 공격은 세 가지 범주로 나눌 수 있습니다. 공격자는 서로 다른 공격 벡터를 하나 이상 사용하거나 상대가 취한 보호조치에 대응하여 공격 벡터를 번갈아가며 사용하기도 합니다.
계층 7 DDoS 공격(OSI 모델의 계층 7 참조)이라고도 불리는 이러한 공격의 목표는 대상의 리소스를 소진함으로써 서비스 거부 상태를 만드는 것입니다.
서버 내에서 웹 페이지가 생성되고 HTTP 요청에 응답하여 웹 페이지의 전송이 이루어지는 계층을 표적으로 공격이 이루어집니다. 단일 HTTP 요청을 클라이언트 측에서 실행할 때는 계산적으로 저렴하지만, 서버가 웹 페이지를 생성하려면 종종 여러 파일을 로드하고 데이터베이스 쿼리를 실행해야 하기 때문에 대상 서버가 이에 응답하는 데 비용이 많이 들 수 있습니다.
악의적 트래픽과 정상적인 트래픽은 구별하기 어려울 수 있기 때문에 계층 7 공격을 방어하기는 까다롭습니다.
이 공격은 한 번에 많은 컴퓨터에서 웹 브라우저의 새로 고침을 계속해서 누르는 것과 유사하며 많은 수의 HTTP 요청이 서버를 폭주시켜 서비스 거부를 초래합니다.
이러한 유형의 공격 범위는 단순한 것부터 복잡한 것까지 다양합니다.
간단하게 구현한 경우 동일한 공격 IP 주소, 참조 페이지, 사용자 에이전트를 갖는 하나의 URL에 접속하기도 합니다. 복잡하게 구성한 경우에는 다수의 공격 IP 주소를 이용하여 무작위 참조 페이지와 사용자 에이전트를 이용해 무작위 URL을 대상으로 하는 경우도 있습니다.
상태 고갈 공격(state-exhaustion attack)이라고도 알려진 프로토콜 공격은 서버 내 리소스 및/또는 방화벽이나 부하 분산장치 등의 네트워크 장비 리소스를 과도하게 소비하여 서비스 중단을 유발합니다.
프로토콜 공격은 프로토콜 스택의 계층 3 및 계층 4에 존재하는 약점을 활용하여 표적에 액세스할 수 없게 만듭니다.
SYN 폭주는 매장으로부터 상품 요청을 받는 창고의 작업자에 비유할 수 있습니다.
작업자는 매장의 요청을 받고 상품을 가지러 가고 그런 다음 확인을 기다렸다가 상품을 매장으로 가지고 옵니다. 그런 후에 작업자는 확인되지 않은 상품 요청을 더 많이 받게 되며 결국 더 이상 상품을 운반할 수 없게 되고 그 요구에 압도되어 요청에 응답하지 못하게 됩니다.
이러한 공격은 두 대의 컴퓨터가 네트워크 연결을 시작할 때의 통신 순서를 의미하는 TCP 핸드셰이크를 악용한 것으로서 이 때 스푸핑 소스 IP 주소를 가진 대량의 TCP "초기 연결 요청" SYN 패킷이 공격 대상에 전송됩니다.
표적 컴퓨터는 각 연결 요청에 응답한 다음 핸드셰이크의 마지막 단계를 기다립니다. 이 단계는 절대 발생하지 않으므로 프로세스에서 표적의 리소스가 소진됩니다.
이러한 공격은 표적과 대용량의 인터넷 간에 이용 가능한 대역폭을 모두 소비함으로써 체증을 만들어냅니다. 증폭의 형태를 쓰거나 봇넷의 요청처럼 대규모 트래픽을 생성하기 위한 다른 수단을 이용하여 많은 양의 데이터가 표적으로 전송됩니다.
DNS 증폭은 마치 누군가가 식당에 전화를 걸어 "메뉴상의 모든 음식을 하나씩 주문할 테니 저에게 다시 전화를 걸어 주문 내용 전체를 확인하세요"라고 말하는 것과 같으며 이때의 회신 번호는 실제로는 피해자의 번호입니다. 아주 적은 노력만으로도 대량의 응답이 생성되어 피해자에게 전송되게 됩니다.
스푸핑된 IP 주소(피해자의 IP 주소)를 이용하여 개방형 DNS 서버에 요청을 보내도록 함으로써 대상 IP 주소는 서버로부터 응답을 받게 됩니다.
DDoS 공격을 완화할 때 중점적으로 고려할 사항은 공격 트래픽과 정상적인 트래픽을 구분하는 것입니다.
예를 들어 신제품 출시로 열성적인 고객들이 회사의 웹 사이트로 몰려든 경우라면 모든 트래픽을 차단하는 것은 잘못된 처사입니다. 이 때 이미 알려진 공격자로부터의 트래픽 급증이 발생한다면 공격을 경감하기 위한 노력이 필요할 것입니다.
여기서 어려운 점은 실제 고객과 공격 트래픽을 구분하는 작업입니다.
현재 인터넷에서 DDoS 공격 트래픽은 여러 형태로 나타납니다. 스푸핑되지 않은 단일 원점 공격에서부터 복잡한 적응형 멀티벡터 공격에 이르기까지 다양한 트래픽 설계가 가능합니다.
여러 가지 방법으로 표적을 압도하기 위해 다중 벡터 DDoS 공격은 상이한 공격 경로를 사용하여 하나의 궤적에 대한 완화 노력을 방해할 가능성이 있습니다.
계층 7을 노리는 HTTP 폭주와 결합된 계층 3/4를 노리는 DNS 증폭과 같은 프로토콜 스택의 여러 계층을 동시에 표적으로 삼는 공격이 다중 벡터 DDoS의 예입니다.
다중 벡터 DDoS 공격을 완화하려면 다양한 궤적에 대응할 수 있는 다양한 전략이 필요합니다.
일반적으로 공격이 복잡할수록 해당 공격 트래픽을 정상적인 트래픽과 구분하기가 어려울 가능성이 큽니다. 공격자의 목표는 최대한 주변에 섞여들면서 공격 완화를 위한 노력을 최대한 비효율적으로 만드는 것입니다.
트래픽을 무차별적으로 삭제하거나 제한하는 완화 시도는 오히려 좋은 트래픽을 몰아낼 수 있으며 그러면 공격자는 이러한 대응책을 우회하도록 공격을 수정할 수도 있습니다. 복잡한 파괴 시도를 극복하는 데는 계층화된 솔루션이 가장 효과적입니다.
거의 모든 네트워크 관리자가 이용할 수 있는 솔루션 중 하나는 블랙홀 경로를 만든 다음 트래픽을 해당 경로로 집중시키는 것입니다. 간단한 형태로 특별한 제한 기준 없이 블랙홀 필터링을 구현하면 정상적인 트래픽과 악의적 네트워크 트래픽 모두가 null 경로 또는 블랙홀로 라우팅된 다음 네트워크에서 삭제됩니다.
인터넷 자산에 DDoS 공격이 발생하면 해당 자산의 인터넷 서비스 공급자(ISP)는 방어의 일환으로 사이트 내 모든 트래픽을 블랙홀로 보낼 수 있습니다. 그런데 이는 사실상 공격자가 원했던 결과, 즉 네트워크 액세스의 제한을 초래하므로 이상적인 솔루션이 아닙니다.
서버가 특정 시간대에 수락할 요청 수를 제한하는 것 역시 서비스 거부 공격을 완화할 수 있는 한 가지 방법입니다.
레이트 리미팅을 이용하면 웹 스크래퍼가 콘텐츠를 탈취하는 것을 늦추거나 무차별 암호 대입 로그인 시도를 완화하는 데는 유용할 수 있지만, 이것만으로는 복잡한 DDoS 공격을 효과적으로 처리하기에 부족합니다.
그럼에도 불구하고 레이트 리미팅은 효과적인 DDoS 완화 전략에서 유용한 요소입니다. Cloudflare의 레이트 리미팅에 대해 알아보세요
웹 애플리케이션 방화벽(WAF)은 계층 7 DDoS 공격을 완화하는 데 도움을 줄 수 있는 도구입니다. 인터넷과 원본 서버 사이에 WAF를 배치하면 WAF가 리버스 프록시 역할을 수행하므로 특정 유형의 악의적 트래픽으로부터 대상 서버를 보호할 수 있게 됩니다.
DDoS 도구의 식별 시 사용되는 일련의 규칙에 기반하여 요청을 필터링함으로써 계층 7 공격을 둔화시킬 수 있습니다. WAF의 효과를 결정하는 핵심 가치 중 하나는 공격에 대응하여 사용자 설정 규칙을 신속하게 구현하는 능력입니다. Cloudflare의 WAF에 대해 알아보세요.
이 완화 접근 방식은 Anycast 네트워크를 사용하여 트래픽이 네트워크에 흡수될 정도까지 분산된 서버 네트워크 전반에서 공격 트래픽을 흩어지게 합니다.
급류하는 강을 하류의 분리된 작은 물길로 보내는 것과 같이 이 접근 방식은 분산형 공격 트래픽의 영향을 관리 가능한 수준까지 널리 퍼뜨려 파괴적인 기능을 약화시킵니다.
DDoS 공격을 완화하는 Anycast 네트워크의 신뢰성은 공격 규모와 네트워크의 효율에 따라 달라집니다. Cloudflare가 구현하는 DDoS 완화의 중요한 점은 Anycast 분산 네트워크를 사용한다는 것입니다.
Cloudflare는 321 Tbps의 네트워크를 보유 중이며 이는 현재까지 기록된 최대의 DDoS 공격보다 십여 배 큰 규모입니다.
만약 현재 공격을 받고 계신 경우 압박감에서 벗어나기 위해 취할 수 있는 조치들이 있습니다. Cloudflare를 이미 사용하고 계시다면 이러한 단계를 따라 공격을 완화할 수 있습니다.
Cloudflare에서 구현하는 DDoS 방어는 가능한 많은 공격 벡터를 완화하기 위해 다각적인 방어를 합니다. Cloudflare의 DDoS 방어와 작동 방식에 관해 더 자세히 알아보세요.