View a markdown version of this page

봇 관리를 위한 클라이언트 식별 제어 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

봇 관리를 위한 클라이언트 식별 제어

정적 속성을 통해 공격 관련 트래픽을 쉽게 인식할 수 없는 경우, 탐지를 통해 요청을 하는 클라이언트를 정확하게 식별할 수 있어야 합니다. 예를 들어 속도 제한 속성이 쿠키 또는 토큰과 같은 애플리케이션별로 다르면 속도 기반 규칙이 더 효과적이고 회피하기 어려운 경우가 많습니다. 세션에 연결된 쿠키를 사용하면 봇넷 운영자가 여러 봇에서 유사한 요청 흐름을 복제할 수 없습니다.

토큰 획득은 일반적으로 클라이언트 식별에 사용됩니다. 토큰 획득을 위해 JavaScript 코드는 정보를 수집하여 서버 측에서 평가되는 토큰을 생성합니다. 평가는 클라이언트에서 JavaScript가 실행 중인지 확인하는 것부터 지문을 위한 디바이스 정보를 수집하는 것까지 다양할 수 있습니다. 토큰을 획득하려면 JavaScript SDK를 사이트 또는 애플리케이션에 통합하거나 서비스 공급자가 동적으로 삽입을 수행해야 합니다.

JavaScript 지원을 요구하면 브라우저를 에뮬레이션하려는 봇에 대한 추가 장애물이 추가됩니다. 모바일 애플리케이션과 같이 SDK가 관련된 경우 토큰 획득은 SDK 구현을 확인하고 봇이 애플리케이션의 요청을 모방하지 못하도록 합니다.

토큰을 획득하려면 연결의 클라이언트 측에서 구현된 SDKs를 사용해야 합니다. 다음 AWS WAF 기능은 브라우저용 JavaScript 기반 SDK와 모바일 디바이스용 애플리케이션 기반 SDK를 제공합니다. Bot Control, Fraud Control 계정 탈취 방지(ATP)Fraud Control 계정 생성 사기 방지(ACFP).

클라이언트 식별 기법에는 CAPTCHA, 브라우저 프로파일링, 디바이스 지문 및 TLS 지문이 포함됩니다.

CAPTCHA

컴퓨터와 인간을 구분하는 완전 자동화된 퍼블릭 Turing 테스트(CAPTCHA)는 로봇 방문자와 인간 방문자를 구분하고 웹 스크레이핑, 자격 증명 스터핑 및 스팸을 방지하는 데 사용됩니다. 구현은 다양하지만 사람이 해결할 수 있는 퍼즐이 포함되는 경우가 많습니다. CAPTCHAs 일반적인 봇에 대한 추가 방어 계층을 제공하며 봇 탐지의 오탐을 줄일 수 있습니다.

AWS WAF 를 사용하면 규칙이 규칙의 검사 기준과 일치하는 웹 요청에 대해 CAPTCHA 작업을 실행할 수 있습니다. 이 작업은 서비스에서 수집한 클라이언트 식별 정보를 평가한 결과입니다. AWS WAF 규칙은 로그인, 검색 및 양식 제출과 같이 봇이 자주 대상으로 하는 특정 리소스에 대해 CAPTCHA 문제를 해결해야 할 수 있습니다.는 중간 수단을 통해 또는 SDK를 사용하여 클라이언트 측에서 처리함으로써 CAPTCHA를 직접 제공할 AWS WAF 수 있습니다. 자세한 내용은 CAPTCHA 및 Challenge in AWS WAF을 참조하세요.

브라우저 프로파일링

브라우저 프로파일링은 대화형 브라우저를 사용하여 실제 인간을 분산된 봇 활동과 구별하기 위해 토큰 획득의 일부로 브라우저 특성을 수집하고 평가하는 방법입니다. 브라우저 작동 방식에 고유한 헤더, 헤더 순서 및 기타 요청 특성을 통해 브라우저 프로파일링을 수동적으로 수행할 수 있습니다.

토큰 획득을 사용하여 코드에서 브라우저 프로파일링을 수행할 수도 있습니다. 브라우저 프로파일링에 JavaScript를 사용하면 클라이언트가 JavaScript를 지원하는지 빠르게 확인할 수 있습니다. 이를 통해 이를 지원하지 않는 간단한 봇을 감지할 수 있습니다. 브라우저 프로파일링은 HTTP 헤더 및 JavaScript 지원 이상의 검사를 수행합니다. 브라우저 프로파일링은 봇이 웹 브라우저를 완전히 에뮬레이션하기 어렵게 만듭니다. 두 브라우저 프로파일링 옵션 모두 동일한 목표가 있습니다. 즉, 브라우저 프로파일에서 실제 브라우저의 동작 방식과 불일치를 나타내는 패턴을 찾는 것입니다.

