web-dev-qa-db-ja.com

ブルートフォースとサービス拒否

今日、私は非常に興味深い問題を提示しました。

管理パネルを備えたアプリケーションがあります。彼らは標準であるので、あなたはいくつかのアカウントを知っています。次の2つが必要です。

  • ブルートフォース攻撃を防ぎたい
  • サービス拒否を防ぎたい

現時点では、ユーザーアカウントは5回試行した後にロックされていました。電子メールでパスワードをリセットする必要があったことを意味します。これにより、ブルートフォース攻撃が成功する可能性が軽減されます。

一方、リスクは、いくつかのデフォルトアカウントがあるため、誰かが意図的に不正なパスワードを送信し続け、アカウントを無効にし続けることです。これにより、管理アカウントに一種のサービス拒否攻撃が発生します。

私の解決策は、VPN経由でのみ管理パネルにアクセスできるようにすることでした。したがって、パネルにログインする前に、まずVPNにアクセスする必要があります。

しかし、これが選択肢にならない場合、どうすればよいでしょうか。 (ブルートフォース攻撃を実行するIPを継続的にブロックすることは別として)

16
Lucas Kauffman

管理者アカウントについては、あなたは正しかった、VPNを要求することは正しい方向です。
さらに良いことに、管理者ユーザーには多要素認証が必要です。

これらは常に良いアイデアです。


とはいえ、何らかの理由でそれが実行不可能であり、通常のパブリックパスワードログインで立ち往生している場合でも、すべてが失われることはありません。

管理者アカウントがすべて強力なパスワードポリシーの対象であると仮定すると、直接の総当り攻撃は非常に多くの試行を要します。ログインフォームを介して、インターネットを介してパスワードをブルートフォースにしようとすると、非常に、非常に、非常に、非常に長い時間がかかります。これは、多数のログイン試行を並行して実行できる場合にのみ可能です。コンピュータ。
ここでの重要な要素はspeedです。

したがって、解決策は、実際のユーザー(ブルートフォースの進行と同時に同じアカウントでログインしようとしているユーザー)を停止することなく、繰り返されるログイン試行を遅くすることです。
いいえ、CAPTCHAを試すことさえ考えないでください。これらは多少の効果はありますが、攻撃の流れを1桁遅くするのに十分な距離ではありません(最善策はおそらく約20%です) -十分に遅くない)。

より効果的な(そしてより単純な)ソリューションはレート制限です。
つまり1分間に5回以下のログイン試行。または50。または500。
これは、非常に短い時間遅延で、自動的に解放されるロックアウトメカニズムと見なすこともできます。
数学はまだ有利です-予想される脅威に応じて、任意の割合で上限を設定できます)、正規ユーザーがログインするための余裕を残すことができます。

複数のロックアウトの後、IPごとに長いロックアウトを実装することができます。ただし、IPアドレスは通常、特定のユーザーと(共有IP、ローミングIPなどによって)一致しないため、そのアプローチには注意してください。必要であれば、それを使用してください。

さらに、ロックアウトを数回行った後、管理者に警告して、さらに手動で応答できるようにしてください。

6
AviD

簡単な解決策として、ユーザーごと、IPアドレスごとに指数関数的に増加する遅延を実装するとします。

IPからの試行1と2の間に必要な遅延a.b.c.d for user x:1秒

... 2と3を試行:2秒

... 3と4を試行:4秒

...

... 7と8を試行:1分4秒

こうすることで、攻撃者はIPアドレスまたは個々のユーザーからDoSアクセスできなくなり、遅延が急速に無理になるため、ブルートフォースをかなり効果的に軽減できます。彼らが多数のIPアドレスにアクセスできる場合でも、パスワードのキースペースをブルートフォースするのに十分ではなく、いくつかの辞書の単語だけがあります。

これはwould同じパスワードでブルートフォースユーザーを許可しますが、失敗した要求の数が表示された場合は、おそらくフラグを立てる必要があります(複数の不正な試行を行ったユーザーはおそらく珍しいことではないため) 、しかし、同じIPアドレスから連続して複数のユーザーが悪意のある試みを行った場合は、疑わしいでしょう)。

13
pdubs

これを行う正しい方法は、IPごとのレート制限を使用し、多数の無効なログイン試行があったユーザーアカウントのログイン時にキャプチャを導入することです。 CAPTCHAは、主に非対象のドライブバイ攻撃を防ぐために存在するため、特に強力である必要はありません。この方法の利点の1つは、DoS状態を引き起こさずに、シングルユーザーによる多数のパスワードによる攻撃とマルチユーザーによる単一パスワードによる攻撃の両方を防止できることです。

ただし、タイムアウトを無制限に増やすことはお勧めしません。攻撃者がユーザーと同じネットワーク上にいる場合、彼らは同じ公開IPアドレスを持っている可能性があり、悪質なログイン要求を絶えず送信することにより、ユーザーを本質的に永久にタイムアウトさせることができます。これは、大部分の場合はあいまいなケースかもしれませんが、大学と学校のネットワークを検討してください。代わりに、レート制限により、失敗した最初の2回の試行、3回目の試行で5秒、3回目の試行で15秒、以降のすべての試行で30秒の遅延は発生しません。

