ProxyTracer: VPN とプロキシブロッカー

:information_source: 概要 ProxyTracer API を使用して、ユーザー登録、ログイン、またはグローバルに VPN、Tor、プロキシのトラフィックを検知・ブロックします。
:hammer_and_wrench: リポジトリリンク https://github.com/ProxyTracer/discourse-proxytracer
:open_book: インストールガイド Discourse へのプラグインのインストール方法

このプラグインは、Discourse 上で VPN、Tor、プロキシのトラフィックを検知・ブロックするために ProxyTracer API を使用します。

機能

  • 新しいユーザーの登録、既存ユーザーの認証、またはサイト訪問者全体に対して、VPN、Tor、プロキシユーザーのブロックを細かく制御できます。VPN、Tor、プロキシユーザーがフォーラムへの読み取りアクセスを許可しても問題ない場合は、API リクエストを節約するために、ユーザー登録と認証時のみ有効にすることも可能です。
  • 最近の IP アドレスの評価結果をキャッシュすることで、API へのリクエストを削減し、レイテンシを低下させます。IP アドレスの評価結果をどの程度保持するかを設定で制御できます。
  • API のタイムアウトやネットワーク障害が発生した場合、大規模なロックアウトを防ぐためにユーザーのアクセスを優先します。この動作はオプションで変更可能です。
  • 特定の IP および CIDR サブネットのホワイトリスト機能を内蔵しています。

設定手順

  1. ProxyTracer ダッシュボード から標準の API キーを取得します。
  2. Discourse の管理パネルに移動し、管理 → プラグイン → ProxyTracer から ProxyTracer の設定を開きます。
  3. ProxyTracer API キー フィールドに API キーを入力します。
  4. サインアップ時に有効ログイン時に有効すべての訪問者に対して有効 を切り替えて、保護パラメータを有効にします。
  5. 信頼できる IP アドレスまたは CIDR 範囲を ホワイトリスト登録された IP リストに追加します。
  6. (オプション)サーバーのトラフィック要件に合わせて、API タイムアウトと Redis キャッシュの期間制限を調整します。
  7. (オプション)ブロックされたユーザーに表示されるブロックメッセージをカスタマイズします。例えば、ブロックが不当であると考える場合や、プロキシ、Tor、VPN を経由していない場合に管理者に連絡するための指示を追加できます。

設定項目

設定項目とその説明を含む表

名前 説明
API タイムアウト (ms) タイムアウトが発生するまでの API 応答待ち時間。
キャッシュ期間 (時間) 再度 API をチェックする前に IP アドレスを保持する時間。
エラー時にオープンにする API がクラッシュまたはタイムアウトした場合、すべてのユーザーのロックアウトを防ぐために、登録またはログインを許可します。
サインアップ時に有効 新しいユーザーが登録を試みるときにプロキシと VPN をブロックします。
ログイン時に有効 既存のユーザーがログインを試みるときにプロキシと VPN をブロックします。
すべての訪問者に対して有効 フォーラムのどのページにもアクセスまたは表示できないようにプロキシと VPN をブロックします。(警告:すべての訪問者をチェックするため、API クォータを大量に消費します)
ブロックメッセージ ユーザーがブロックされた際に表示されるエラーメッセージ。
ホワイトリスト登録された IP ブロックを完全にバイパスできる IP アドレスまたは CIDR 範囲(例:192.168.1.0/24)。

ネットワーク設定:Cloudflare とリバースプロキシ

:warning: ProxyTracer が正常に機能するためには、Discourse アプリケーションが真のクライアント IP アドレスを受け取る必要があります。

IP アドレスの転送を正しく行うには、以下の詳細な手順に従ってください。

緊急アクセス

ロックアウトされた場合は、以下の簡単な手順に従ってアクセスを回復できます。


テストを行いたい場合は、ProxyTracer にサインアップして、テスト用の無料 API クレジットを取得できます。

「いいね!」 4

クレジットは翌月ごとにリセットされますか?

サインアップ時の無料クレジットについてお尋ねですね?もしそうであれば、それは一度限りのチャージとなります。

「いいね!」 1

これではプラグインの存在意義が台無しにならないでしょうか?誰でもセーフモードを使用できてしまいます。

「いいね!」 2

状況によります。安全モードを無効化できるサイト設定があり、これはゲート付きトピックコンポーネントや、広告、ゲストゲートなど、ユーザーが容易に無効化すべきではないコンポーネントやプラグインに役立ちます。ただし、ログアウト状態では、管理者にとって安全モードの利用がより困難になる可能性があります。ただし、管理者は 管理者ログイン を使用して、安全モードを再度有効にできるはずです。

このプラグインについては、安全モードが役立つとは思えません。安全モードはプラグインのフロントエンド部分のみを無効化しますが、このプラグインは 100% Ruby で書かれています。したがって、JavaScript カスタマイズを無効化しても役立たないと考えられます。この事実は、プラグインに対して少し懐疑的な気持ちを抱かせます。また、テーマコンポーネントであるかのように about.json ファイルが含まれている点も同様です。しかし最終的には、フォーラムにインストールするコードの責任はすべて、それを導入する本人にあります。

