AWS 기술 블로그

AWS WAF Fraud Control을 통한 계정 생성 사기 방지하기

본 게시물은 AWS Security Blog에 게시된 “Prevent account creation fraud with AWS WAF Fraud Control – Account Creation Fraud Prevention” by David MacDonald and Geary Scherer 을 한국어로 번역한 글입니다.

위협 행위자는 가입 페이지와 로그인 페이지를 통해 프로모션과 가입 보너스를 부당하게 이용하고, 허위 리뷰를 게시하고, 멀웨어를 퍼뜨리는 등 계정 사기를 수행합니다.

2022년, AWS에서는 자격 증명 스터핑 공격, 무차별 대입 공격 및 기타 비정상적인 로그인 활동으로부터 애플리케이션의 로그인 페이지를 보호할 수 있는 AWS WAF Fraud Control – ATP (계정 탈취 방지) 기능을 출시했습니다.

이 블로그에서는 가짜 계정 생성 요청을 탐지 및 차단하여 가짜 계정 생성으로부터 애플리케이션의 가입 페이지를 보호하는데 도움이 되는 AWS WAF Fraud Control – ACFP (계정 생성 사기 방지) 기능을 소개합니다.

이제 AWS WAF 웹 접근 제어 목록 (web ACL) 에 AWS WAF 계정 생성 사기 방지와 계정 탈취 방지를 함께 사용하여 포괄적인 계정 사기 방지 기능을 확보할 수 있습니다. 이 블로그에서는 애플리케이션 가입 페이지에 AWS WAF 의 ACFP 기능을 설정하는 방법을 설명합니다.

AWS WAF계정 생성 사기 방지 기능 개요

ACFP는 비정상적인 디지털 활동에 대한 요청을 지속적으로 모니터링하고 요청 식별자, 행동 분석 및 기계 학습을 기반으로 의심스러운 요청을 자동으로 차단함으로써 계정 가입 페이지를 보호합니다.

ACFP는 다양한 기능을 사용하여 가짜 계정 생성 요청이 애플리케이션에 도달하기 전에 네트워크 에지에서 이를 탐지하고 차단합니다. 계정 생성 요청에 대한 자동 심사 프로세스는 평판 및 위험 기반의 규칙을 사용하여 도용된 자격 증명과 일회용 이메일 도메인의 남용으로부터 계정 가입 페이지를 보호합니다. ACFP는 사일런트 Challenge와 CAPTCHA Challenge를 사용하여 능동적으로 탐지를 회피하도록 설계된 정교한 봇을 식별하고 이에 대응합니다.

ACFP는 AWS 관리형 규칙 그룹입니다. 이미 AWS WAF를 사용하고 있다면 아키텍처를 변경하지 않고도 ACFP를 구성할 수 있습니다. ACFP설정 화면에서 가짜 계정 생성 요청을 탐지하는데 사용되는 매개변수로 사용자 ID, 주소, 전화번호 등을 가입 페이지 매개변수로 지정합니다.

ACFP는 세션 토큰을 사용하여 합법적인 클라이언트 세션을 합법적이지 않은 세션과 분리합니다. ACFP는 세션 토큰을 통해 계정에 가입하는 클라이언트 애플리케이션이 합법적인지 확인할 수 있습니다. AWS WAF Javascript SDK는 프런트엔드 애플리케이션이 로딩하는 중에 세션 토큰을 자동으로 생성합니다.  특히 새로 고침이 필요하지 않은 싱글  페이지 애플리케이션(SPA)의 경우AWS WAF Javascript SDK를 애플리케이션에 통합하는 것이 좋습니다.

단계별 설명

단계별 설명에서는 계정 생성 사기로부터 계정 가입 페이지를 보호하기 위해 AWS WAF 에서 ACFP 를 설정하는 방법을 설명합니다.  다음 두 가지 주요 단계에 따라 설정을 합니다.

  1. AWS WAF 콘솔에서AWS 관리형 규칙 그룹인 ACFP 규칙 그룹을 설정합니다.
  2. 애플리케이션 페이지에 AWS WAF JavaScript SDK를 추가합니다.

계정 생성 사기 방지 설정하기

