CAPTCHAがシステムのアカウントロックアウト制御で有効になっている(5回連続して失敗した後、アカウントは15分間ロックされる)と仮定します。
総当たり攻撃はまだありそうな脅威ですか?
あなたが説明する保護はあなたが考慮すべき良いものですが、まだ弱点があるかもしれません:
多分。
「ブルートフォース」の定義方法によって異なります。
X回の不正な試行後のロックアウトは、攻撃者が単一の標的を狙っているアカウントを保護するのに最適です。
攻撃者がいくつかの一般的なパスワード「password、password123など」を選択した別のシナリオがあります。そして、単一のユーザーを攻撃するのではなく、システムで知っているeveryアカウントで4つの一般的なパスワードを試します。
User: Jim
PW: password, password123, letmein, secret
User: Bob
PW: password, password123, letmein, secret
User: Alice
PW: password, password123, letmein, secret
これは、攻撃者がダークネットでの再販のために資格情報を収集するか、パスワードが再利用された可能性がある他のサービスに横に移動しようとしているシナリオでより一般的です。
アカウントまたはIPレベルごとではなく、全体の無効なログインの割合をカウントするために何かを追加することをお勧めします。
それは別の意味での脅威です。 5回失敗した後でアカウントを15分間ロックすると、効果的にDoSメカニズムが組み込まれています。
私は本当に侵入したくないと思いますが、私は大混乱を引き起こすだけで大丈夫です、問題ありません。ランダムなユーザー名で毎秒数千回ログインするだけです。ねえ、私は気にしないCAPTCHAをすることさえ気にしないでしょう。 failとlock upをするだけです。
一定数の失敗後の一定時間よりも優れた戦略は、二次(または指数)成長です。一部のAVMルーターはそれを行います。最初のログイン失敗、15秒のロックアウト、次の失敗は30秒などです。これは、正当なユーザーの手間が大幅に減り、攻撃者にとってははるかに面倒です。
DoSをより困難にするには、IPアドレスとアカウント名を含む一種のレシピが必要です。アカウントとIPのペアごとの最大遅延を許容値に制限します。そうしないと、正当なユーザーが依然として簡単かつ不確定にDoSされる可能性があります。ただし、指数関数的増加は、「無限の試行」問題をより適切に処理します。
ユーザー名とパスワードのペアオンラインをブルートフォースで実際に見つけることは、まあ、人々が愚かではないと仮定すると、実質的に絶望的です。あいにく、人々は愚かですので、彼らがトップ10の愚かなパスワードの1つを持たないことを想定することはできません。だから、はい、そこにも少し脅威があります。特に、1つのサーバーで1人のユーザーをターゲットにするのは難しいかもしれませんが、純粋にユーザー名ベースの制御システムでは、同じサーバーで1,000人のユーザーを並行してターゲットにすることができます。問題(それぞれのスコアリングは1つだけ失敗します!)と、1,000台のサーバーで並列に実行できます。また、このスクリプトを数週間(数か月、数年...)実行し続けて、15〜20分ごとに再試行しても、コストはかかりません。
したがって、individualアカウントの場合、攻撃者としての可能性は非常に小さくなりますが、数が増えるとvirtually infinityyouどこかで誰かを殴るのは当然ですが、結局それは避けられません。それ以外の場合は、1,000人のユーザーを並行して試すのは簡単なので、また計算でIPアドレスを考慮する必要があることは明らかです。それでも、数千のボットを持つボットネットに対して100%の保護を提供するわけではありませんが、攻撃の効果がやや低くなり、より多くの作業と管理が必要になります。もっと仕事がいいです。
深刻なターゲットになるとレースに勝つことはできませんが、攻撃者の作業を難しくするほど、攻撃者は他の誰か(より簡単なターゲット)を選択する可能性が高くなります。
これは、玄関のドアを大きく開いたままにするのではなく、鍵をかけるのとほとんど同じです。強盗は窓を簡単に破ることができ、最終的には誰かが侵入するのを防ぐためにできることはありません。しかし、隣人の家のドアを開けて窓を壊さなければならないという選択を考えると、彼はより簡単な方法を選ぶでしょう。費用が減り、利益も同じ。
はい、それはまだ脅威です:
あなたが提案したものを改善するためのアイデア:
15 * 2^n
分にして、上限を2時間にします。ここで、n
は過去24時間の以前のロックアウトの数です(最初の試行は15分のロックアウト、2番目は30です) 、3番目は60、4番目以降は120)です。低速ブルートフォース攻撃などがあり、タイムアウトやロックアウトによってアカウントに侵入するように特別に設計されています。
攻撃者がしきい値を把握できる場合(試行的に実行できる場合)、ボットを作成してそのしきい値を下回らないようにすることができます。
もちろん、これは特定の期間に試行できる組み合わせの数を制限します。そのため、この種の攻撃は数か月または数年にわたって実行され、かなり長いパスワードでアカウントを危険にさらすことはほとんどありません。
したがって、適切なパスワードポリシー(これは別のトピックですが、ここでは、複雑さ!=セキュリティと長さ>複雑さ)と説明したシステムの強固な実装を組み合わせると、侵害の可能性を大幅に減らすことができます。ほとんどの場合、残りのリスクがリスク許容限度内に十分収まる程度です。
レート制限ログイン、アカウントロックなどは、ログイン画面に対する経済的に実行可能なブルートフォース攻撃を阻止するのに適していますが、必ずしも攻撃が行われるわけではありません。
ブルートフォース攻撃はログイン画面自体(制限されている)に対してではなく、データのコピーに対して行われるため、アカウントが侵害されることがよくあります。攻撃者が侵害されたサーバーまたはその他の手段を介してデータにアクセスできる場合、ブルートフォース攻撃は、実際にはアカウントとパスワードをダウンロードし、さらに強力なマシンで暗号化を解くことです。
ブルートフォースは多くの「力」を使う必要はありません。ブルートフォースは何日も実行され、小さなものでしたが、次々と低下し続けました。 captchaは、断固とした攻撃者にとっては問題ではないと考えています。
制約があっても、これらの制限は単一のアカウントにのみ適用されることを暗示していました。したがって、複数のアカウントがあることを知っている場合でも、プロセスを自動化して、試行を続けることができます。
私はあなたの制約で可能なキースペース全体を強引に強制することはできませんが、2日でごくわずかにアカウントごとに上位1000個のパスワードを強制することができます。
トップ1000のパスワードのリストがユーザーの妥当な割合をカバーする可能性が最も高いことを考えると、システムにすぐにアクセスできるはずです。
それで、あなたはそれから守ることができますか?
IPごとのトライアルを制限しますか? ->回避するためのベクター:ボットネット/ VPN
では、「不可能な旅行」をリストに追加してみましょう。 (ユーザーは1分以内にドイツと米国からログインします)
では、同じIPがさまざまなユーザーを試すのはどうでしょうか?
考慮すべき1つのことは、保護しようとするリソースの価値と、それを保護するために実行する追加のステップです。システムの強度に対するもう1つの非常に安全な追加は、2番目の要素です。ただし、使用する認証や、必要な認証の数によっては、追加のコストが発生する可能性があります。たとえば、スタンドアロンサービスとして、Azureは10認証あたり1,4ドルを請求します。または、ユーザーごとに一意のデータを使用して、ある種の無料サービスまたは「グリッド」システムを使用することもできます。
総当たり攻撃はまだありそうな脅威ですか?
「可能性」は、ターゲットがどれだけおいしいかによって異なります。あなたが望ましい標的であれば、そうです、それらは脅威です。
レート制限とロックアウトを備えたタイムアウトはブルートフォースを処理しますが、XはY分でしか試行されないため、外部の攻撃者がほとんど努力せずにユーザーをロックアウトできるため、これは大きな問題です。
この場合、脅威を選択できます。個々のアカウントを保護することと引き換えに、攻撃者がユーザーをロックアウトできると決めています。これは実際にデータを盗んだり変更したりするのとは異なる攻撃ですが、それでも攻撃です。
より良い解決策は、強力なパスワードと2要素認証を要求し、ロックアウトしないことです。
これらの両方を実行すると、アカウントはかなり安全になり、ユーザーはロックアウトされません。
攻撃者はアクセスするためにパスワードデータベースと2FAシークレットを盗み、クラックする必要があるため、この脆弱性は大幅に軽減されますが、攻撃者がそれを実行するのに十分な深さになると、実際にはユーザーアカウントは必要なくなります。
これは本当にあなたが何を保護しているかに依存します。 Wordpressブログであり、ユーザーが最新の投稿にコメントできない場合、それは大した問題ではありません。サイトに財務、医療、またはセキュリティの記録が含まれている場合、それは大きな問題です。