web-dev-qa-db-ja.com

IPアドレスからのログイン試行が多すぎる場合は、IPアドレスを禁止することをお勧めしますか?

IPアドレスは必ずしも特定のデバイスを表すとは限らないため、おそらくネットワーク/会社全体などを表します。 IPアドレスからの大量の不正なログイン試行がある場合、IPアドレスをブロックすることはまったく意味がありますか?

特定のユーザー/アカウント/メールを試行するだけでなく、IPチェックを実装することを計画していましたが、そのため、IPチェックを完全に残しておく方が良いかどうかはわかりません。

一方でこれにより、攻撃者は禁止されることなく、すべてのユーザーに対して特定の量のパスワードを試すことができます(同時に、それらのユーザーはアカウントがログインするため、ログインできなくなりますしばらくロックされています)。

そのようなことを防ぐための正しいアプローチは何ですか(おそらく専用のハードウェアを使用せずに)?

51
Levite

この質問への答えは、サイトのセキュリティ体制に大きく依存します。これは、不正アクセスのリスクが一部のユーザーのサービス拒否のリスクよりも大きいか低いかを決定します。

リスクの高いサイトの場合、特にユーザーベースのほとんどがホームユーザーである可能性が高く、したがって個別のIPアドレスを持っている可能性がある場合は、ブロッキングオプションを使用する可能性があります。

1つの妥協策として、パスワード推測攻撃を検出する場合があります。そのIPアドレスからのログインにしばらくの間、自動化機能(CAPTCHAなど)を追加します。これは、正当なユーザーをサイトから完全にブロックしない一方で、攻撃を阻止するのを困難にする効果があります。

CAPTCHAが完了しても無効なログインが多数発生する場合は、より的を絞った攻撃が行われているように聞こえます(CAPTCHAが優れている場合は、CAPTCHA解決サービスに料金を支払う必要があるため)。ポイントIPアドレスをしばらくブロックして、ブロックを説明するメッセージにユーザーをリダイレクトする傾向があります(「IPアドレスから悪意のあるアクティビティが検出されました。[your_support_email_here]のサポートにお問い合わせください)。

67
Rory McCune

@Roryが言ったように、それはあなたのセキュリティ態勢に依存しますが、それが非常に高リスクのサイトではなく、たまたま同じIPを共有している複数のユーザーをブロックすることを心配している場合、使用できる1つのアプローチは、 IPごとにログインを試行し、ブルートフォース攻撃を法外に高価にするいくつかの非常に穏やかな(人間の)スロットルを適用します。

たとえば、特定のIPアドレスからのX回を超える試行が最後の1秒間に試行された場合(Xは、単一のIPアドレスからの1秒あたりの同時ログイン試行の推定数です) 4 (またはそれ以上 429 )「最近試行回数が多すぎます。しばらく待ってから、もう一度やり直してください。」のようなメッセージが表示されます。

この方法では、IPが共有されていても人間が問題を抱えることはほとんどありませんが、ブルートフォース攻撃は1秒あたりXに制限されます。これは、スロットルされていない攻撃よりも数百から数千倍遅い速度です。 。

自動禁止に頼らずにもう少し安全にしたい場合は、単一のIPから最大ログインしきい値に過度の回数(おそらく100回)に達したときに、サポートに自動メールを送信することもできます。そうすれば、ログを調べて、その特定のIPアドレスが永続的に禁止する価値があるかどうかを自分で判断できます。

このアプローチは、セキュリティを少し犠牲にして使いやすさを犠牲にします。これは、人間の動作を遅くするキャプチャやその他のものを回避しているためです。

14
thomij

別の実行可能なソリューションは、ユーザーがログインするための代替メカニズムを作成することです。ユーザーは、通常のログインメカニズムが無効になっている場合(Malloryによるログイン試行の失敗が多すぎるため)、この代替メカニズムを使用できます。

通常、この代替メカニズムでは、実際のユーザーのみが正常にログインできるようにするために、より多くの情報を要求します。たとえば、パスワードに加えて、ユーザーに次の1つ以上を提供するよう要求する場合があります。

  • SMSコード

  • ハードウェアドングル

  • (安全な)メールに送信されるコード

この代替メカニズムはレート制限されてはなりません(それ以外の場合、マロリーは単にサービスを拒否してゴミをスパムします)。

レート制限されていないため、入力は「無限」のブルートフォース攻撃に抵抗するのに十分な長さである必要があります。

0
Pacerier

私は別の問題に言及したいと思います:これはユーザビリティの大災害になる可能性があります...

このブロックは非常に煩わしいものになる可能性があります(私に何度も起こります)。 NAT経由でのみIPv4を利用できる、ネイティブIPv6アドレスを持つインターネットプロバイダーの場合を考えてみます。このNATの背後に1000人いるとします。つまり、同じIPアドレスを持つ1000人です。 (たぶんIPv4か?)のアドレスでそのうちの1人だけを禁止すると、他の999人も禁止されます。これは良い考えのように聞こえますか?私はそうは思いません。 IPv6アドレスを確認した場合の副作用についてはわかりません。

(IPv4のみのNATを使用する上記のシナリオは、少なくともドイツの一部の主要なインターネットプロバイダーに適用されます)

0
mozzbozz