첫 번째 단계에서는 새로운 web ACL을 생성하거나 기존 web ACL을 편집하여 ACFP를 설정합니다. ACFP 규칙 그룹을 이 web ACL에 추가합니다.

ACFP 규칙 그룹에서는 계정 가입 페이지 경로, 계정 생성 경로, 그리고 선택적으로 사용자 ID, 주소 및 전화번호에 매핑되는 가입 요청 필드를 제공합니다. ACFP는 이 설정을 사용하여 사기성 가입 요청을 탐지한 다음 설정된 동작에 따라 차단을 하거나, 프론트엔드 애플리케이션이 로드하는 중 Challenge또는 CAPTCHA 를 실행합니다.

ACFP설정하기

  1. AWS WAF 콘솔을 열고 다음 중 하나를 수행합니다.
    • 새로운 web ACL을 생성하려면 Create web ACL 선택합니다.
    • 기존 web ACL을 편집하려면 web ACL의 이름을 선택합니다.
  2. Rules 탭Add rules드롭다운 메뉴에서 Add managed rule groups을 선택합니다.
  3. AWS managed rule groups 의 Account creation fraud prevention 규칙 세트를 web ACL 에 추가합니다. 그런 다음 Edit 을 선택하여 규칙 구성을 편집합니다.
  4. 그림 1과 같이 Rule group configuration 에서 ACFP 규칙 그룹이 계정 생성 요청을 검사하는 데 필요한 정보를 입력합니다.
    • Registration page path 에는 애플리케이션의 계정 가입 페이지의 웹 사이트 경로를 입력합니다.
    • Account creation path에는 가입 양식에 대한 submit 엔드포인트 경로를 입력합니다.
    • Request inspection에는 Account creation path에서 지정한 엔드포인트로 전송하는  페이로드 유형(JSON또는FORM_ENCODED)을 선택합니다.
    • 그림 1: Account creation fraud prevention – Account creation paths 추가하기
  5. (선택 사항): 그림 2와 같이 계정 가입 양식에서 사용하는 필드 이름(Field names)을 입력합니다. 이를 통해 ACFP는 도난당한 것으로 간주되거나 평판이 좋지 않은 정보가 포함된 요청을 보다 정확하게 식별할 수 있습니다. 각 필드에 계정 생성과 관련된 정보를 입력합니다. 이 단계에서는JSON Pointer구문을 사용합니다.
    • 그림 2: Account creation fraud prevention – Field names – optionals 추가하기
  6. Account creation fraud prevention rules에는 계정 생성 사기의 각 범주별 동작을 검토하고 필요에 따라 웹 애플리케이션에 맞게 사용자 지정 동작을 설정합니다. 이 단계에서는 그림 3과 같이 각 범주의 규칙 동작을 기본 값으로 설정합니다. 애플리케이션 보안 요구 사항에 따라 각 범주에 대해 서로 다른 동작을 사용자 지정할 수 있습니다.
    • Allow – 보호된 리소스로의 요청을 허용합니다.
    • Block – 요청을 차단하고 HTTP 403 (Forbidden) 응답을 반환합니다.
    • Count – 탐지를 카운트하고 보호된 리소스로의 요청을 허용합니다. Count는 차단이나 Challenge를 수행하지 않고 봇 활동을 보여줍니다. 규칙을 처음 설정하는 경우에는 Allow 또는 Block 동작을 적용하기 전에 Count 를 통해 수집된 정보로 탐지 내용을 확인할 수 있습니다.
    • CAPTCHAChallenge – CAPTCHA 퍼즐과 사일런트Challenge는 토큰을 사용하여 클라이언트 세션을 추적할 수 있습니다.
    • 그림 3: Account creation fraud prevention – 각 범주별 동작 선택
  7. Save rule 을 선택하여 Configuration을 저장합니다.
  8. Add Rules 을 선택하여 ACFP rule groups을 web ACL에 추가합니다.
  9. (선택 사항)  모범 사례 섹션에 설명한 내용에 따라 web ACL에 규칙을 추가합니다.

애플리케이션 페이지에 AWS WAF JavaScript SDK를 추가하기

두 번째 단계에서는 AWS WAF JavaScript SDK를 애플리케이션 페이지에 추가합니다.