AWS WAF 대상 봇에 대한 봇 제어는 토큰 평가의 일부로 브라우저가 자동화 또는 일관되지 않은 신호의 증거를 표시하는지 여부를 나타냅니다.는 규칙에 지정된 작업을 수행하기 위해 요청을 AWS WAF 지연시킵니다. 자세한 내용은 AWS 보안 블로그의 고급 봇 트래픽 감지 및 차단을 참조하세요.

디바이스 지문

디바이스 지문은 브라우저 프로파일링과 유사하지만 브라우저에만 국한되지 않습니다. 디바이스(모바일 디바이스 또는 웹 브라우저일 수 있음)에서 실행되는 코드는 디바이스의 세부 정보를 수집하여 백엔드 서버에 보고합니다. 세부 정보에는 메모리, CPU 유형, 운영 체제(OS) 커널 유형, OS 버전 및 가상화와 같은 시스템 속성이 포함될 수 있습니다.

디바이스 지문을 사용하여 봇이 환경을 에뮬레이션하는지 또는 자동화가 사용 중이라는 직접적인 징후가 있는지 확인할 수 있습니다. 이 외에도 디바이스 지문을 사용하여 동일한 디바이스에서 반복되는 요청을 인식할 수도 있습니다.

디바이스가 요청의 일부 특성을 변경하려고 하더라도 동일한 디바이스에서 반복된 요청을 인식하면 백엔드 시스템이 속도 제한 규칙을 적용할 수 있습니다. 디바이스 지문을 기반으로 하는 속도 제한 규칙은 일반적으로 IP 주소를 기반으로 하는 속도 제한 규칙보다 더 효과적입니다. 이를 통해 VPNs 또는 프록시 간에 순환하지만 소수의 디바이스에서 소싱되는 봇 트래픽을 완화할 수 있습니다.

애플리케이션 통합 SDKs와 함께 사용하면 대상 AWS WAF 봇에 대한 봇 제어가 클라이언트 세션 요청 동작을 집계할 수 있습니다. 이렇게 하면 둘 다 동일한 IP 주소에서 시작되더라도 합법적인 클라이언트 세션을 감지하고 악성 클라이언트 세션과 분리할 수 있습니다. 대상 AWS WAF 봇의 봇 제어에 대한 자세한 내용은 AWS 보안 블로그의 고급 봇 트래픽 감지 및 차단을 참조하세요.

TLS 지문

서명 기반 규칙이라고도 하는 TLS 지문은 봇이 많은 IP 주소에서 시작되지만 유사한 특성을 보일 때 일반적으로 사용됩니다. HTTPS를 사용하는 경우 클라이언트와 서버 측은 메시지를 교환하여 서로를 확인하고 확인합니다. 암호화 알고리즘과 세션 키를 설정합니다. 이를 TLS 핸드셰이크라고 합니다. TLS 핸드셰이크를 구현하는 방법은 많은 IP 주소에 분산된 대규모 공격을 인식하는 데 유용한 서명입니다.

TLS 지문을 사용하면 웹 서버가 높은 정확도로 웹 클라이언트의 ID를 확인할 수 있습니다. 애플리케이션 데이터 교환이 발생하기 전에 첫 번째 패킷 연결에 파라미터만 필요합니다. 이 경우 웹 클라이언트는 요청을 시작하는 애플리케이션을 나타내며, 브라우저, CLI 도구, 스크립트(봇), 기본 애플리케이션 또는 기타 클라이언트일 수 있습니다.

SSL 및 TLS 지문 접근 방식 중 하나는 JA3 지문입니다. JA3는 SSL 또는 TLS 핸드셰이크의 클라이언트 Hello 메시지에 있는 필드를 기반으로 클라이언트 연결을 지문으로 만듭니다. 이를 통해 다양한 소스 IP 주소, 포트 및 X.509 인증서에서 특정 SSL 및 TLS 클라이언트를 프로파일링할 수 있습니다.

Amazon CloudFront는 요청에 JA3 헤더 추가를 지원합니다. CloudFront-Viewer-JA3-Fingerprint 헤더에는 수신되는 최종 사용자 요청의 TLS Client Hello 패킷의 32자 해시 지문이 포함되어 있습니다. 지문은 클라이언트가 통신하는 방법에 대한 정보를 캡슐화합니다. 이 정보는 동일한 패턴을 공유하는 클라이언트를 프로파일링하는 데 사용할 수 있습니다. 오리진 요청 정책에 CloudFront-Viewer-JA3-Fingerprint 헤더를 추가하고 정책을 CloudFront 배포에 연결할 수 있습니다. 그런 다음 오리진 애플리케이션 또는 Lambda@Edge 및 CloudFront 함수에서 헤더 값을 검사할 수 있습니다. 헤더 값을 알려진 멀웨어 지문 목록과 비교하여 악성 클라이언트를 차단할 수 있습니다. 또한 헤더 값을 예상 지문 목록과 비교하여 알려진 클라이언트의 요청만 허용할 수 있습니다.