advanced
セキュリティ
あなたのDiscordサーバーを多層防御。VPN検出、ブラウザフィンガープリントベースのalt検出、7種類のファイアウォール、国別制限、アンチヌーク、アンチレイド、アカウント年齢制限、インテリジェンスプロファイリング。
概要
Restore Hubは、複数の独立したレイヤーを持つ、徹底した防御のセキュリティシステムを提供します。各レイヤーは独立して有効または無効にすることができ、ボット、アルト、レイド、核兵器、その他の脅威に対する包括的な保護を提供するために連携します。
セキュリティ機能はプランによって異なります:無料は、国制限、キャプチャ、アカウント年齢、ブラックリスト。プレミアムでは、VPN検出、alt検出、ファイアウォールが追加されます。Businessでは、アンチヌーク、アンチレイド、チーム管理が追加されます。Enterpriseでは、クロスサーバー解析と専用サポートが追加されます。
VPNとプロキシの検出
リストアハブのVPN/プロキシ検出は、すべて自社で行っています。検証中に外部APIを呼び出すことはありません。すべてのIPインテリジェンスは、ローカルのPostgreSQLデータベースとRedisキャッシュにあらかじめロードされています。つまり、検証フローへの待ち時間の影響はゼロです。
IPインテリジェンス・データベースは、複数のオープンソースやコミュニティが管理する情報源から毎日更新されている:
- Tor出口ノード- Torプロジェクトの公式出口リストから毎日更新される、~7,000のTor出口ノードIPの完全リスト(https://check.torproject.org/exit-addresses)。
- VPN IP- コミュニティが管理するリスト (X4BNet/lists, firehol/blocklist-ipsets) は、主要なVPNプロバイダーをカバーしています:NordVPN、ExpressVPN、Surfshark、ProtonVPN、PIA、Mullvad、その他数百。
- データセンター/ホスティングIP- 50以上のホスティングプロバイダーASN(AWS、Google Cloud、Azure、DigitalOcean、OVH、Hetzner、Linode、Vultrなど)から3億5,400万以上のIPを提供。ASN IP範囲全体をカバー。
- ボゴン・レンジ- RFC1918のプライベートIP(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)、ループバック(127.0.0.0/8)、CGNAT(100.64.0.0/10)、およびその他の予約範囲。
- プロキシIP- 毎日更新されるコミュニティリストからの既知のオープンプロキシサーバ。
ヒント:すべての検出はローカルで行われるため、外部依存はゼロで検証は数ミリ秒で完了する。ルックアップごとのコストも、ダウンする可能性のあるサードパーティAPIもありません。
VPN検出の設定
VPN検出には、サーバー設定で4つの独立したトグルがある:
| セッティング | ブロックするもの
|---|---|
| VPNブロック (vpnBlockEnabled) | コミュニティリストから既知のVPNプロバイダーIPをブロックする。
| Tor Blocking (blockTor) | Torプロジェクトからの全てのTor出口ノードIP
| データセンター・ブロック(blockDatacenters)|クラウド・ホスティング・プロバイダーに属する354M以上のIP
| プロキシブロック|既知のオープンプロキシサーバー警告データセンター・ブロックは積極的で、ホスティング・プロバイダーのASNに属するあらゆるIPをブロックします。これは、クラウドプロバイダーを経由する一部のモバイルキャリアのユーザー、AWS上でホストされている企業プロキシの背後にいるユーザー、およびデータセンターIPをリースするいくつかのあまり知られていないVPNのユーザーをブロックします。注意して使用し、ブロック率を監視してください。
IPインテリジェンス・キャッシング
IP検索結果は、24時間のTTL(IP_CACHE_TTL_SECONDS = 86,400)でRedisにキャッシュされます。各検索結果には、国コード、ASN、ISP名、VPNフラグ、プロキシフラグ、Torフラグ、データセンターフラグ、携帯電話フラグ、詐欺スコアが含まれます。
データベース内のIpIntelligenceモデルは、IPハッシュごとに集約されたデータを保存します:合計検証試行回数、成功/ブロックカウント、ユニークなDiscordユーザー、ユニークなフィンガープリント、および計算されたリスクスコア。これにより、疑わしいIPに関する長期的なインテリジェンスが構築されます。
オルトアカウント検出
アルト検出は、ブラウザフィンガープリントを使用して、同一人物が複数のDiscordアカウントで認証した場合に識別します。これはRestore Hubの最も強力なセキュリティ機能の1つで、異なるIP、VPN、ブラウザを使用している場合でもアルトを検出します。
フィンガープリントは複数の独立した信号から得られる合成ハッシュである:
- キャンバスの指紋- 不可視のキャンバス要素をレンダリングし、ピクセルデータをハッシュ化します。GPU、フォントレンダラー、アンチエイリアシングが異なると、固有の出力が得られます。
- WebGLフィンガープリント- WebGLを使ってGPUベンダー(UNMASKED_VENDOR_WEBGL)とレンダラー(UNMASKED_RENDERER_WEBGL)に問い合わせ、3Dシーンをレンダリングして結果をハッシュ化する。
- オーディオ指紋- AudioContextを作成し、オシレーター信号を生成し、出力をハッシュする。オーディオ・ハードウェアやドライバによって、生成される波形は異なる。
- ハードウェア信号- CPUコア数、デバイスメモリ、色深度、画面解像度、タッチサポート、フォント数、プラグイン数。
- ブラウザ信号- ユーザーエージェント、言語、タイムゾーン、接続タイプ、Do Not Trackフラグ、有効なクッキー。
Alt 検出 - クロスサーバーマッチングの仕組み
メンバーが検証すると、その複合フィンガープリントは MemberMeta テーブルに保存され、FingerprintIntelligence テーブルにインデックスが付けられます。Restore Hub は FingerprintIntelligence テーブルにクエリーを行い、すべてのサーバーでそのフィンガープリントに関連するすべての Discord ユーザー ID を検索します。
同じフィンガープリントが異なる Discord ユーザー ID で表示された場合、それは alt アカウントの可能性があるとしてフラグが立てられます。FingerprintIntelligence レコードは以下を追跡します:固有の Discord ユーザー、固有のサーバー、固有の IP、国、タイムゾーン、OS のバリエーション、デバイスのバリエーション、およびデバイス/OS が一貫しているかどうか。
オルトが検出されたときの動作を設定できます:
| 行動
|---|---|
| ブロック|検証を即座に拒否する。メンバーはブロックされたメッセージを見て、検証されたロールを得ることができません。|
| 許可してフラグを立てる: メンバーに検証を許可してロールを取得させますが、手動レビューのためにダッシュボードでフラグ付きALTとしてマークします。|
| 通知のみ|メンバーに通常どおり検証させます。ログチャネルおよび/または電子メールに通知を送信しますが、何も行いません。|ヒントAlt 検出は認証されたサーバーだけでなく、すべてのサーバーで機能します。あるメンバーがサーバーAでフィンガープリントXで認証し、別のDiscordアカウントがサーバーBで同じフィンガープリントXで認証した場合、フラグが立てられます。
ファイアウォールルール
ファイアウォール(Premium+)では、7つの異なる属性に基づいて、きめ細かいブロックルールを作成できます。ファイアウォールルールはOAuth2の前にチェックされ、ブロックされた訪問者はDiscordの認証ページを見ることはありません。
| ルールの種類|値の形式|例|ブロックするもの
|---|---|---|---|
| IP|IPv4/IPv6アドレスまたはCIDR範囲|1.2.3.4または10.0.0.0/8|特定のIPアドレスまたはサブネット全体
| COUNTRY|ISO3166-1アルファ2の国コード|CN、RU、IR|指定された国からのすべてのトラフィック
| ASN|AS接頭辞付きのAS番号|AS14061|そのASNに属するすべてのIP(例:AS14061 = DigitalOcean
| FINGERPRINT|ブラウザフィンガープリントハッシュ|abc123def456...| 特定のブラウザ・フィンガープリント(既知の悪意者のデバイスをブロックするのに便利)||USER_ID|Discord
| USER_ID|DiscordのユーザーID(snowflake)|123456789012345678|特定のDiscordユーザーのID。
| SERVER_ID|DiscordギルドID(snowflake)|987654321098765432|指定されたDiscordサーバーに所属しているユーザー|SERVER_ID|ギルドID(snowflake)|987654321098765432|指定されたDiscordサーバーに所属しているユーザー
| REGION|地域|EU-WEST, ASIA-EAST|指定された地域からのすべてのトラフィック。ファイアウォール vs. ブラックリスト vs. 国別制限
これら3つの機能は重複しているが、それぞれ異なる目的を果たしている:
- ファイアウォールルール- 7つの属性に基づく広範な事前認証ブロック。メンバーがDiscordの認証を見る前にブロックします。サーバーオーナーによって管理されます。
- ブラックリスト- 特定のDiscordユーザーIDのOAuth後のブロック。OAuth2の後にチェックされます(OAuthの後でないとユーザーIDがわからないため)。ユーザー単位(すべてのサーバーに適用されます)。
- 国の制限- Pre-OAuth、ファイアウォールよりシンプル。2つのモード:許可(リストされた国だけが認証できる)またはブロック(リストされた国は拒否される)。特定の地域のみを対象とするサーバーに適している。
ホワイトリストのルール
ホワイトリストルール(Premium+)は、特定の訪問者がすべてのセキュリティチェックを回避できるようにします。ホワイトリストに登録された訪問者は、ファイアウォール、VPN検出、国の制限、alt検出、およびキャプチャをスキップします。彼らはまだOAuth2を通過しますが(それは検証の中核であるため)、すべての制限的なチェックがバイパスされます。
|---|---|
| IP | スタッフが常に検証をパスするように、オフィスのIPをホワイトリストに登録する。
| USER_ID|VIPの特定のDiscordユーザーIDをホワイトリストに登録する。
| FINGERPRINT| よく知られているデバイスのフィンガープリントをホワイトリストに登録する。
| COUNTRY|ブロックされる可能性のある国をホワイトリストに登録します。
| ASN|特定のISPまたはネットワークプロバイダーをホワイトリストに登録します。ヒント: ホワイトリストのルールは、他のどのセキュリティチェックよりも前に、検証フローで最初にチェックされます。訪問者がホワイトリストのルールにマッチした場合、そのままOAuth2に進みます。
反核
Anti-nuke (Business+) は、Discordサーバーの大量破壊行為をリアルタイムで検出します。Redisのスライディングウィンドウカウンターを使用して、破壊的なイベントのレートを追跡します。しきい値を超えると、Restore Hubは警告アクションをトリガーします。
Anti-nukeは、以下の閾値を持つ4つのイベントタイプを監視する(constants.tsより):
| イベントタイプ|しきい値|タイムウィンドウ|検出内容
|---|---|---|---|
| チャンネル削除|3回の削除|60秒|誰かがチャンネルを大量に削除した
| ロールの削除|3回の削除|60秒|誰かがロールを大量に削除している
| 出禁|5回|60秒|誰かがメンバーを大量出禁にした。
| キック|5回|60秒|誰かがメンバーを大量にキックするアンチ・ヌーク - スライディング・ウィンドウ・カウンターの仕組み
各イベントタイプについて、Restore HubはサーバーIDをキーとするRedisのソートセットを保持します。各イベントはタイムスタンプのスコアとともに追加される。新しいイベントが到着すると、Restore Hubは過去N秒(ウィンドウ)に発生したイベントの数をカウントします。カウントがしきい値を超えた場合、アラートがトリガーされます。
このアプローチは、境界の影響がないため、固定ウィンドウ・ カウンターよりも正確である。2秒間に4つのチャネルが削除されるバーストは、それが分単位の境界をまたぐかどうかに関係なく、アラートをトリガします。
反核 - 対応行動
反核閾値がトリガーされると、Restore Hubはいくつかの設定可能なアクションを取ることができます:
- メールアラート- 設定されたアラートアドレスに、誰が実行したか、何が影響を受けたかなど、破壊的アクションの詳細を記載した電子メールを送信する。
- Discord ウェブフック・アラート- DiscordのWebhook URLに詳細な埋め込み情報をリアルタイムで送信します。
- オートプル- 設定済みのバックアップサーバー(hasAutoPull搭載のBusiness+)に、認証済みのメンバーを自動的にプルし始めます。
- ロギング- すべての反核イベントはAuditLogに記録され、ダッシュボードで見ることができます。
アンチ・レイド
アンチレイド(Business+)は、レイドを示す大量参加イベント(ボットやユーザーが協調して同時にサーバーに参加すること)を検出します。2つのパターンを監視します:
| パターン|しきい値|タイムウィンドウ|詳細
|---|---|---|---|
| 大量参加|10人参加|30秒|アカウント年齢に関係なく、10人以上のユーザーが30秒以内に参加する。
| 新規アカウントの殺到|5回の参加|60秒|60秒のウィンドウ内に7日未満のアカウントが5つ以上参加した場合ヒントアンチレイドとアンチヌークは同じアラート設定を使用します。1つのメールアドレスとウェブフックURLで両方のアラートを同時に設定できます。
口座年齢条件
Discordアカウントが認証される前に、最低年齢(日数)を要求することができます。これは単純ですが、作成されたばかりのbot/altアカウントに対する効果的な防御策です。
アカウントの作成日は、DiscordユーザーIDのスノーフレークから取得されます - Discordスノーフレークの最初の42ビットはタイムスタンプをエンコードします。Restore Hubはこれを解析して、余分なAPIコールなしで正確なアカウント作成日を取得します。
サーバー設定でminAccountAgeDaysを設定する。0を指定すると、チェックを無効にします。一般的な値:
- 0日 - 制限なし(デフォルト)
- 7日 - 1週間未満のアカウントをブロック
- 30日 - 1ヶ月未満のアカウントをブロック (ほとんどのサーバーで推奨)
- 90日 - 積極的。新しい正規アカウントはブロックするが、アルトに対しては非常に効果的。
インテリジェンスとリスク・プロファイリング
Restore Hubはユーザー、IP、フィンガープリントのインテリジェンスプロファイルを長期にわたって構築します。このデータはリスクスコアリングと異常検知の原動力となります。
- ユーザー行動プロファイル- 全サーバーでDiscordユーザーを追跡:合計検証数、成功/ブロック率、ユニークIP、ユニーク指紋、ユニークデバイス、国数、VPN使用率、プロキシ使用率、altアカウント可能性(0-100)、総合リスクスコア(0-100)、レベル:低、中、高、重大。
- IPインテリジェンス- 国、ASN、ISP、VPN/プロキシ/Tor/データセンターのフラグ、総試行数、成功/ブロック数、ユニークなDiscordユーザー、ユニークなフィンガープリント、詐欺スコア、リスクスコア。
- 指紋インテリジェンス- ユニークなDiscordユーザー、ユニークなサーバー、ユニークなIP、altアカウントの検出、国/タイムゾーン/OS/デバイスのバリエーション、一貫性フラグ、リスクスコア、リスクレベル。
- サーバーリスクレポート- サーバーごとのリスク評価:合計/検証済みメンバー、検証率、検出されたaltアカウント、VPNブロック数、ファイアウォールブロック数、データセンターIP数、ユニークASN数、国別多様性スコア、総合リスクスコア/レベル(CLEAN、LOW、MEDIUM、HIGH、CRITICAL)。
- アノマリーイベント- 個々の異常検知GEO_IMPOSSIBLE_TRAVEL(2 つの離れた国から短時間に検証されたユーザー)、MASS_VERIFY(同じフィンガープリントが急速に検証される)、FINGERPRINT_REUSE(多くの Discord ユーザーによって使用されたフィンガープリント)、IP_SPAM(1 つの IP から多数の検証)、DEVICE_SWITCH(頻繁にデバイスを変更するユーザー)。
データ保持
セキュリティ関連データには保存期間が定められている:
| データ|保存期間
|---|---|
| 検証イベント|90日間
| ページビュー|90日間
| 監査ログ|1年
| ログインセッション|90日間
| メンバーデータ(検証されたメンバー)|手動で削除されるか、サーバーが削除されるまで保持されます。
| インテリジェンス・プロファイル|無期限に保持(未加工ではなく、集計されたもの)|。