SDK는 보호된 리소스로 보내는 요청에 토큰을 삽입합니다. ACFP 탐지를 완전하게 활성화하려면 SDK 를 애플리케이션에 통합해야 합니다.

애플리케이션 페이지에 SDK를 추가하기

  1. AWS WAF 콘솔의 왼쪽 탐색 창에서 Application integration을 선택합니다.
  2. Web ACLs that are enabled for application integration 목록에서 이미 생성되어 있는 web ACL 이름을 선택합니다.
  3. JavaScript SDK 패널에서 제공된 코드 스니펫을 복사합니다. 이 코드 스니펫은  애플리케이션이 처음 로드될 때 백그라운드에서 암호화 토큰을 생성합니다.
    • 그림 4: Application integration – 애플리케이션 페이지에 JavaScript SDK Link 추가하기
  4. 애플리케이션 페이지에 코드 스니펫을 추가합니다. 예를 들어 제공된 스크립트 코드를 HTML <head> 영역에 붙여넣을 수 있습니다. ACFP의 경우 계정 가입 페이지에 코드 스니펫만 추가하면 되지만, 다른 페이지에서 계정 도용 보호 또는 Target Bot과 같은AWS WAF 관리형 규칙을 사용하는 경우 해당 페이지에도 코드 스니펫을 추가해야 합니다.
  5. 브라우저에서 애플리케이션 페이지를 로드하면서 aws-waf-token이라는 이름의 cookie가 설정되어 있는지 확인합니다.

메트릭 확인하기

web ACL을 설정하고 SDK를 애플리케이션과 통합한 후, AWS WAF의 봇 시각화 대시보드를 사용하여 계정 생성 사기의 트래픽 패턴을 확인할 수 있습니다. ACFP 규칙은 레이블에 해당하는 메트릭을 내보냅니다. 이 메트릭을 통해 ACFP 규칙 그룹 내에서 어떤 규칙이 실행되었는지 식별할 수 있습니다.  또한 레이블과 규칙 동작을 활용하면 AWS WAF 로그를 필터링하여 요청을 더 자세히 검토할 수도 있습니다.

Distribution 의 AWS WAF 메트릭 확인하기

  1. AWS WAF 콘솔의 왼쪽 탐색 창에서 Web ACLs을 선택합니다.
  2. ACFP가 활성화된 web ACL을 선택한 다음 Bot Control탭을 선택하여 메트릭을 확인합니다.
  3. Filter metrics by 드롭다운 메뉴에서 Account creation fraud prevention선택하여 web ACL의 ACFP 메트릭을 확인합니다.
    • 그림 5: 계정 생성 사기 방지 — web ACL 메트릭 확인하기

모범 사례

이 섹션에서는 ACFP 규칙 그룹 설정의 모범 사례를 공유합니다.

ACFP의 평가 대상 요청을 제한하여 비용 절감하기

ACFP는 web ACL 규칙을 우선 순위에 따라 평가하고 요청이 정의된 조건과 일치할 때 규칙과 관련된 동작을 수행합니다. 요청이 규칙 조건과 일치하고 규칙에 의해 차단이 되면 더 이상 규칙 평가가 진행되지 않습니다. ACFP 는 요청이 설정화면에서 정의한 계정 생성 URI 경로와 일치하는 경우에만 ACFP 규칙 그룹을 평가합니다.

ACFP 에 의해 평가되는 요청에는 추가 요금이 부과됩니다. ACFP 비용을 줄이려면 우선 순위가 더 높은 규칙을 사용하여 ACFP 규칙 그룹이 요청을 평가하기 전에 요청을 차단하십시오. 예를 들어, 우선 순위가 더 높은 AWS Managed Rules IP 평판 규칙 그룹을 추가하여 ACFP 에 의해 요청이 평가되기 전에 Bot 또는 기타 위협으로부터 계정 생성 요청을 차단할 수 있습니다.  ACFP 규칙 그룹보다 우선 순위가 높은 속도 기반 규칙은 단일 IP로부터 5분 동안 생성할 수 있는 요청 수를 제한하여 대량의 계정 생성 시도를 줄일 수 있습니다. 속도 기반 규칙에 대한 추가 지침은 AWS WAF의 가장 중요한 세가지 속도 기반 규칙을 참조하십시오.

