ジオブロッキングプラグイン

概要: Discourse 用ジオブロッキングプラグイン

:link: GitHub: GitHub - communiteq/discourse-geo-blocking
:arrow_right: インストール: プラグインのインストールガイドに従ってください。
:moneybag: クライアント: このプラグインは Sketchfab によってスポンサーされています。

機能

これは、例えば不正防止や制裁遵守のために、特定の国やネットワークからのフォーラムへのアクセスを完全にブロックするために使用できます。

このプラグインは、Discourse で既に利用可能な MaxMindDB データベースを活用しています。

設定

  • プラグインを有効にする
  • ブロックしたいすべてのネットワークを geo_blocking_asn_blocklist に追加します。番号の前に AS を付けます。例えば AS12345 のようにします。
  • ブロックしたいすべての国と地域を geo_blocking_country_region_blocklist に追加します。次の形式が受け入れられます。
    • 国名全体(例: Belgium
    • 国の ISO コード(例: 日本の場合は JP
    • 国名全体にドットと地域名が続く形式(例: Switzerland.Jura)。

  • geo blocking detailed reason を有効にすると、エラーメッセージにユーザーがブロックされた国/地域またはネットワークが含まれます。

対照的に

  • プラグインをテストするには、geo blocking log blocked および/または geo blocking log allowed を確認し、フォーラムの /logs を調べます。

サポートされている国と地域の全リストについては、list_of_countries_and_regions.txt を参照してください。

注意事項と警告

匿名訪問者がブロックされた場合、約 1 分間はホームページのキャッシュされたバージョンにアクセスできる可能性があります。

エラーページには「人気」トピックと「最近」トピックは含まれません。これは、ブロックされたユーザーにコンテンツが漏洩するのを防ぐためです。

「いいね!」 25

リチャード、このプロジェクトを迅速に進めていただきありがとうございます!

「いいね!」 4

ありがとうございます。大変役立ちます。

「いいね!」 1

すぐに試してみます。どうしてこれを見逃したんだろう🥴

いくつかの国とASをジオブロックする必要がありますが、明らかな理由で、他のサイトと同じようにこのタスクにVarnishを使用することはできません。これはその頭痛の種を解決します。まだ機能しているなら。

はい、プラグインはまだ保守されており、動作しています。

「いいね!」 2

この便利なプラグインを開発していただき、ありがとうございます、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を押してページを更新すると、ブロックされます。)

この問題の修正について、何かアドバイスをいただけますでしょうか?よろしくお願いします。

「いいね!」 1

ルーターをインターセプトするEmberコードも追加する必要があります。

ただし、ここでは別の方法をとる必要があると思います。このプラグインは、このような特定のフィルタリングのために構築されたものではありません。

ジオロケーションに基づいてユーザーをグループに追加/削除するメカニズムを持つ別のプラグインを作成する方が、おそらくはるかにうまく機能するでしょう。そして、既存のグループセキュリティを活用して、フォーラムの特定の部分へのアクセスを制限または許可することができます。

「いいね!」 3

これは便利なプラグインですが、期待どおりに動作しない可能性のある原因は何でしょうか。まず、プラグインは問題なくインストールされました。

いくつかのブロックされた国を設定し、VPNを使用してそれらの国からアクセスをテストしましたが、ブロックされたという警告は表示されませんでした。

VPNが原因でしょうか。すべてのVPNが同じではないのでしょうか?

このプラグインはVPNをブロックするものではありません。

ただし、ブロックされている地理的領域のVPN出口ノードはブロックされます。

「いいね!」 1

なるほど、そのヒントは参考になりました。出口ノードを考慮に入れていませんでしたし、接続のどこに出口ノードがあるのか全く分かりませんでした。「IPアドレス確認」の表示は十分で、テスト中の地域ブロックと一致する地域/国でした。

そこで、逆に、私がいる地域のゾーンをブロックし、VPNを使用せず、固定およびセルラーネットワークの両方をテストできる別のデバイスを使用しました。それでも何も起こりません。ダイヤルインしたときに予想されるように、地域ブロックが発生しません。

プロキシ、VPN、またはTorは常にこれらの種類のメカニズムを回避できることを理解してください。プラグインはそれらをブロックすることを目的としていません。ジオブロッキングは、法的な理由、または一般的な訪問者のアクセスをブロックするために行われます。

これをしましたか?

「いいね!」 1

5件の投稿が新しいトピックに分割されました:MaxMindDBの問題

古い fa-user アイコンが user の代わりに使われているようです。これにより多くのエラーが発生しています。

「いいね!」 2

修正済み、ご報告ありがとうございます!

「いいね!」 4

この素晴らしいプラグインをありがとうございます。
もしその目的が、スパムや、公開ページへのアクセスを望ましくない国々を防ぐことなのであれば、プライベートな Discourse インスタンスでも、悪質なボットのスキャンを防ぐことはできますか?

「いいね!」 1

どちらでもありますが、それは状況によります。公式には望ましくない国を禁止していますが、人間とボットの可能性を区別していません。

インスタンスがプライベート(つまりログインが必要)であれば、ボットは(アカウントを作成してログインするように特別に作られていない限り)そもそもアクセスできません。

そして、アカウントを作成するボットもすでに存在します🤷‍♂️

スクレイパーはコンテンツを盗むため、別のものです。公開インスタンスで問題となっているスパムボットは、プライベートフォーラムでも同様の問題です。そのため、コンテンツをスキャンするAIがあります。

私にとって、ジオブロッキングはかなりの量の不要な通話やログインを削減します。私はフィンランド専用のフォーラムを持っているため、それを使用できます[1]が、グローバルなフォーラムはもちろんそれを使用できません。

すべてのノッカーはウェブサーバーの負荷を増加させますが、DiscourseはPHPの世界とは異なります。ボットはWordPressにDDoSのような効果を簡単に与えることができ、その場合、ジオブロッキングはその防御戦略の一部となる可能性があります。しかし、Discourseはそのような攻撃に対してはるかに耐性があると思います。

しかし、スパムボットに対しては、すべての国を許可する必要がある場合、ジオブロッキングは役に立ちません。


  1. 将来的に本番稼働可能になれば、翻訳者がその状況を変える可能性があります ↩︎

返信ありがとうございます。はい、確かにデータは取得できませんが、nginxのログにはまだ表示されており、不要な接続が生成されているため、この便利なツールをインストールしました。これにより、docker discourseインスタンスに到達する前に、特定の国からのVPSへの接続を禁止できます。GitHub - friendly-bits/geoip-shell: User-friendly and versatile geoblocker for Linux

「いいね!」 1

はい、それは素晴らしいツールです。注意点として、それは「ハード」ブロックを引き起こしますが、プラグインはブロックされたユーザーに表示できる、素敵で設定可能なメッセージを提供します。

「いいね!」 2