コンテンツにスキップ

ブルートフォース保護

ブルートフォース攻撃はWallarmが標準搭載していない攻撃タイプの1つであり,本ガイドに記載するように検出の適切な設定が必要です。

通常のブルートフォース攻撃にはパスワードブルートフォース,セッション識別子のブルートフォース,およびクレデンシャルスタッフィングが含まれます。これらの攻撃は,短期間に典型的なURIに対して複数の異なるパラメータ値を強制送信する多数のリクエストによって特徴付けられます。

注意:

  • 本記事で説明するブルートフォース保護は,Wallarmが提供する負荷制御の1つの方法です。あるいは,rate limitingを適用することもできます。rate limitingは着信トラフィックの速度を遅くするためのものであり,ブルートフォース保護は攻撃者を完全にブロックするためのものです。

  • ブルートフォース保護に加えて,類似の方法でforced browsingに対する保護を設定することも可能です。

設定

以下の例を確認して,ブルートフォース保護の設定方法を学びます。

たとえば不正な利用者がさまざまなパスワードを試みてrent-carアプリケーションへの認証エンドポイントを経由して正規のアクセスを取得する試み(ブルートフォース攻撃)を防止したいとします。この保護を提供するため,認証エンドポイントに対して一定時間内のリクエスト数を制限し,その制限を超えたIPをブロックすることができます:

  1. Wallarm Console→Triggersを開き,トリガ作成のウィンドウを表示します。

  2. Brute force」条件を選択します。

  3. 同一IPから30秒間に30リクエストという閾値を設定します。

    これらは一例の値です。自身のトラフィックに合わせてトリガを設定する際は,正当な利用統計を考慮して閾値を定義してください。

  4. Applicationフィルターをrent-carに設定します(アプリケーションはWallarmに登録されている必要があります)。

  5. 下記のスクリーンショットに示すようにURIフィルターを設定します。設定内容は以下のとおりです:

    • パスの**は,「任意の数のコンポーネント」を意味するワイルドカード
    • リクエスト部分の.*login*は,エンドポイントにloginが含まれることを意味する正規表現

      これらを組み合わせることで,例えば以下の場合をカバーします:
      https://rent-car-example.com/users/login
      https://rentappc-example.com/usrs/us/p-login/sq
      (トリガ全体が機能するためには,ドメインが選択したアプリケーションに連携されている必要があります)

      ブルートフォーストリガ例

    • 本例で必要なパターンの設定に加えて,特定のURIを入力するか,URIを指定せず任意のエンドポイントでトリガを動作させることも可能です。

    • ネストされたURIを使用する場合は,trigger processing prioritiesを考慮してください。
  6. この場合,IPフィルターは使用しませんが,特定のIPからのリクエストにのみ反応させるトリガ設定に使用できることに留意してください。

  7. Denylist IP address - Block for 1 hourトリガ反応を選択します。Wallarmは閾値を超えた後,送信元のIPをdenylistに追加し,以降のすべてのリクエストをブロックします。

    ボットのIPがブルートフォース保護によりdenylistに配置された場合でも,デフォルトではWallarmは当該IPからのブロックされたリクエストの統計情報を表示します。

  8. Mark as brute forceトリガ反応を選択します。閾値を超えた後に受信したリクエストはブルートフォース攻撃としてマークされ,Wallarm ConsoleのAttacksセクションに表示されます。場合によっては,本反応のみで攻撃に関する情報を取得でき,ブロックは行いません。

  9. トリガを保存し,Cloud and node synchronization completionを待ちます(通常,2~4分かかります)。

複数のブルートフォース保護用トリガを設定することができます。

テスト

環境でのテスト

環境でBrute forceトリガをテストするには,以下のトリガとリクエスト中のドメインを任意の公開ドメイン(例:example.com)に置き換えてください。ご自身のapplicationを設定し,そのドメインを連携してください。

設定セクションで説明したトリガをテストするには:

  1. rent-car-example.comドメインが,Wallarmに登録されたrent-carアプリケーションの一部として識別されていることを確認してください。

  2. 保護対象のドメインのエンドポイントに対して,設定した閾値を超えるリクエストを送信します。たとえば,rent-car-example.com/users/loginへ50リクエスト送信します:

    for (( i=0 ; $i<51 ; i++ )) ; do curl https://rent-car-example.com/users/login ; done
    
  3. Wallarm Console→IP listsDenylistを開き,送信元IPアドレスがブロックされていることを確認してください。

  4. Attacksセクションを開き,リクエストがブルートフォース攻撃としてリストに表示されていることを確認してください。

    インターフェイス内のブルートフォース攻撃

    表示されるリクエスト数は,トリガ閾値を超えた後に送信されたリクエスト数に対応します(behavioral attacksの詳細)。この数が5を超える場合,リクエストサンプリングが適用され,最初の5ヒットのみ詳細が表示されます(requests samplingの詳細)。

    ブルートフォース攻撃を検索するには,bruteフィルターを使用してください。すべてのフィルターの詳細については,use searchの説明を参照してください。

要件と制限

要件

ブルートフォース攻撃からリソースを保護するには,実際のクライアントのIPアドレスが必要です。フィルタリングノードがプロキシサーバまたはロードバランサの背後に配置されている場合は,実際のクライアントIPアドレスを表示するように設定してください。

制限

ブルートフォース攻撃の兆候を検索する際,Wallarmノードは他の攻撃タイプの兆候が含まれていないHTTPリクエストのみを分析します。