레이트 리미팅은 웹 자산을 과도하게 사용하거나 남용하는 사용자, 봇, 애플리케이션을 차단합니다. 레이트 리미팅으로 특정 종류의 봇 공격을 막을 수 있습니다.
이 글을 읽은 후에 다음을 할 수 있습니다:
관련 콘텐츠
인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!
글 링크 복사
레이트 리미팅은 네트워크 트래픽을 제한하기 위한 전략입니다.레이트 리미팅은 예를 들어 계정에 로그인하려는 경우와 같이 특정 시간 내에 작업을 반복할 수 있는 빈도에 제한을 설정합니다.레이트 리미팅은 특정 종류의 악의적 봇 활동을 차단하는 데 도움이 될 수 있습니다.웹 서버의 부담도 줄일 수 있습니다.그러나 레이트 리미팅은 봇 활동을 관리하기 위한 완전한 솔루션이 아닙니다.
레이트 리미팅은 종종 나쁜 봇이 웹 사이트나 애플리케이션에 부정적인 영향을 미치는 것을 막기 위해 사용됩니다. 레이트 리미팅으로 완화할 수 있는 봇 공격은 다음과 같습니다.
레이트 리미팅은 또한 API 남용을 방지하는 데 중요합니다. API 남용이 반드시 악의적이거나 봇 활동으로 인한 것은 아니지만요.
레이트 리미팅은 웹 서버 자체에서 실행되지 않고 애플리케이션 내에서 실행됩니다.일반적으로 레이트 리미팅은 요청이 들어오는 IP 주소를 추적하고 각 요청 사이에 경과된 시간을 추적하는 것을 기반으로 합니다.IP 주소는 애플리케이션에서 요청하는 사람이나 대상을 식별하는 주요한 방법입니다.
레이트 리미팅 솔루션은 각 IP 주소에서 각 요청 사이의 시간을 측정하고 지정된 시간 프레임 내의 요청 수도 측정합니다. 주어진 시간 내에 단일 IP의 요청이 너무 많으면 레이트 리미팅 솔루션에서 일정 시간 동안 해당 IP 주소의 요청을 이행하지 않도록 합니다.
기본적으로 레이트 리미팅 애플리케이션은 빠른 속도로 요청하는 고유한 사용자에게 "이봐요, 속도를 줄이세요"라고 이야기하는 셈입니다. 이는 도로의 속도 제한을 초과하는 운전자를 멈춰 세우는 경찰이나 짧은 시간 내에 너무 많은 사탕을 먹지 말라고 자녀에게 말하는 부모에 비유할 수 있습니다.
IP 주소는 인터넷에 연결하는 모든 장치에 할당된 고유한 숫자(또는 IPv6에서는 영숫자) 식별자입니다. 모든 장치는 온라인 상태인 동안 고유한 IP 주소를 가지며 장치끼리 실제 주소나 전화번호 등의 메시지를 주고받을 수 있습니다. 기존(IPv4) 주소는 다음과 같은 모습입니다. 198.41.129.1
사용자 장치의 경우 IPv4에서 이동할 수 있는 IP 주소가 충분하지 않으므로 IP 주소는 일반적으로 영구적이지 않습니다. 대신 장치가 인터넷에 연결될 때 사용자의 인터넷 서비스 공급자(ISP)가 주소를 동적으로 할당합니다.
레이트 리미팅 솔루션은 어떤 장치가 너무 많은 요청을 하고 있으므로 일시적으로 차단해야 하는지를 결정하기 위한 기준으로 IP 주소를 사용할 수 있습니다.
사용자가 짧은 시간에 너무 많은 로그인 시도를 하다가 실패하면 계정이 잠길 수 있습니다. 이는 웹 사이트에 로그인 레이트 리미팅 기능이 있을 때 발생합니다.
이 예방 조치는 비밀번호를 잊어버린 사용자를 좌절시키기 위한 것이 아니라 무차별 대입 공격을 차단하기 위한 것입니다. 봇이 수천 개의 다른 비밀번호를 시도해서 올바른 비밀번호를 추측하고 계정에 침입하려고 하니까요. 봇이 한 시간에 서너 번의 로그인 시도밖에 할 수 없다면 그러한 공격은 통계적으로 성공할 가능성이 낮습니다.
로그인 페이지의 레이트 리미팅은 로그인을 시도하는 사용자의 IP 주소 또는 사용자 이름에 따라 적용할 수 있습니다. 이상적으로는 다음과 같은 이유로 이들 둘의 조합을 사용합니다.
이러한 무차별 대입 공격을 방지하려면 레이트 리미팅이 필요하므로, 비밀번호를 기억하지 못하는 사용자는 악의적 봇과 함께 레이트 리미팅의 대상이 될 수 있습니다. 사용자에게는 어떠한 형태로든 "로그인 시도 횟수가 너무 많습니다"라는 메시지가 표시되고, 지정된 시간 내에 다시 시도하라는 메시지가 표시되거나 계정이 완전히 잠겨 있다는 알림을 받을 수 있습니다.
애플리케이션 프로그래밍 인터페이스(API)는 프로그램에서 기능을 요청하는 방법입니다. API는 대부분의 사용자에게는 보이지 않지만, 애플리케이션이 제대로 작동하는 데 아주 중요합니다. 예를 들어, 레스토랑 웹 사이트의 경우 고객이 테이블 예약 서비스의 API에 의존하여 온라인으로 예약할 수 있습니다. 또는 전자 상거래 플랫폼에서는 배송 회사의 API를 통합하여 사용자에게 정확한 배송 비용을 제시할 수 있습니다.
API가 요청에 응답할 때마다 해당 API의 소유자는 계산 시간, 즉 코드를 실행하고 해당 API 요청에 대한 응답을 생성하는 데 필요한 서버 리소스에 대한 비용을 지불해야 합니다. 위의 예에서 레스토랑의 API 통합으로 인해 레스토랑 고객이 예약할 때마다 테이블 예약 서비스에서 계산 시간에 대해 비용을 지불하게 됩니다.
이러한 이유로 개발자용 API를 제공하는 모든 앱이나 서비스에는 고유한 각 사용자가 시간당 또는 하루당 수행할 수 있는 API 호출 수에 제한이 있습니다. 따라서 제3자 개발자는 API를 남용하지 않습니다.
레이트 리미팅은 또한 개발자가 API 활용에 대해 더 많은 비용을 지불하도록 동기를 부여할 수 있습니다. 종종 API 서비스에 대해 더 많은 비용을 지불하기 전에 너무 많은 API 호출을 할 수 있습니다.
API에 대한 레이트 리미팅은 악의적인 봇 공격으로부터 보호하는 데도 도움이 됩니다. 공격자는 봇을 사용하여 API를 아주 많이 반복적으로 호출하여 다른 사람이 서비스를 사용할 수 없도록 하거나 서비스를 완전히 중단시킬 수 있습니다. 이는 일종의 DoS 또는 DDoS 공격입니다.
소셜 미디어 플랫폼 레이트 리미팅은 기본적으로 API 레이트 리미팅입니다. 예를 들어 X(전에는 Twitter라고 불림)를 통합하는 모든 타사 앱에서는 시간당 특정 횟수만큼만 새로 고침하여 새 트윗이나 메시지를 찾을 수 있습니다. Instagram에는 타사 앱에 대한 유사한 제한이 있습니다. 이러한 이유로 사용자에게 "레이트 리미팅 초과" 메시지가 표시될 수 있습니다.
레이트 리미팅은 상당히 1차원적입니다. 유용하지만 아주 특정한 유형의 봇 활동만 중지할 수 있습니다.또한 레이트 리미팅은 봇에만 적용되는 것이 아니라 일반적으로 사용을 제한하기 위한 것입니다.예를 들어 Cloudflare Rate Limiting으로는 DDoS 공격, API 남용, 무차별 대입 공격으로부터 보호되지만, 다른 형태의 악의적 봇 활동이 반드시 완화되는 것은 아니며 좋은 봇과 나쁜 봇이 구별되지 않습니다.
이와는 대조적으로 봇 관리는 일반적으로 봇 활동을 전체적으로 감지할 수 있습니다. 예를 들어 Cloudflare 봇 관리에서는 머신 러닝을 이용하여 가능성 있는 봇을 식별하므로 더 다양한 봇 공격(예: 자격 증명 스터핑, 스팸 게시, 재고 사재기 등)을 차단할 수 있습니다. 소규모 조직에서도 Cloudflare Pro 요금제와 Business 요금제에서 이용할 수 있는 슈퍼 봇 차단 모드로 나쁜 봇을 차단할 수 있습니다.