본문으로 이동

리버티게임:토론란/WAF 도입 관련

새 주제
리버티게임, 모두가 만들어가는 자유로운 게임
마지막 의견: 2026년 10월 7일 (수) (Hsl0님) - 주제: 토론

발의[원본 편집]

안녕하세요? 사무관 hsl0입니다. 요즘 리버티게임이 robots.txt 및 robots meta 태그를 존중하지 않고, User-Agent에 자신의 정보를 밝히지 않고 Mac OS를 사용한다고만 밝힌 분산 크롤링 봇으로 인한 피해를 받고 있으며, 몇가지 증거도 확보하였습니다. 이러한 봇은 대부분 현재 사용자:Riemann/계산기 문서에 갇혀서 raw urlget 변수를 바꿔가며 다량의 요청을 여러 IP로 보내고 있습니다. 몇 주 전에는 동일한 문서의 역사를 다수의 IP를 이용해 골고루 탐색하는 정황도 포착하였습니다. User-Agent 기반으로 차단하기에는 정상 사용자와 구분이 어렵고, IP 기반으로 차단하기에는 다양한 IP 대역을 활용하고 있어 대응이 쉽지 않습니다. 이로 인해 WAF 도입이 필요해졌습니다.

무료로 사용 가능한 WAF는 Cloudflare와 Anubis 두가지 중 하나를 고려하고 있습니다.

Cloudflare는 리버티게임에 요청이 도달하기 전에 미리 악성 트래픽을 걸러내어 부하가 0이고, 이미 전세계 인터넷의 데이터를 확보하여 직접 대응하지 않아도 빠르게 대량 공격에 대응해줍니다. 또한 CDN도 함께 사용하여 일부 페이지의 요청 부하 또한 크게 절감하고 로딩 속도를 높일 수 있습니다. 현재 리버티게임의 두 도메인 모두 Cloudflare DNS를 사용하고 있는 것으로 보여 도메인 소유자의 협조가 있다면 적용이 어렵지는 않을것으로 보입니다. 다만, 외부에서 제공하는 클라우드 서비스라서 리버티게임에서 필요한 특수한 설정을 적용하기 어려울 수 있고, 정책 변화에 취약할 수 있습니다.

Anubis는 서버에 직접 설치하므로 정책 변화 등으로 인한 유료화로부터 자유롭고, 리버티게임의 특성에 맞춘 필터링 규칙을 적용해서 일반 사용자의 불편을 줄이고 악성 트래픽으로 의심되는 경우를 쪽집게처럼 걸러내거나 챌린지를 요구할 수 있습니다. 하지만 리버티게임 서버의 세팅을 크게 바꿔야하는 부담이 있고, Anubis로부터 요청이 필터링되더라도 일부 부하가 가해질 수 있습니다.

저는 다른 시스템 관리자분들과 다른 일반 사용자의 의견을 듣고 싶습니다. 기술적인 주제라서 당초 시스템 관리자 간에 비공개로 논의하려 하였으나, 일반 사용자의 의견도 수렴하고 논의 과정에서의 투명성을 보장하기 위해 토론란에서 공개하게 되었습니다. 다만, 이 토론은 정책과 지침에 관한 토론이 아니므로 일반 사용자 대상 표결은 진행하지 않을 예정입니다. — hsl(토론, 기여, 게임, 메일) 2026년 9월 24일 (목) 17:08 (KST)답변

토론[원본 편집]