「いいね!」 4

おっしゃる通りです。新しく立ち上げた Discourse インスタンスでの自身の実験でもこれを確認しました。実際に機能する手順として、サーバーにログインしてアドオンを手動で無効化する方法をドキュメントに更新しました。

cd /var/discourse
./launcher enter app
rails c
SiteSetting.proxytracer_enabled = false
exit
exit

「すべての訪問者に対して有効」設定がオンになっている場合、VPN/プロキシ経由で接続してセーフモードにアクセスしようとすると、セーフモードはアクセス不可になることを確認しました。

その通りです。標準的なプラグインにとって about.json は冗長ですので、リポジトリから削除しました。

@Moin さん、貴重なフィードバックをありがとうございます。他のご意見やご提案がございましたら、こちらに自由に書き込んでください。コードは完全にオープンソースであり、あらゆる貢献を歓迎します:GitHub - ProxyTracer/discourse-proxytracer

「いいね!」 1

@ProxyTracer Cloudflare Warp でログインしようとすると、ブロックされたというメッセージではなく「不明なエラー」が表示されます

見つけてくれてありがとうございます!これはバージョン 0.1.1 で修正されるはずです。アップデートで問題が解決するか確認していただけませんか?

「いいね!」 1

私はあなたのサービスを実際に試しているところです。「templates/cloudflare.template.yml」と競合が発生するかどうか、またDiscourseのコアが更新された場合にプラグインが対応してくれるかどうかを教えていただけますか。

プライバシーに配慮されたコミュニティにおいて、私のようなユーザーを失わないための落とし所は何か、気になります。

テストありがとうございます!README.md内のドキュメントでは、Cloudflare統合について、"templates/cloudflare.template.yml" の包含が明確に推奨されています。これは、フォーラムがCloudflareの背後にある場合に、Discourseがユーザーの実IPアドレスを正しく抽出するために必要だからです。したがって、このテンプレートとは競合しません。むしろ、その包含が必須です。

はい、私たちはDiscourseのコア更新を追従し、新しいバージョンとの完全な互換性を確保することに尽力しています。

「いいね!」 2

ユーザーをブロックするのではなく、hCaptchaのパスを要求するだけのオプションを追加し、それをデフォルトにすることで、スパム投稿者やBAN回避者に対しては十分すぎるほどの摩擦を与えつつ、VPNやTorなどでオンラインプライバシーを保護したい正当なユーザーも引き続き利用できるようにできる、という妥協案になるのではないかと思っていたところです。もちろん、そうしたネットワークに対する完全なBANを維持したい管理者には、その選択肢も残ります。皆さんはどう思いますか?

「いいね!」 1

ありがとうございます!さきほどサンドボックスでテストしてみたら、完璧に動作しました。

モバイルネットワークのIP/ASNに関連する機能を追加する予定はありますか?私のフォーラムでは、ユーザーがブロードバンドネットワークからキャリアの4G/5Gネットワークに切り替えてIPアドレスを変更し、Discourseの登録やログインに関する制限を回避しようとするケースが頻繁に発生しています。

IPがモバイルキャリアのASNに属しているかどうかを識別し、オプションとして登録/ログイン時にこれらのIPを異なる方法で扱えるようになるのは有用だと思います。

これは必ずしもVPN/プロキシとは関係がないため、ProxyTracerの範囲外と見なされるかもしれませんが、DiscourseがIPごとのアカウント制限をどのように扱うかという特定の課題に対しては有用です。

hCaptcha の場合、私の環境ではすでに導入しており、非常にうまく機能しています!Discourse のコアにすでに含まれているプラグインとあなたのプラグインを統合し、追加の機能として提供するのはどうでしょうか?

完全なブロックを維持するというアイデアには賛成です。それが本来の目的だからです。ただし、固定回線やモバイル回線の IPv4 と IPv6 については、AI がフォーラムでアカウント作成を好む傾向があるため、チャレンジ(検証)を通じてアクセスを困難にするというアプローチは非常に有用だと感じます。

こんにちは、私の返信を検討してくださり、ありがとうございます。これは私にとって非常に興味のあるテーマであり、ユーザーとしても管理者としても、特にデリケートな実装だと感じています。

正直なところ、人間であることを証明するためにCAPTCHAを解いているロボットのように、意図的にボットのように振る舞っているように感じます。関連するトピックでも述べたように、Anubisの実装(POW)の方が、私にははるかに快適で機能的に感じられます。

これはこのプロジェクトの範囲外であることは理解していますが、私の立場から分析できる限り、あなたが言及したCAPTCHAの使用は実現可能であり、プライバシーを重視し、外に排除されることなく貢献したいと考えるユーザーを文字通りブロックすることなく機能できるはずです。

プラグインが提供できるもう一つの機能は、VPN/プロキシを使用してログインを試みたアカウントの情報を取得することです。