Signal Sciences를 통한 간단한 악성 봇 완화

인터넷에는 수많은 봇 활동이 있습니다. 트래픽이 많은 웹 사이트를 방어하는 임무를 맡은 사람이라면 누구나 이를 잘 알고 있을 것입니다. 일부 봇은 훌륭하고 바람직합니다. 검색 엔진 크롤러를 생각해 보십시오. API를 호출하거나 사이트 가용성을 모니터링하는 스크립트와 같은 일부 봇은 무해합니다. 그러나 종종 봇은 성능에 영향을 미치거나 완전히 악의적일 수 있습니다. 이들은 쉽게 차단하고 더 이상 처리하지 않기를 원하는 "나쁜" 봇입니다. 이 게시물에서는 Signal Sciences 웹 애플리케이션 방화벽(WAF)을 사용하여 꽤 좋은 나쁜 봇 완화를 구현하는 단순한 자동화 접근 방식을 공유하고 싶습니다.
봇 유형 정의
자세히 알아보기 전에 봇과 불량 봇을 정의하는 방법을 알려드리고자 합니다. 봇은 최신 웹 브라우저를 운영하는 사람이 아닌 사이트에 요청을 보내는 클라이언트입니다. 따라서 봇은 자율적으로 작동하거나 사람이 호출하는 스크립트, 명령줄 도구, 프로그램, 맬웨어 등입니다. 봇을 나쁘게 만드는 것은 그 행동입니다. 예를 들어 악의적인 페이로드를 전송하거나 개인 디렉터리 및 파일을 검색하고 있습니까?
예시 봇 요청:

불량 봇 요청 예:
봇 식별
첫 번째 단계는 사이트를 탐색, 크롤링 또는 파고들 수 있는 모든 봇을 식별하는 것입니다. 간단하게 유지하면서 사용자 에이전트 문자열 길이에 따라 봇을 식별하는 매우 기본적인 방법을 사용할 수 있습니다. 사용자 에이전트 문자열은 서버와 네트워크 피어가 식별할 수 있도록 클라이언트가 설정한 요청 헤더입니다. 최신 브라우저를 사용하는 일반 사용자는 항상 x 라는 최소 사용자 에이전트 문자열 길이를 갖습니다 . 봇은 사용자 에이전트 문자열을 스푸핑할 수 있지만 대부분의 봇은 그렇지 않습니다. 사용자 에이전트 문자열은 브라우저 사용자 에이전트 문자열보다 훨씬 짧은 경향이 있습니다. 결과적으로 우리는 x 빼기 n 이 인간이 아니라 봇이라고 가정할 수 있습니다. x 와 n 이 무엇이어야 하는지에 대한 임계값을 결정할 수 있습니다.
사용자 에이전트 문자열 목록을 찾을 수 있는 다양한 소스가 인터넷에 있습니다. 다음은 이러한 소스 중 하나의 예입니다.
- https://useragentstring.com/pages/Chrome/
- https://useragentstring.com/pages/Firefox/
- https://useragentstring.com/pages/Edge/

이 규칙과 신호가 있으면 시간이 지남에 따라 생성되는 데이터를 검토할 가치가 있습니다. 이전에 알지 못했던 흥미로운 트래픽에 대한 가시성을 제공할 수 있습니다.
Bot 규칙의 결과 예:
개념에 익숙하지 않은 경우 회사 수준 규칙 및 사이트 수준 규칙에 대한 빠른 설명을 제공합니다. 회사 수준에서 적용되는 규칙은 Signal Sciences 에이전트를 실행하는 모든 사이트에서 구현될 수 있습니다. 사이트 수준에서 적용되는 규칙은 해당 특정 사이트의 에이전트에서만 구현됩니다. 사용자 환경에서 가장 적합한 옵션을 사용하십시오.
불량 봇 식별
이제 봇을 식별할 수 있으므로 어떻게 행동하고 있습니까? Signal Sciences에서 우리는 봇에 대한 나쁜 행동을 정의하기 위해 또 다른 간단한 회사 수준을 만들 수 있습니다. 이 규칙의 첫 번째 조건은 봇 신호를 찾고 두 번째 조건은 공격, 이상 또는 사용자 지정 신호를 찾습니다. 시나리오에 가장 적합한 신호를 포함하도록 규칙을 쉽게 조정할 수 있습니다. 아래 예에서는 위협 인텔 데이터와 일치하는 IP 목록도 포함했습니다. 규칙을 요약하면, 봇이고 나쁜 일을 여러 번 하면 나쁜 봇이며 "나쁜 봇" 신호를 요청에 추가합니다.

Bad Bot 규칙의 결과 예:
시행
마지막 단계는 속도 제한 또는 차단 규칙과 같은 적용 규칙을 만드는 것입니다. 속도 제한 규칙은 사이트 수준에서 적용됩니다. 차단 규칙은 회사 수준 또는 사이트 수준에서 구현될 수 있으며 Bad Bot 신호로 모든 트래픽을 차단합니다. 이 수준의 공격적인 차단에 주의하십시오. 차단 규칙이 합법적인 프로덕션 트래픽에 영향을 미치지 않는다는 확신을 얻으려면 시간이 지남에 따라 데이터를 모니터링하는 것이 좋습니다. 또는 속도 제한 규칙은 불량 봇 트래픽을 차단하기 전에 허용 수준을 결정할 수 있는 유연성을 제공합니다. 아래 예에서 비율 제한 규칙 조건은 불량 봇 신호가 있는 모든 요청에 있으며 1분 이내에 10개의 불량 봇 신호를 본 후 차단을 시작합니다. 차단 결정은 5분 동안 활성화됩니다. 카운트 임계값 및 작업 기간은 원하는 값으로 쉽게 수정할 수 있습니다.
결론
봇 탐지를 위해 사용자 에이전트 문자열 길이를 활용하는 것은 간단한 접근 방식이며 제 경험상 대부분의 봇 트래픽을 식별하는 데 효과적입니다. 시나리오에 대한 사용자 에이전트 문자열 길이를 결정하고, 잘못된 동작을 식별하고, 속도 제한을 적용하면 원하지 않는 봇 트래픽을 완화하기 시작합니다. Signal Sciences는 규칙 기능을 사용하여 이 접근 방식을 쉽게 구현할 수 있도록 합니다. 그러나 Signal Sciences가 없는 경우 이 간단한 접근 방식을 통해 봇, 불량 봇 및 집행을 식별하는 데 사용할 수 있는 도구의 기능을 탐색할 가치가 있습니다.