web-dev-qa-db-ja.com

パスワードの試行が3回失敗した後、サイトがロックを実装するのはなぜですか?

無限のパスワード試行を許可しないことの背後にある理由を知っています-総当たり攻撃は meatspace の弱点ではありませんが、コンピューターのセキュリティの問題です-しかし、彼らはどこから数3を取得したのですか?

簡単にアクティブ化できるロックアウトポリシーを実装する場合、サービス拒否は問題ではありませんか?

実際のセキュリティの脅威と使いやすさのバランスをとるアカウントをロックアウトする前に選択する最適な数または範囲を示す厳しい調査はありますか?

よく考えてみると、今日一般的に使用されているパスワードの複雑さで、3回の試行と20回の試行の間に測定可能なセキュリティの違いは見られません。

(私はこれが主観のスカートを知っていますが、測定ベースの意見を探しています)

107
Bradley Kreider

最近、オレンジ郡でのOWASP AppSec 2010カンファレンスで、AT&TのBill Cheswickがこの問題について長々と話しました。

簡単に言うと、研究が不十分です。

長い間、これはそれほど苦痛のないアカウントロックのための彼のアイデアのいくつかです:

  • 重複するパスワードの試行をカウントしないでください(おそらく、ユーザーがタイプミスしたと考えています)
  • プライマリパスワードについてパスワードのヒントを作成し、(弱い)セカンダリはありません
  • 信頼できるユーザーがユーザーを保証できるようにして、パスワードを変更できるようにします。
  • 時間を増やしながらアカウントをロックする
  • ユーザーにパスワード規則を思い出させます。
75
Zian Choy

PCIデータセキュリティ基準に準拠するWebサイトは、セクションに準拠する必要があります

  • 8.5.13(6回以下の試行後にユーザーIDをロックアウトすることにより、繰り返しアクセスの試行を制限します)
  • 8.5.14(ロックアウト期間を30分に設定するか、管理者がユーザーIDを有効にするまで)。

残念ながら、設計者が実装した内容に必ずしも同意しない場合でも、クレジットカードを受け入れる多くのサイトが厳格なロックアウトポリシーを採用しているのはこのためです。

編集:これらの要件は「非消費者ユーザー」のシステムにのみ適用されるため、カードを受け入れる顧客サイトには影響しないことに注意してください。

37
realworldcoder

私の経験では、ロックアウトメカニズムの人気が低下しています(少なくともWebアプリでは)。一連の試行が失敗した後にアカウントをロックアウトする代わりに、認証を成功させるために追加情報を要求し始めます。

22
Tate Hansen

それが技術的なものではなく、野球の「ストライク」ルールから来たとしても、驚かないでしょう。

正当化する理由の1つ(とにかく英数字のパスワード)は

通常、失敗した試行は、タイプミスまたはCAPSのオン/オフの問題です。ログオンしようとして拒否され(1)、入力ミスと思われるために再試行し(2)、CAPSキーがオンになっていることを確認して、3回目の試行に参加します。

通常は数値コードが入力されている場合、ネットワークから携帯電話のロックを解除することはできません。

より良い提案は、連続して失敗したログイン試行の間のますます増大する遅延です。最初に瞬時の再試行を許可し、次に1秒、2、4、8 ...をブルートフォース攻撃に対応するのに十分な1分間の間隔ですばやく待機します。

18
Gary

OPに同意します。ロックアウトによって何が保護されるかについて考えた場合、3回または20回(つまり100回)の違いはありません。これらのロックアウトで達成できることは、忘れっぽいユーザーを罰することを除いて、ブルートフォース攻撃を防ぐことです。攻撃が進行中であるという警告をトリガーするためにそれを使用することもできますが、それは主な目的ではありません(もしそうなら、それはあなたが自分の監視作業を簡単にするためにユーザーを故意にDoSすることを意味します。それは非常に良い習慣)。

誰かがあなたのパスワードデータベースを持っていて、それをオフラインでハックできるなら、彼らは無制限の試みをします。あなたの20回の推測の限界はそこでは良くありません。

誰かがオンラインの総当たりを試みている場合、必要なのは、「十分に長い」、IRTが応答するのに十分な長さ、または攻撃者が断念するのに十分な長さを耐えられるパスワードだけです。

Confickerパスワードデータベースは、パスワードがIIRCの200をわずかに下回っています。このデータベースには、地球上で最もおかしなパスワードがいくつかあります。今、あなたのパスワードがこのリストに載っていないと仮定しましょう。ロックせずに、たとえば15分ごとに20回のパスワード試行を許可すると、攻撃者がそのリストを通過するのに2時間以上かかります。

実際、推測リストを、そのユーザーに関する関連情報(kidsname02、birthday99など)から作成されたパスワードに絞り込んだとしても、少なくとも数十のパスワードが残り、辞書攻撃が1時間程度になる可能性があります。もっと。時間の経過に伴う一定の誤った推測は、アラームをトリガーするものであり、数分以内に少数の誤ったパスワードではありません。

