AWS WAF Bot Control 관리형 규칙 그룹으로 차단한 봇의 요청을 허용하려면 어떻게 해야 합니까?

3분 분량
0

AWS WAF Bot Control 규칙 그룹으로 차단한 봇의 요청을 허용하려 합니다. 합법적인 봇의 요청을 허용하려면 어떻게 해야 합니까?

간략한 설명

AWS WAF Bot Control 규칙 그룹으로 차단한 봇의 요청을 허용하려면 다음을 수행합니다.

  1. AWS WAF 로그를 쿼리하여 AWS WAF 로그의 요청을 차단하는 Bot Control 규칙을 식별합니다.
  2. 카운트할 요청을 차단하는 Bot Control 규칙을 설정합니다.
  3. 제외된 규칙의 레이블에 일치시키고, 허용하고자 하는 봇을 제외한 모든 일치 요청을 차단하기 위한 사용자 지정 규칙을 생성합니다.
  4. 봇 트래픽이 허용되는지 검증합니다.

Bot Control 관리형 규칙 그룹은 AWS WAF의 IP 주소를 사용하여 봇을 확인합니다. 요청을 전달하는 동안 클라이언트 IP 주소를 보존하지 않는 프록시 또는 CDN을 통해 라우팅되는 봇을 확인한 경우, 해당 봇을 특별히 허용해야 합니다.

해결 방법

요청을 차단하는 Bot Control 규칙을 식별합니다.

AWS WAF 로그를 분석하여 필요한 봇의 요청을 차단하는 Bot Control 규칙을 식별합니다.

1.    Amazon Athena를 사용하여 AWS WAF 로그를 분석하려면, 파티션 프로젝션을 사용하여 아테나에서 AWS WAF 로그에 대한 테이블을 생성합니다. 지침은 파티션 프로젝션을 사용하여 Athena에서 AWS WAF 로그용 테이블 생성을 참조하십시오.

2.    다음 Athena 쿼리를 실행하여 Bot Control 규칙 그룹이 차단한 요청의 세부 정보를 찾습니다.

참고: waf_logs를 테이블 이름으로 변경합니다. 시간 간격 **time > now() - interval '3' day**는 지정된 시간 간격으로 변경할 수 있습니다.

WITH waf_data AS
    (SELECT from_unixtime(waf.timestamp / 1000) as time,
    waf.terminatingRuleId,
    waf.action,
    waf.httprequest.clientip as clientip,
    waf.httprequest.requestid as requestid,
    waf.httprequest.country as country,
    rulegroup.terminatingrule.ruleid as matchedRule,
labels as Labels,
         map_agg(LOWER(f.name),
         f.value) AS kv
    FROM waf_logs waf,
    UNNEST(waf.httprequest.headers)
AS t(f), UNNEST(waf.rulegrouplist) AS t(rulegroup)
    WHERE rulegroup.terminatingrule.ruleid IS NOT NULL
    GROUP BY 1, 2, 3, 4, 5, 6, 7,8)
SELECT waf_data.time,
       waf_data.action,
       waf_data.terminatingRuleId,
       waf_data.matchedRule,
       waf_data.kv['user-agent'] as UserAgent,
waf_data.clientip,
       waf_data.country,
       waf_data.Labels
FROM waf_data
Where terminatingRuleId='AWS-AWSManagedRulesBotControlRuleSet' and time > now() - interval '3' day
ORDER BY time
DESC

지정된 시간 범위에 대한 레코드를 필터링하는 Amazon Athena 쿼리 샘플은 AWS WAF 로그에 대한 예제 쿼리를 참조하십시오.

3.    (선택 사항) 검색 범위를 더 좁히려면 UserAgent에 대한 추가 필터를 AND 연산자를 사용하여 Where 절에 추가합니다. WAF 로그의 필드에 대한 설명은 로그 필드를 참조하십시오. 예를 들어 필터 **kv['user-agent'] like 'Postman%'**를 추가하여 결과 범위를 좁힐 수 있습니다.

4.    matchedRule 열을 확인하여 요청을 차단하는 규칙을 식별합니다. 참고: Bot Control 규칙에 대한 자세한 내용은 AWS WAF Bot Control 규칙 그룹을 참조하십시오.

카운트할 요청을 차단하는 Bot Control 규칙을 설정합니다.

Bot Control 규칙 그룹을 편집하여 카운트할 요청을 차단하는 규칙을 설정합니다. 규칙을 카운트로 설정하려면 규칙 그룹에서 카운트할 규칙 동작 설정을 참조하십시오. 이렇게 하면 규칙이 일치하는 요청에 레이블을 적용하고, 차단되지 않은 봇을 허용할 수 있습니다.

제외된 규칙의 레이블에 일치시키고, 허용하고자 하는 봇을 제외한 모든 일치 요청을 차단하기 위한 사용자 지정 규칙을 생성

요청을 차단하는 규칙 레이블을 기반으로 웹 ACL에 레이블 일치 규칙을 추가합니다. 레이블 일치 규칙은 Bot Control 관리형 규칙 그룹 뒤에 와야 합니다. Bot Control 관리형 규칙 그룹 레이블에 대한 자세한 내용은 AWS WAF Bot Control 규칙 그룹을 참조하십시오.

범주 레이블이 있는 규칙이 요청을 차단하는 경우

특정 차단된 봇을 허용하도록 사용자 지정 규칙을 구성합니다. 중요: 규칙 구성의 봇 범주 및 봇 이름 레이블을 Athena 쿼리 결과의 봇 범주 및 봇 이름 레이블로 변경합니다.

다른 모든 규칙 레이블의 경우

차단된 사용자 에이전트에 대한 예외 생성에 사용자 지정 규칙을 생성합니다.
중요: 봇 신호 레이블 및 UserAgent 값(규칙 구성의 필드 SearchString에 위치)을 봇 신호 레이블 및 UserAgent 값(Athena 쿼리 결과의 레이블UserAgent 열에 위치)으로 변경합니다.

봇 트래픽이 허용되는지 확인

AWS WAF 로그를 다시 확인하여 봇이 현재 허용되고 있는지 확인합니다. 봇이 여전히 차단된 경우 이전 프로세스를 반복하여 요청을 차단하는 추가 규칙을 식별합니다.


관련 정보

AWS WAF Bot Control를 사용한 오탐지

AWS WAF Bot Control 예제

AWS 공식
AWS 공식업데이트됨 2년 전