사이트가 비공개인데도 익명 사용자 및 크롤러 트래픽이 확인됩니다

저는 개인용 Discourse 인스턴스를 운영 중인데, 대시보드에 익명 사용자 및 웹 크롤러 트래픽이 기록되어 있는 것을 발견했습니다. 자세히 보니 이전에도 이런 일이 있었지만, 그 규모가 더 작았을 뿐입니다.

현재 “로그인 필요” 옵션을 활성화해 두었고, SSO도 특정 조건을 충족하는 사용자만 로그인할 수 있도록 설정되어 있습니다. 추가로 설정해야 할 다른 항목이 있을까요? 감사합니다! : )

추가로 해야 할 일은 없어야 합니다… 해당 크롤러 트래픽은 아마도 크롤러가 community.yoursite.com/login을 방문하는 것에서 비롯된 것입니다. community.example.com/admin/reports/web_crawlers를 확인하면 특정 크롤러가 사이트에 얼마나 자주 접근하는지 볼 수 있습니다.

크롤러 트래픽을 줄이기 위해 할 수 있는 몇 가지 방법이 있습니다…

  • robots.txt(community.example.com/admin/customize/robots)에서 /login을 크롤러에게 차단하도록 설정해 보세요… 일부 크롤러 트래픽이 감소하는 것을 확인할 수 있을 것입니다(다만 robots.txt를 준수하지 않는 크롤러가 있으므로 완전히 사라지지는 않을 것입니다)

  • /admin/reports/web_crawlers에서 가장 문제가 되는 크롤러들을 확인하고, 해당 크롤러의 user-agent를 blocked crawler user agents 사이트 설정에 추가해 보세요

크리스가 쓴 내용 외에도, 각 SSO 로그인 요청의 시작 부분에서 사이트의 로그인 페이지 또는 홈 페이지에 대한 익명 요청이 발생합니다.

사이트의 약관(TOS) 및 개인정보 처리방침(Privacy) 페이지도 익명 사용자가 접근할 수 있을 가능성이 큽니다.

VPS를 사용 중이거나 Discourse 앞에 Nginx(Apache도 되지만 Nginx가 더 쉽습니다 :wink: )를 두고 있다면 봇을 차단하는 것이 훨씬 수월합니다. Discourse의 UI는… 사용하기가 그리 쉽지는 않은데, 그 이유는 외부에 봇이 너무 많기 때문입니다. robots.txt는 거의 쓸모없는 수준에 가깝습니다. 이를 따르는 봇이 매우 적고, 심지어 Google조차도 따르지 않으니까요.

문제는 노커(knocker)가 당신의 Discourse에 접근하려는 것이 아닙니다. 그들이 실제로 찾고 있는 것은 그 밖의 모든 것입니다.

  • 수백 명의 스크립트 키디(script kiddie)가 WordPress가 설치되어 있는지, 특히 오래된 버전에 구멍이 뚫려 있는지 테스트하고 있습니다.
  • SEO 스크레이퍼와 기타 스파이더가 주로 돈을 벌기 위해 당신의 콘텐츠를 분석하려고 합니다.
  • 그리고 물론 검색 엔진도 있습니다.

이들은 해킹과 같은 실질적인 피해를 주지는 않지만, 이들을 응대하는 데는 순수한 비용만 듭니다.

문제는 서버가 이 모든 요청에 응답해야 한다는 점입니다. 봇이 아닌 실제 사용자로부터 오는 부하의 대부분이 봇에서 발생하게 되는 경우가 매우 흔합니다. 실제 사용자 1명당 봇이 약 50~500개나 있는 상황이 전혀 이상하지 않습니다.

그리고 이 모든 비용은 당신이 지불하게 됩니다.

저의 사이트(Discourse 포함)는 순수하게 핀란드어로 되어 있어 전 세계적 청중을 두고 있지는 않습니다. 그래서 강력한 도구 하나를 더 가지고 있는데, VPS에서만 사용할 수 있는 지리 기반 차단(geo-blocking)입니다.

러시아, 중국, 인도, 파키스탄, 이란, 이라크, 베트남의 친구들에게 정말 죄송하지만, 이 국가들을 차단했을 때 봇 부하가 약 90%나 감소했습니다.

봇과의 싸움은 끝없는 투쟁입니다. 그리고 포럼이 비공개가 아닌 경우, Discourse의 도구는 매우 제한적입니다. 하지만 그래도 없는 것보다는 낫습니다.

잘못 이해하지 마세요. 앱이 서버의 역할인 일을 하도록 원하는 것이 아닙니다. 단지 Discourse에만 의존해서는 안 된다는 의미입니다.