したがって、最も基本的なパスワードの落とし穴からユーザーを遠ざけることができれば、多くの誤ったパスワード試行を喜んで受け入れることができます。

個人的に、私は15に線を引きます。完全に恣意的で、ほとんどが実用的なものです。実際のユーザーはこれよりずっと前に諦めていることがわかります。通常、試行回数が多い場合、それは古い資格情報でどこかにハングしているプロセスまたはセッションです。そうでない場合は、攻撃の検索について説明できます。

15
itinsecurity

これは、奇妙なDDOS攻撃のリスクを伴う愚かな恣意的なルールです。 MarvがWebサイトXを嫌っており、WebサイトXにはY回のロックアウト試行ポリシーがあるとします。 Marvは、スクリプトに偽のパスワードを使用してランダムな名前を自動的にY回試行させることで、深刻な問題を引き起こす可能性があります。パスワードが機能したとしても、Marvはそれを気にせず無視するでしょう。これにより、ウェブサイトXの多くのユーザーが事実上ロックアウトされ、多くのユーザーの不満が生じます。また、銀行である場合は、パスワードをリセットするために呼び出す必要があるユーザーを助けてください。誰もこれを試していないことに驚いています。

11
AmaDaden

私はこの議論に遅れていると思いますが、ここに何か追加したいことがあるといいのですが。

アカウントロックアウトポリシー(連続する無効な試行の数は通常、ほとんどの組織では1桁の範囲です)は、自動化されたブルートフォース攻撃に対してのみ考案されたものではありません。

これは、特にパスワードの一部をすでに知っている個人による、人間の攻撃者によるパスワード推測からの保護です。攻撃者は次の方法でパスワードフラグメントを取得する可能性があります

  • ショルダーサーフィン
  • パスワードを選択するために個人が使用するパターンを推測する。結局のところ、password#01password#のように、シーケンス内の要素を含むパスワードを1回使用した回数02など.

もちろん、欠点は、しきい値が低いと、サービス拒否が発生し、ビジネスに関連するコストが発生することです。 Microsoftが発行する アカウントロックアウトのベストプラクティスホワイトペーパー は、推奨値10を提供しています。また、Windowsのアカウントロックアウトポリシーのパラメーターを使用して、攻撃が成功する確率を推定する方法についても説明しています。

例として、アカウントがLockoutDurationレジストリ値0でロックされている場合、管理者がパスワードをリセットすると想定します。LockoutDurationレジストリ値を0に設定し、LockoutThresholdレジストリ値を20に設定すると、悪意のあるユーザーはそれに対して20回の推測を行います。パスワード。ロックアウト期間が30分である場合、悪意のあるユーザーは、変更されるまで、そのパスワードに対して30分ごとに20回の推測を行います。これは、悪意のあるユーザーが利用できる推測の総数の非常に大きな違いです。

対照的に、管理者がパスワードの最大有効期間を42日に設定した場合、最初の悪意のあるユーザーは特定のパスワードに対して20回の推測しかできませんが、2番目の悪意のあるユーザーは40,320回の推測(これまでに20回のロックアウトに毎日48回のロックアウトを掛けると、ユーザーがパスワードを変更する42日前に乗算されます)。デフォルトのパスワード設定では、約10 ^ 12の可能なパスワードがあります。これは、悪意のあるユーザーがパスワードを推測する可能性が約.000004パーセント(%)であることを意味します。最適化された推測スキームを使用すると、このパーセンテージはおそらくより大きなパーセンテージになります。

もちろん、一般の人が適切な数を選ぶのは容易ではなく、そのような決定は慎重に検討されるべきです。したがって、一部の組織では、アカウントロックアウトポリシーの金銭的影響と、提供されるセキュリティ上の利点を維持しながらポリシーを緩和するという関連する利点を計算する努力を怠っていると考えて間違いありません。

10
Vineet Reynolds

これには2つの側面があります。あなたが言うように、最初は総当たり攻撃を防ぐことです。

この目的のために、実際には何回でも試行する必要があります-3、5、20、2000 ...適切なパスワードポリシー(長さ+複雑さ+ ...)を使用して、十分な大きさのキースペースを指定します一種のスロットル(1時間あたりの試行回数X)は、スペース全体の総当たりがかなりの数十年かかることを保証します。 (計算する)。

ロックアウトは要件であるはずですが、ロックアウトは一時的なものであり、しばらくすると自動的にロック解除されます。

したがって、ロックアウト前の試行回数は任意です。

ただし、ここには別の、より微妙な、数学以外の問題があります。

1人のユーザーが誤ったパスワードを2000回続けて繰り返し入力しても意味がありません。

つまり、任意に2000を選択した場合、これまではlongであり、これは正当なユーザーではないことがわかります。したがって、それは本当にビジネスの理にかなったものと、ビジネスに焦点を当てたリスク分析のトレードオフに帰着します。

歴史的には、トレードオフはリスク側に偏っていたと思います。パスワードは短く、複雑ではないため、3または10の差はより大きくなりました。また、人々はより少ないパスワードを持っているため、覚えやすくなりました...そして、ユーザーは一般に技術的により精通しています。