AWS WAF Bot Control 규칙 그룹을 사용하는 경우 ACFP 규칙 그룹보다 요청에 대한 평가 비용이 저렴하기 때문에 ACFP 규칙 그룹보다 더 높은 우선순위를 부여하여 비용을 절감할 수 있습니다.

SDK 통합 사용하기

ACFP에는 SDK가 생성하는 토큰이 필요합니다. SDK를 사용하면 리다이렉션이나 CAPTCHA로 토큰을 요청하지 않고 토큰을 자동으로 생성할 수 있습니다. AWS WAF Bot Control과 AWS WAF Fraud control 두 규칙 그룹이 동일한 웹 ACL에 있는 경우 동일한 SDK를 사용합니다.

토큰의 기본 면역 시간(타임아웃이라고도 함) 은 5분이며, 이 시간이 지나면 AWS WAF에서 클라이언트에 다시 챌린지를 요청합니다. 싱글 페이지 애플리케이션(SPA) 에서 AWS WAF 통합 Fetch 래퍼를 사용하면 클라이언트에서 페이지를 새로 고칠 필요 없이 계정 생성 API 를 호출하기 전에 토큰 검색을 완료할 수 있습니다. 또는 통합 fetch 래퍼 대신에 getToken API 를 호출하여 토큰을 가져올 수 있습니다.

CAPTCHA JavaScript API를 이미 애플리케이션에 통합한 경우에는CAPTCHA JavaScript API를 계속 사용할 수 있습니다.

포괄적인 계정 사기 방지를 위해 ACFP와 ATP를 모두 사용하기

ACFP를 사용하고 있는 web ACL에 ATP 규칙 그룹을 활성화하여 계정 가입 페이지와 로그인 페이지에서 포괄적으로 계정 사기를 방지할 수 있습니다.

ACFP를 운영환경에 배포하기 전에 테스트하기

합법적인 사용자에게 부정적인 영향이 미치지 않도록 스테이징 또는 테스트 환경에서 ACFP 구현을 테스트하고 튜닝을 합니다. 운영환경에 규칙을 배포하기 전에 카운트 모드로 배포하여 실제 트래픽에 미치는 잠재적인 영향을 파악하는 것이 좋습니다. web ACL을 운영환경에 배포할 때는 ACFP 의 기본 규칙 그룹 동작을 사용하십시오.자세한 지침은 ACFP 테스트 및 배포를 참조하십시오.

요금 및 사용 가능 여부

ACFP는 현재 Amazon CloudFront 에서 사용 가능하며, 22개의 AWS 리전에서 사용할 수 있습니다. 요금 및 사용 가능 여부에 대한 자세한 내용은 AWS WAF 요금 페이지를 참고하십시오

결론

이 블로그에서는 ACFP를 사용하여 가짜 계정 생성으로부터 애플리케이션의 가입 페이지를 보호하는 방법을 설명하였습니다. 이제 포괄적인 계정 사기 방지를 위해 단일 web ACL에서 ACFP와 ATP 관리 규칙을 함께 사용할 수 있습니다. 자세한 내용을 알아보고 지금 시작하려면 AWS WAF 개발자 안내서를 참조하십시오.

이 블로그에 대한 피드백이 있는 경우 아래 의견 섹션에 의견을 제출하십시오. 이 블로그에 대해 궁금한 점이 있으면 AWS 보안, 신원 및 규정 준수 re:POST에서 새 스레드를 시작하거나 AWS Support에 문의하십시오.

Kimoon Choi

Kimoon Choi

AWS Korea 에서 Technical Account Manager 로 일하고 있습니다. 통신 및 미디어 분야에서 쌓은 개발 및 아키텍트 경험을 바탕으로 고객들이 AWS 클라우드를 운영하면서 직면하는 문제를 해결하기 위한 기술 컨설팅을 제공하고 AWS 서비스의 기능 개선을 위해 본사 서비스팀에 에스컬레이션하는 일을 주로 하고 있습니다. 또한 고객과 협력하여 고객이 클라우드 환경에서 운영 우수성과 비용 최적화를 통해 고객의 비지니스 목적을 달성할 수 있도록 합니다.