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

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

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

「いいね!」 2

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

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

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

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

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

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

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

「いいね!」 1