現在、ビジネスへの影響を考慮すると、3つは実際には意味がありません。これは本当にyourアプリにとって何が意味があるのか​​、どのタイプのユーザー、どのくらいの頻度でログインするかなどの問題です。通常、失敗した正当な試行の数を把握することをお勧めします、それを2倍にします。

@ realworldcoderが言及したように 、PCIは任意に6を選択し、PCIの対象となる場合、ここではあまり決断しません。それ以外の場合は、意味のある番号を選択してください。)

8
AviD

連続して失敗した試行を遅らせてブルートフォースを防ぐために「ロックアウト」をインクリメントする時間の提案に関して、これはターゲットユーザーの攻撃でのみ機能することを覚えておいてください。

攻撃者がシステムに侵入することのみに関心がある場合、攻撃者は幅広の最初の攻撃を実行する可能性があります(すべての既知/推測されたユーザー名を循環させてから次のパスワードに循環させます)。それが適切に行われた場合、マシンの分散ネットワークから来る可能性があり、遅延システムも機能していないことは非常に簡単です。

他の人が述べたように、攻撃を早期に発見するために失敗した試みを正しく監視することは重要です。

はい、3回の試行は非常に恣意的であり、DoSリスクをもたらします。人々が一般向けシステムに使用するのをやめてほしいと思います...お願いします!

別のソリューション:2要素の識別。 RSAトークン。 「ID番号」の付いた単一のRSAトークンを個人的に所有する方法があったとしても。次に、この「ID番号」を任意のシステムに登録できます。これには、ログインするためのパスワードとともにトークンの現在の値が必要になります。

しかし、それは実装と信頼に関する他のたくさんの問題を引き起こします...

7
Dan McGrath

公開企業(証券取引所の株式を販売)は、サーベンスオクスリー法に基づいて規制されており、年に数回、コンプライアンスの監査を受けています。重要なソフトウェアアプリケーションは、特定のセキュリティ機能に準拠する必要があります。これは、パスワードの試行に失敗した後にアカウントをロックするための1つの機能です。

これらのアプリケーションの大半は、機能が有効になっている会社のActive Directoryに統合することです。

3
Jose

ここにあります 私があなたが探していると私が信じるものを説明する、本当に素晴らしい読み物。彼らは、ストライクポリシー、テンストライクポリシー、インフィニットストライクポリシーを使用して大学生からデータを取得し、3から10に数値を上げることを提案しました(ログインの成功が約3倍になるため)。

ここで主観に戻ります...

ほとんどの場所で3ストライクポリシーが使用されているのはなぜですか?それは確かに、時間の経過とともに発展した単なる発見的手法です。管理者とユーザーにとって、3回の試行は多かれ少なかれ中間点であり、3回のチャンスで十分です。

パスワードの背後にある考え方は、あなたが想定されていることです。あなたは本当に一度以上必要するべきではありません。間違いはあると思いますが、戦争では...あなたは本当にあなたが味方であることを証明する唯一の機会を得ますよね?.

3
user124863

彼らはランダムに3を選択したに違いありません。これは非常に低いです。おそらく、過去にセキュリティの問題があり、問題に正しく対処または修正するのではなく、低いロックアウト番号を選択した可能性があります。

時間の増加に応じてユーザーをロックアウトする方法を好みます。ただし、ユーザー名に基づいてキーを設定するのではなく、ユーザーのIPアドレスを使用します。これは、ユーザーが複数のユーザー名を試す可能性があるためです。ユーザーが無効な試行を5回行った後、ロックアウト時間を(無効なログイン試行の回数)^ 2秒に設定しました。ユーザーが比較的少ない回数で自分のパスワードを知らない場合、サイトで提供されているパスワード回復ツールを使用することがほとんどです。それが本当のハックの試みである場合、それはハッカーにとって非常に苛立たしくなり、結局彼らはあきらめるでしょう。ボットは何度も試行するため、ログインが許可されることはほとんどありません...たとえば、1000のパスワードを試行した場合(実際にそれを行うには長い時間がかかります)、許可されるまで11日半待つ必要があります。 1001番目のパスワードを試してください。乗数を^ 3に増やすことで、抑止力を簡単に高めることができます。それ以上の値を設定すると、有効な人間のユーザーには高すぎる可能性があります。

2
Rush Frisby

少し前に、次の基本ルールに従うログインセキュリティスキームを実装しました。

  1. 最初に失敗した試みは即座にフィードバックを提供します。 彼らはおそらくそれを太った指でした。
  2. 2回目から5回目の試行が失敗したため、失敗した試行ごとに1秒ずつ応答が遅延しました。 例:2秒、3秒、4秒...
  3. 5回目の試行が失敗した場合、セッションは終了し、ブラウザを閉じて再試行する必要があることを示すメッセージが表示されました。

私にとって、これは総当たり攻撃を防ぐのに十分以上のものでした。エンドユーザーにとってはせいぜい不便であり、サポートのための追加の作業は作成しませんでした。

2
Josh