興味深い例の1つは、多数のソースIPからの多ユーザー単一パスワード攻撃です。 Tor以上。これはおそらくこれらのメカニズムのほとんどを無効にするでしょう。このような攻撃シナリオを防ぐために私が見た最良の方法の1つは、global失敗したログインレートを監視し、大規模な攻撃が検出されたときにサイト全体のレート制限とCAPTCHAを導入することです。

固定管理者アカウントの場合は、別のログイン画面を用意しておく価値があります。これはより厳密に監視および制御でき、ほとんどのドライブバイ試行での問題を回避できます。

パスワードを推測する試みのコストを増やすためのもう1つの便利なメカニズムは、クライアント側の作業証明機能です。私はいくつかのサイトでこれらが使用されているのを見てきましたが、かなりきちんとしていると思います。基本的に、サーバーはチャレンジ値cを送信し、クライアントはsha1(c || s)の最初のsビットがゼロになるようにソルト値nを計算する必要があります。 nの値は、反復カウントをキー派生アルゴリズムで調整できるのと同じ方法で調整できます。クライアントは、基準を満たすsの値を(ブルートフォースで)計算し、サーバーに送信する必要があります。その後、サーバーはsが正しいことを簡単かつ安価に検証できます。クライアント側でのこれの実装は、通常JavaScriptで行われます。正当なユーザーの場合、これはログイン時に1秒以下の遅延をもたらすはずですが、独自のシステムを使用して数千のパスワードを試行する攻撃者にとっては、時間と電力消費の点でコストが増加します。さらに、これらのパスワード試行のプラットフォームとしてボットネットまたはその他のマルウェアが使用されている場合、CPU使用率が高いと、マシンに問題があることをユーザーに警告する可能性が高くなります。

7
Polynomial

ローテクソリューションを提案することはできますか?デフォルトのアカウントはありません。 linux/windowsでrootと管理者を削除することが、私が最初に行うことです。不明な管理パネルについて話すことはできませんが、これはオプションかもしれません。

6
user17471

ブルートフォース攻撃を実行するIPを継続的にブロックすることは、それを回避するための完全に良い方法です。アプリケーションが失敗した試行をsyslogなどのいくつかの標準的な場所に記録する場合、fail2banのjailを簡単に作成して、いくつかの認証失敗後に問題のあるIPを自動的にブロックできます。

2
mricon

それらの絵の質問。この画像に表示されているWordは何ですか。試行3が失敗した後、ログインの試行をプッシュするには、画像に表示されているWordに回答する必要があります。この方法では、実際にはアカウントをロックアウトしませんが、入力要求を変更することにより、自動システムが機能し続けるのを防ぎます。

気になる場合は、OCRで複数の回答が含まれる質問を、バブルフィル(ラジオボタン)で質問してください。つまり、人間にはわかるが、機械にはわからない質問にします。

オレンジ色の次の韻はどれですか?

A)ワシントンB)何もないC)サスカッチなど...

それらを組み合わせることもできます。

最後に、多要素認証を使用します。 iOSアプリを使用してStarCraftアカウント(オタクの値が上がったところ)にログインし、トークンを取得します。

1
Everett

いくつかのことが頭に浮かびます。

1)デフォルトの管理ユーザー名は使用しないでください。その理由はありません。あいまいさによるセキュリティは実際には安全ではありませんが、管理者のユーザー名を明確にしておくことで、攻撃者にとってはさらに楽になります。管理者のユーザー名がわからない場合は、ロックされたままにすることはできません。

2)電子メールからセッションを自動的に認証して、パスワードをリセットし、アクセスを許可します。これにより、ロックアウトを心配することなく、別の方法でアクセスできます。それを許可するために電子メールを受け取る必要があるので、それはより退屈ですが、それは機能します。一度ユーザー名を変更すると、効果的に攻撃を阻止できます。

3)IPホワイトリスト-これは常にオプションである必要があります。必要に応じて、期間限定でホワイトリストに登録して、#2の動作と同様に実行することができます。この場合、電子メールリンクをクリックするとホワイトリストが追加されます。 。

4)VPNは機能しますが、基本的にはIPをホワイトリストに登録するのに似ていますが、正当なクライアントに動的IPを許可します。ユーザー名を変更することは、この種のDoS攻撃を回避するための最も簡単な方法であるため、コンテキストによってはやりすぎかもしれません。

1
AJ Henderson

ユーザーをユーザー名だけでブロックするのではなく、ユーザー名+ IPでブロックします。これにより、正当なユーザーがブロックされることはありません。一方、dosボットはIPを切り替える必要があり、最終的にボットファームのIP範囲全体がブロックされます。

0
cen