스팸 방지 허니팟(Honeypot) 개요
회원제로 운영중인 워드프레스 웹사이트로 한 곳으로부터 회원가입 스팸이 겉잡을 수 없이 들어오기 시작했습니다. Google reCAPTCHA v3를 사용중이었기 때문에 점수 임계값도 더 까다롭게 적용해보고 추가적인 스팸 방지 플러그인도 설치하는 등 여러겹의 조치를 취해보았지만, 여전히 스팸은 완벽히 차단되지 않았고 정상적으로 등록된 양식마저 차단되는 등의 추가 문제점들이 발생하는 바람에 골치를 썩고 있었는데요. 우연히 알게 된 스팸 방지 허니팟 덕분에 스팸 문제를 깔끔히 해결할 수 있었습니다.
스팸 방지 허니팟은 스팸을 차단하는 방법 중 하나로, 마치 꿀단지로 파리를 잡는 것처럼 스패머 봇을 유인하기 위한 목적으로 설계된 함정이라고 할 수 있습니다. 가장 흔한 방식의 허니팟은 사용자에게는 보이지 않고 봇에게만 감지되는 필드를 양식 내에 추가하는 것입니다. 이 필드는 오로지 봇에 의해서만 채워질 수 있으므로, 이 필드가 채워진채로 제출된 양식들을 차단하는 영리한 방식으로 스팸을 차단할 수 있습니다. 이 외에도 스팸 방지 허니팟은 다양한 방식으로 구현될 수 있지만, 공통적인 원칙은 봇이 좋아할 만한 것으로 봇을 유인하고 이를 인간 사용자에게는 보이지 않게 처하는 것입니다.
스팸 방지 허니팟(Honeypot) 구현 예
대부분의 워드프레스 양식 플러그인과 웹사이트 빌더의 양식 모듈에는 허니팟(Honeypot)을 적용할 수 있는 기능이 있습니다. 여기에서는 웹사이트 빌더인 엘리멘터의 양식 모듈에서 허니팟을 추가해보겠습니다.

문의 양식에 실제로 사용할 필드들 – 이름, 휴대폰, 이메일, 가입 목적, 비고, 등 – 을 추가하고, 그 사이에 허니팟(Honeypot)용 필드를 추가로 끼워넣습니다. 어차피 사용자 인터페이스에 나타나지 않는 필드이므로, 관리자가 알아보기 편한 이름으로 라벨링을 하고 유형(Type)을 ‘Honeypot’으로 선택하고 저장합니다.

그러면 해당 필드는 허니팟(Honeypot) 필드로 정의되어, 위와 같이 인간 사용자에게는 보이지 않고 소스상으로만 존재하는 즉, 인간이 작성할 수 없는 필드가 되고, 양식이 등록될 때 이 필드가 채워져 있다면 시스템은 이를 스팸 봇이 작성한 것으로 간주하여 등록을 차단하게 됩니다. 애초에 사용자 인터페이스에서는 보이지 않는 필드이기 때문에, 스팸 봇이 이 필드를 채워 작성한 양식을 사람이 작성한 것으로 오판할 확률은 거의 없다고 할 수 있습니다.
이렇게 스팸 방지 허니팟(Honeypot)을 적용함으로써, Google reCAPTCHA와 스팸 방지 플러그인으로도 해결이 안되어 골칫거리였던 문의 양식 및 회원가입 스팸 문제를 깔끔히 해결할 수 있었습니다.
허니팟(Honeypot)과 Google reCAPTCHA
스팸 방지 허니팟(Honeypot)은 분명 특정 시나리오에서 reCAPTCHA에 비해 두드러지는 장점을 갖고 있습니다. 이를테면, reCAPTCHA가 가시적이어서 사용자 경험을 방해하는 반면, 허니팟은 숨겨져 있어 눈에 띄지 않습니다. 그리고, 종종 사용자와의 인터랙션을 요구하는 reCAPTCHA에 비해 허니팟은 사용자 입력이 전혀 필요하지 않아 효율적입니다. 흔히, Google reCAPTCHA는 벽을 쌓는 방식으로 스팸을 차단하고, 허니팟은 함정을 파는 방식으로 스팸을 차단한다고들 합니다. 그렇기 때문에 빠르게 바뀌는 스팸 기술이나 트렌드에 있어서도, 그것을 막기 위해 일일히 벽을 쌓아야 하는 reCAPTCHA에 비해 허니팟은 비교적 가볍고 신속하게 대응할 수 있습니다. 아울러, 침입자는 어떻게든 벽을 무너뜨릴 수 있지만 앞에 놓인 함정은 거의 볼 수 없다는 특징이 있어, 스팸 방지 허니팟이 갈수록 중요한 역할을 할 것으로 보입니다.
Google reCAPTCHA는 오래되고 안정적이며 Google이 지원하는 솔루션이므로 기본적인 신뢰도가 있습니다. 하지만 reCAPTCHA v3는 모든 페이지에 자동으로 로드되면서 사이트 속도를 저하시키고, v2는 사용자 입력을 요구함으로써 사용자 경험을 방해합니다. 아울러 시력에 문제가 있거나 난독증이 있는 사람은 이로 인해 불편함을 겪을 수 있습니다. 반면, 허니팟은 reCAPTCHA에 비해 역사가 그리 길지 않으며, 봇에게도 허니팟은 다소 낯선 존재라 할 수 있습니다. 그래서인지 아직까지는 봇을 제법 잘 잡고 있으며, 사용자 눈에 띄지도 않고 사용자에게 요구하는 인터랙션도 전혀 없기 때문에 그 간편함으로 인해 평이 좋은 편입니다.
허니팟은 어떤 면에서 스패머를 유인하고 탐지하기 위한 함정 매커니즘에 가깝습니다. 이 과정에서 스팸의 공격을 직접적으로 예방하는 것은 아니지만 보안 전문가가 스패머의 공격 패턴과 기술을 파악하는데 있어 가치있는 통찰력을 제공합니다. reCAPTCHA는 웹사이트 내 인터랙션이 이루어지는 과정에서 사용자가 인간임을 증명하도록 적극적으로 요구함으로써 인간 사용자와 자동화된 봇을 구별하여 봇의 공격을 예방하도록 구현된 기술입니다.
입력 필드를 여러개 갖고 있는 문의 양식 등의 경우에는 허니팟이 훨씬 간편하고 유리한 반면, 웹사이트 내에 가짜 리뷰나 가짜 계정을 등록하는 등 어느 정도 자동화된 스팸 활동을 방지하는데 있어서는 reCAPTCHA의 강력한 고급 봇 감지 기능과 위험 분석 알고리즘이 효과적입니다. 허니팟과 reCAPTCHA를 보완적으로 함께 사용하는 것은 철저한 스팸 보안에 도움이 될 수 있지만, 둘 중 하나만으로 충분한 경우에도 함께 사용한다면 불필요하게 리소스가 낭비될 수 있으니 이 점을 고려하여 설계하는 것이 바람직합니다.