대찬성 WAF 도입을 안 할 수 없는 상황임을 보충하자면, 리버티게임에 누군가 접속을 할 때마다 기록을 남기는 로그 파일들이 서버에 쌓이는 속도가 이런 무지성 크롤링 봇들 때문에 대폭 상승했습니다. 접속 기록은 보통 CMD 상에서 볼 때 한두 줄 안에 들어가야 하고, 한 페이지를 볼 때 최대 수십 개 정도의 요청이 필요하기 때문에 사용자가 접속해서 뭔가 페이지를 요청할 때 보통 수백 바이트, 극단적으로 많아봤자 수 KB 바이트의 크기만 차지합니다.
그런데 그런 로그 파일의 크기가 텍스트만으로 한 달에 GB 단위로 데이터가 쌓이려면 최소 수십 억 줄[1]이 쌓여야 가능합니다. 한 사용자가 문서를 많이 봐도 하루에 몇십 개 정도만 보는데, 정상적인 상황이라면 로그 파일 증가량이 한 달에 100MB도 나오기 어려워야 합니다. 로그가 수천 줄, 수만 줄도 아니고 수십억 줄이 쌓인다는 점에서 리버티게임 사이트에 이용자 수에 비해 지나치게 엄청난 트래픽이 쏟아지고 있고, WAF가 없으면 로그 파일 기록이 한 달을 넘어가지 않게 관리가 필요한 상황입니다
제가 보기에는 AI 크롤링 봇들이 점점 악랄하고 치밀한 방법으로 활동하고 있어서 2중으로 거는 것이 가장 좋아 보입니다: 리버티게임 도메인 관리자 2명이 1차적으로 Cloudflare 같은 도메인 제공자 서비스 콘솔에서 요청 수 제한이나 알 수 없는 User-Agent를 거르도록 세팅하고, 그걸 뚫고 온 봇들은 Anubis로 방어할 필요가 있습니다. 보조 도메인인 libertygame.work 쪽은 제가 해결할 수 있지만 메인 도메인인 libertyga.me은 담당자에게 연락이 필요하니, 메인 도메인 관리자에게도 의견을 묻는 것이 좋겠습니다 --Senouis(토론장, 기여) 2026년 9월 26일 (토) 18:15 (KST)답변
정보 추가로, AI 크롤링 봇들이 페이지 내 특정 링크로 들어가면 IP 차단을 먹이고 물러나게 하는 허니팟 기법을 쓰는 방법도 있습니다. CSS에 'display: none' 속성이 적용되어 보이지 않는 링크를 모든 페이지의 한 구석에 생성하고, 거기에 대한 요청이 있으면 일정 시간 IP 차단을 먹이는 방법이죠. 허니팟 기법을 쓴다면 확장 기능으로 만들어 SSR로 처음부터 클라이언트가 그렇게 페이지 응답을 받아오게 해야 합니다(소도구로 JS 써서 CSR로 하면 봇이 그걸 무시할 가능성이 높습니다). 직접 만들어야 하는 수고가 있지만, 가장 확실합니다. 좀 더 느슨한 제약으로 CrawlerProtection 확장 기능 같은 걸 생각했는데, 세팅에 따라 익명 사용자의 활동에 제약이 상당히 커질 수 있습니다. --Senouis(토론장, 기여) 2026년 9월 26일 (토) 18:15 (KST)답변
이런 확장 기능도 있었군요. 하지만 아예 과거 역사 페이지를 비로그인 사용자에게 전부 차단하는 극단적인 방식이라 긴급상황이 아니라면 평시에도 섣불리 도입하기에는 좋지 않겠어요. 역사 기능이 기여자 목록을 겸하는데, 이걸 무작정 숨겨버리면 CCL의 BY 조항을 위반할 수도 있고요. 어떤 방법으로도 손을 쓸 수 없는 최악의 상황에서는 임시로 쓸법 하겠어요. 허니팟 기능은 리버티게임의 특성에 잘 어울릴 것 같습니다. 당장 CGI, linkget, CGI2 틀에도 역링크 추적을 위해 숨은 링크가 있는데, 그 옆에 허니팟 페이지나 파라미터를 넣고 일반 사용자에게 보여주지 않으면 효과적일 것 같습니다. 처음부터 LocalSettings.php를 수집하려고 시도하는 대놓고 사악한 봇에게도 적용할 수 있겠습니다. 물론 읽을 수는 없을거지만요. — hsl(토론, 기여, 게임, 메일) 2026년 9월 26일 (토) 19:23 (KST)답변
  1. ↑ 1GB를 가리키는 2의 30제곱이 10억 정도 됩니다
찬성 클라우드플레어의 Managed Challenge를 먼저 도입을 먼저 시도하고 그 이후로도 지속적인 공격시도가 있을 시 서버 유지보수의 비용이 높은 아누비스 설치 혹은 Senouis님께서 언급하신 허니팟 도입을 검토하는것이 좋아 보입니다. 필요한 클라우드플레어의 설정이나 예외가 있을 시 메일로 말씀해주시면 적극 협조하겠습니다. --BANIP (토론) 2026년 9월 29일 (화) 21:54 (KST)답변
좋습니다. 일단 둘다 도입하는 것은 도입 난이도도 있고 챌린지가 중복으로 뜰 위험이 있기에 가급적이면 둘 중 하나만 도입하는 게 좋을 것 같습니다. — hsl(토론, 기여, 게임, 메일) 2026년 9월 29일 (화) 22:37 (KST)답변
의견 조사해보니, Anubis는 요청당 허용 여부만 결정하고 일정 시간이나 영구적으로 차단하는 기능은 제공하지 않는 듯 하네요. 물론 AI로 확인한거라 틀릴 수는 있습니다. 그리고 honeypot은 Fail2Ban을 통해 access.log를 스캔하고 Apache conf를 자동으로 생성하거나 TCP 방화벽의 Blocklist를 추가하는 방식으로 구현할 수도 있다네요. Anubis가 감지한 봇이나 허니팟을 영구적으로 차단하기 위해서도 Fail2Ban이 필요하다고 하고요. 어쩌면 Anubis가 필요하지 않을 수도 있겠습니다. 또한 Cloudflare의 Bot Fight Mode는 api.php 등에 예외를 설정하지 못한다고 하네요. 당장 서버가 위험할 때는 쓰면 좋지만, 평시에는 규칙을 보수적으로 잡는 게 좋겠습니다. 지금이 평시인지는 모르겠지만요. 일단은 최소 Managed 설정으로 시험해보고 그래도 봇이 활개치면 설정을 강화하는 게 좋을 듯 싶습니다. — hsl(토론, 기여, 게임, 메일) 2026년 9월 30일 (수) 23:55 (KST)답변
Fail2Ban 기반 허니팟을 간단하게 구축했습니다. 효과가 없다면 Anubis 도입을 고려해야할 것 같습니다. — hsl(토론, 기여, 게임, 메일) 2026년 10월 7일 (수) 01:30 (KST)답변