web-dev-qa-db-ja.com

アカウントレベルのDOS攻撃とオンライン総当たり攻撃の両方を同時に軽減するにはどうすればよいですか?

私は最近 この質問 を読んでいました (受け入れられた回答 は、攻撃者がIPに基づくレート制限をバイパスすることは簡単であると主張しているため、あらゆる種類のIPレート制限が行われますブルートフォース攻撃を防ぐために、あまり役に立ちません。しかし、被害者のアカウントに基づいている場合、攻撃者が被害者のアカウントへのアクセスをブロックするのは非常に簡単になります。アカウントレベルのDOS攻撃とオンラインのブルートフォース攻撃(およびこの同じカテゴリに含まれるその他の攻撃)の両方を防ぐ最善の方法は何ですか?

たとえば、1秒だけスリープするだけでは不十分です。攻撃者は最初のリクエストが完了する前に、より多くのリクエストを入れることができるためです(1秒のレイテンシですが、無制限のスループットであり、スループットはブルートフォースにとって重要です)。最初の要求が完了するまで後続の要求がブロックされる場合、IPごとまたはユーザーごとにブロックする必要があり、同じ問題が発生します。

2FAは必ずしも良いソリューションとは限りません。なぜなら、悪いことに、多くの人々は2FAを使用できないからです。

1
john01dav

攻撃者が複数のIPアドレスを制御できる場合でも、IPベースのレート制限を使用できます。

数万のIPアドレスを追跡するのは簡単です。IPアドレス、アクセスしたアカウント、認証エラーの数を含むデータベーステーブルを作成するだけです。しきい値を超えている場合は、応答を遅くしてください。

たとえば、1秒間スリープするだけでは不十分です。攻撃者は、最初の要求が完了する前に、さらに多くの要求を入れることができるためです。

この場合、テーブルを調べて、リクエストが5つ以上あるかどうかを確認し、リクエストの最後に待機時間を追加する必要があります。したがって、攻撃者が10個または1000個のリクエストを送信した場合でも、待機する必要があります。待機時間は、攻撃コストをさらに増加させるために、線形ではなく指数関数的である必要があります。

攻撃者にとって、数百を超えるIPアドレスを制御することは簡単ではありません。それらはレート制限によって遅くなり、攻撃のコストが大幅に増加します。しかし、被害者は影響を受けません。

1
ThoriumBR