원문 캡처 · businesscloud.co.uk
원문 캡처 · businesscloud.co.uk

맞춤형 소프트웨어 개발사 Belitsoft의 최고기술책임자이자 파트너인 드미트리 바라이스후크(Dmitry Baraishuk)는 프로젝트가 스프린트 한 번 더 필요한 상황인지, 외부의 구조 지원이 필요한 상황인지 가늠할 다섯 가지 신호를 소개한다. 그는 봇 공격으로 서비스가 중단된 고객사의 사례를 들어, 도구 도입만으로 해결되지 않는 문제와 대응 과정을 설명한다.

구조가 필요하다는 다섯 가지 신호

Belitsoft 고객사 한 곳은 20명 넘는 팀을 둔 디지털 미디어 회사로, 15년 넘게 .NET 웹 애플리케이션 기반의 B2B 데이터베이스 플랫폼을 운영해왔다. 자사 웹사이트로 들어오는 잠재 고객이 사업에 중요했지만, 월초 일요일부터 봇이 카탈로그 페이지를 쉬지 않고 탐색하면서 플랫폼이 멈추기 시작했다. 사이트는 그달 대부분 접속이 불가능했고, 회사 사업도 위협받았다.

첫 번째 신호는 이미 여러 차례 해결을 시도했지만 효과가 없다는 점이다. 고객사는 처음에 Cloudflare를 사용했으나 봇이 이를 우회해 서버에 직접 접근했다. 이후 더 정교한 해결책을 기대하며 Akamai로 옮겼고, Akamai 파트너인 업체가 보안 기능을 설치하고 설정을 관리했다. 하지만 업체의 일부 대응은 효과가 없었고, 일부는 상황을 악화시켰다. 바라이스후크는 새 업체가 약속을 모두 이행하는 것은 아니므로 세 차례 이상 시도한 뒤에야 성공하는 기업도 있다고 말한다. 시도 횟수만 쌓이고 결과가 없다면 구조가 필요하다는 첫 신호라는 설명이다.

두 번째는 제품을 사면 문제가 해결될 것이라고 기대하는 경우다. Akamai 같은 도구는 기본적으로 보호 기능을 제공한다고 홍보되지만, 실제로는 도구를 이해하는 사람이 규칙을 작성하고 그 규칙 아래에서도 애플리케이션이 정상 작동하도록 해야 한다. 애플리케이션을 이해하지 못하면 제품 설정을 제대로 조정할 수 없다.

세 번째는 조언이 일반론에 그치고, 조치할수록 나아지지 않거나 악화되는 경우다. 해당 업체는 Akamai 제품은 알았지만 고객사의 애플리케이션은 이해하지 못했다. 업체의 권고에 따라 켠 Origin Health Detection은 눈에 띄는 결과를 내지 못했고, 개별 IP 차단도 효과가 없었다. 마지막으로 적용한 TLS 지문 규칙은 봇뿐 아니라 실제 이용자까지 접속하지 못하게 했다. 책임을 서로에게 돌리는 상황에 지친 고객사는 새 기술 파트너를 찾기로 했다.

네 번째는 문서가 없는 오래된 대형 시스템을 운영하는 경우다. 바라이스후크는 오랜 기간 쌓인 레거시 코드가 있고 다른 업체가 유지보수를 꺼리는 애플리케이션을 ‘큰 기계 괴물’이라고 부른다. 마지막 개발팀이 남긴 문서가 없는 일이 흔해, 수리하기 전에 애플리케이션의 구성과 핵심 부분을 파악해야 한다고 설명한다.

다섯 번째는 정상적인 이용이 어떤 모습인지 아무도 설명할 수 없는 경우다. 실제 이용자가 분당 몇 페이지를 열고, 얼마나 자주 양식을 제출하며, 어디에서 유입되는지 알아야 보호 규칙을 애플리케이션에 맞게 만들 수 있다. 사업자와 서비스 제공업체 모두 이런 질문에 답하지 못하면 규칙을 제대로 알지 못한 채 작성하게 된다.

대응은 애플리케이션 파악부터 시작한다

바라이스후크가 설명한 구조 작업은 시스템을 안정화한 뒤 애플리케이션을 파악하고, 애플리케이션에 맞춰 규칙을 조정하며, 도구뿐 아니라 서버와 코드도 함께 다루는 방식이다. Belitsoft는 먼저 시스템 전체를 매핑하고 URL의 종류, 실제 이용자의 페이지 열람·양식 제출 빈도, 이용자 유입 경로를 조사했다. 엔지니어는 기존 설정을 검토해 효과가 있었던 부분과 그렇지 않은 부분을 구분했다.

회사를 처음부터 다시 만들 필요는 없었다. 기존 핵심 로직 가운데 재사용할 수 있는 부분은 그대로 두고, 애플리케이션에 맞게 Akamai 규칙을 조정했다. 예를 들어 대역 전체를 지역 차단하는 방식은 효과가 있었지만 그 지역에 실제 이용자도 있어 해제했다. 대신 악성 트래픽 비중이 가장 큰 국가들을 차단해 전체 트래픽을 31% 줄였다고 Belitsoft는 밝혔다.

가장 큰 효과를 낸 조치는 요청 속도 제한이었다. Belitsoft는 이전 업체가 이를 꺼렸지만 자신들이 적용하고 세밀하게 조정했다고 설명했다. 이 규칙은 한 달 동안 요청 1,040만 건을 차단했다. 애플리케이션이 사용하지 않는 쿼리 문자열 매개변수를 차단해 한 달에 봇 요청 110만 건을 줄였고, 존재하지 않는 경로는 차단하고 존재하는 경로는 허용하는 목록을 만들어 요청 70만 건을 추가로 걸러냈다. 알려진 봇 차단을 강화하고 WAF 규칙도 다시 켰다. 실제 이용자처럼 사이트를 탐색하는 봇에 대응하기 위해 고객사는 Akamai의 Content Protector 모듈도 구매했다.

서버 측에서는 서버 용량을 늘리고 데이터베이스와 웹 서버를 수직 확장해 과부하를 줄였다. 애플리케이션에는 봇 함정을 추가하고 봇이 가장 많이 접근한 카탈로그 페이지를 최적화했다.

Belitsoft가 밝힌 작업 결과

봇 공격이 시작되기 전 서버는 요청의 3%를 처리하지 못했지만, 이용자 대부분은 이를 알아차리지 못했다. 한 달간 봇이 사이트를 훑은 뒤에는 페이지가 전혀 열리지 않는 수준까지 악화됐다. Belitsoft는 작업 후 실패율이 2% 이하로 낮아져 공격 전보다 나아졌다고 밝혔다.

봇이 사라진 것은 아니다. Belitsoft에 따르면 최근 한 달 동안 Akamai가 받은 요청은 3,180만 건이며, 이 가운데 2,070만 건, 약 3분의 2가 차단돼 서버에 도달하지 않았다. 고객사는 최근 회의에서 당시에는 사업에 문제가 생기지 않고 있다고 말했다.

“현재는, 바라건대, 이전처럼 사업에 지장을 주지는 않고 있다.”

바라이스후크는 이 사례가 일회성 구조 프로젝트였고 작업은 끝났지만 Belitsoft가 지원을 대기하고 있다고 밝혔다. 봇은 해마다 더 똑똑해지므로 지금 효과가 있는 대응이 시간이 지나도 계속 효과적일 것이라고 보장할 수 없다는 설명이다. Belitsoft의 프로젝트 구조 서비스도 소개했다.

사례 상세: Akamai를 활용한 봇 공격 대응