RGJ
(Richard - Communiteq)
5월 23, 2022, 9:43오전
1
요약 : Discourse용 지리적 차단(Geo Blocking) 플러그인
GitHub : GitHub - communiteq/discourse-geo-blocking · GitHub
설치 : 플러그인 설치 가이드 를 따르세요.
클라이언트 : 이 플러그인은 Sketchfab 의 후원을 받아 개발되었습니다.
기능
이 플러그인은 특정 국가 또는 네트워크에 대한 포럼 접근을 완전히 차단하는 데 사용할 수 있으며, 예를 들어 사기 방지나 제재 준수 등을 위해 활용할 수 있습니다.
이 플러그인은 Discourse에 이미 포함된 MaxMindDB 데이터베이스를 활용합니다.
설정
플러그인 활성화
차단할 모든 네트워크를 geo_blocking_asn_blocklist에 추가하세요. 숫자 앞에 AS를 붙여야 하며, 예를 들어 AS12345와 같습니다.
차단할 모든 국가 및 지역을 geo_blocking_country_region_blocklist에 추가하세요. 다음 형식이 허용됩니다:
국가 전체 이름 (예: Belgium)
국가 ISO 코드 (예: 일본은 JP)
국가 전체 이름 뒤에 점을 찍고 지역 이름을 붙인 형식 (예: Switzerland.Jura).
geo blocking detailed reason을 활성화하면 오류 메시지에 사용자가 차단된 원인인 국가/지역 또는 네트워크가 포함됩니다.
versus
플러그인을 테스트하려면 geo blocking log blocked 및/또는 geo blocking log allowed를 확인하고 포럼의 /logs를 검사할 수 있습니다.
지원되는 국가 및 지역의 전체 목록은 list_of_countries_and_regions.txt 를 참조하세요.
주의사항 및 경고
익명 방문자가 차단되는 경우, 약 1분 동안 홈 페이지의 캐시된 버전을 볼 수 있을 수 있습니다.
오류 페이지에는 차단된 사용자에게 콘텐츠가 노출될 수 있기 때문에 “인기” 및 “최근” 주제 목록이 포함되지 않습니다.
26개의 좋아요
bartv
(Bart )
5월 23, 2022, 3:26오후
2
Richard, 이 프로젝트의 빠른 진행에 감사드립니다!
4개의 좋아요
Jagster
(Jakke Flemming)
12월 12, 2023, 6:58오전
4
바로 시도해 볼게요. 이런 걸 어떻게 놓칠 수가 있었지
몇몇 국가와 AS를 지오톡킹해야 하는데, 다른 사이트들과 마찬가지로 Varnish을 이 작업에 사용할 수 없는 명확한 이유가 있어요. 이게 아직 운영 중이라면 그 고민을 해결해 줄 수 있겠네요.
RGJ
(Richard - Communiteq)
12월 12, 2023, 8:30오전
5
Jakke Flemming:
아직 작동 중이라면.
네, 해당 플러그인은 여전히 유지보수되고 있으며 정상적으로 작동합니다.
2개의 좋아요
fokx
2월 4, 2024, 12:23오후
6
이 유용한 플러그인을 개발해 주셔서 감사합니다, Richard.
제 사용 사례에 맞게 다음과 같은 작은 수정을 했습니다: 특정 지역의 사용자에게 특정 URL을 차단하는 것 입니다. add_model_callback(:application_controller, :before_action) 안에 request.fullpath를 사용한 매칭 규칙을 몇 가지 추가했는데, 예를 들면 다음과 같습니다:
return unless request.fullpath.start_with?(*SiteSetting.topic_geo_blocking_exact_paths.split('|'))
브라우저 주소창에 URL을 직접 입력하여 접근할 경우 이 URL 수준 지리적 차단은 동작 합니다. 하지만 Discourse 홈페이지에서 해당 URL을 클릭하여 이동할 경우에는 작동하지 않습니다. (다만 F5 키를 눌러 페이지를 새로고침하면 차단이 적용됩니다.)
이 문제를 해결하는 데 도움이 될 조언을 주실 수 있을까요? 감사합니다.
2개의 좋아요
RGJ
(Richard - Communiteq)
2월 4, 2024, 3:34오후
7
라우터를 가로채는 Ember 코드도 추가해야 합니다.
하지만 여기서는 다른 접근 방식을 취해야 한다고 생각합니다. 이 플러그인은 그렇게 구체적인 필터링을 위해 만들어지지 않았습니다.
지리적 위치를 기반으로 그룹에 사용자를 추가/제거하는 메커니즘을 갖춘 별도 플러그인을 만드는 것이 훨씬 더 잘 작동할 것입니다. 그런 다음 기존 그룹 보안 기능을 활용하여 포럼의 특정 부분에 대한 액세스를 제한하거나 허용할 수 있습니다.
3개의 좋아요
agemo
(agemo)
10월 23, 2024, 10:50오후
8
이 플러그인은 유용하지만, 기대대로 작동하지 않을 수 있는 요인이 무엇일지 궁금합니다. 우선 플러그인은 정상적으로 설치되었으므로 설치 문제는 아닙니다.
몇몇 국가를 차단 목록에 추가한 후, 해당 국가에서 접속하기 위해 VPN을 사용해 테스트해 보았지만 차단 경고 메시지는 전혀 표시되지 않았습니다.
아마도 VPN이 문제일 수 있겠네요. 모든 VPN이 동일한 방식으로 동작하는 것은 아니니까요?
mcdanlj
(Michael K Johnson)
10월 23, 2024, 11:23오후
9
이 플러그인은 VPN을 차단하도록 설계되지 않았습니다.
다만, 차단 대상 지역에 위치한 VPN의 출구 노드는 차단됩니다.
1개의 좋아요
agemo
(agemo)
10월 24, 2024, 8:06오전
10
오, 그 힌트 감사합니다. 저는 출구 노드(exit node)를 고려하지 않고 있었는데, 연결에서 출구 노드가 어디에 위치하는지 전혀 몰랐습니다. 'whats my ip’에서 표시된 결과가 저에게는 충분했거든요. 테스트 중인 지오편(geo block) 대상 지역/국가와 일치했기 때문입니다.
그러면 반대로 생각해 보겠습니다. 제가 위치한 지역의 존(zone)을 차단하고 VPN을 사용하지 않았습니다. 고정 네트워크와 셀룰러 네트워크를 모두 테스트할 수 있는 다른 기기를 사용했는데도 여전히 아무 일도 일어나지 않았습니다. 연결 시 예상대로 지오편이 발동되지 않았습니다.
RGJ
(Richard - Communiteq)
10월 24, 2024, 8:13오전
11
프록시, VPN 또는 Tor는 이러한 유형의 메커니즘을 항상 우회할 수 있다는 점을 이해해 주세요. 이 플러그인은 이를 차단하도록 설계된 것이 아닙니다. 지리적 차단(Geo blocking)은 법적 이유나 일반 방문자의 접근을 차단하기 위해 수행됩니다.
이렇게 해 보셨나요?
1개의 좋아요
RGJ
(Richard - Communiteq)
이 글을 에 분리
10월 24, 2024, 11:32오전
12
5개의 게시물이 새로운 주제로 분리되었습니다: MaxMindDB 문제
Jagster
(Jakke Flemming)
4월 16, 2025, 9:32오전
13
fa-user 아이콘 대신 user를 사용해야 하는데, 현재는 구형 fa-user 아이콘이 사용되고 있는 것으로 보입니다. 이로 인해 많은 오류가 발생합니다.
지오 블로킹 플러그인 때문에 발생하는 것 같습니다
2개의 좋아요
훌륭한 플러그인을 만들어 주셔서 감사합니다.
이 플러그인의 목적이 스팸이나 원치 않는 국가의 사용자가 공개 페이지에 접근하는 것을 차단하는 것이라면, 비공개 디스커스 인스턴스에서도 악성 봇의 스캔을 방지할 수 있을까요?
1개의 좋아요
Jagster
(Jakke Flemming)
6월 16, 2025, 11:57오전
16
둘 다 약간 해당되지만, 상황에 따라 달라요. 공식적으로는 원치 않는 국가를 차단하지만, 아마도 인간과 봇을 구별하지는 않아요.
RGJ
(Richard - Communiteq)
6월 17, 2025, 5:54오전
17
인스턴스가 비공개(즉, 로그인 필수) 상태라면 봇은 어쨌든 접근할 수 없습니다(계정을 생성하고 로그인하도록 특별히 제작된 봇인 경우를 제외하고).
1개의 좋아요
Jagster
(Jakke Flemming)
6월 17, 2025, 6:21오전
18
이미 계정을 생성하는 봇이 존재합니다
스크레이퍼는 콘텐츠를 도용하기 때문에 별개의 문제입니다. 공개 인스턴스에서 문제가 되는 스팸 봇은 비공개 포럼에서도 완전히 동일한 문제입니다. 그래서 AI를 이용해 콘텐츠를 스캔하고 있습니다.
제 경우, 지리적 차단(geo blocking)을 사용하면 원치 않는 호출과 로그인 시도를 상당 부분 줄일 수 있습니다. 제 포럼은 핀란드어로만 운영되기 때문에 이 기능을 활용할 수 있지만, 글로벌 포럼에서는 물론 사용할 수 없습니다.
모든 노커(knocker)는 웹 서버에 부하를 증가시키지만, Discourse는 PHP 환경과는 다릅니다. 봇은 WordPress에 DDoS와 유사한 효과를 쉽게 일으킬 수 있으며, 이 경우 지리적 차단은 방어 전략의 일부가 될 수 있습니다. 하지만 Discourse는 그런 공격에 훨씬 더 면역성이 있다고 생각합니다.
그러나 스팸 봇에 대해, 모든 국가를 허용해야 한다면 지리적 차단은 도움이 되지 않습니다.
답변 감사합니다. 맞아요, 실제로 데이터는 받지 못하지만 nginx 로그에는 여전히 표시되고, 원치 않는 연결이 계속 생성되고 있습니다. 그래서 Docker Discourse 인스턴스에 도달하기 전에 특정 국가에서 VPS로의 연결을 차단하는 이 간단한 도구를 설치했습니다: GitHub - friendly-bits/geoip-shell: User-friendly and versatile geoblocker for Linux · GitHub
1개의 좋아요
RGJ
(Richard - Communiteq)
6월 18, 2025, 5:22오전
20
네, 정말 훌륭한 도구입니다. 다만 이 방법은 ‘강제’ 차단이 적용되는 반면, 플러그인은 차단된 사용자에게 표시할 수 있는 아름답고 설정 가능한 메시지를 제공합니다.
2개의 좋아요