ReCAPTCHAが、BruteForceがボットを防ぐのに十分なほど強力であるか、または5回の試行ごとにユーザーに固有のメールを送信するなど、誰かがアカウントにログオンし、メールが送信されていないときにアカウントをブロックしようとするなど、セキュリティを強化する必要があるかと思いました。チェックされていません。
目的は、Webサイトでの自動パスワード推測を防ぐことです。
ReCaptchaはクライアント側から見ると素晴らしいですが、完璧ではありません。
ご指摘のメール手法はアカウントロックダウンと呼ばれ、ブルートフォース攻撃に対する非常に効果的な抑止力です。これは、クライアント側とは完全に独立した追加のレイヤーであるため、実装します。
実装できるもう1つの方法は、スロットルです。人間が1秒以内に2つの要求(または適切と考える任意の値)を送信するのは現実的ではないため、受け入れられる接続の頻度を制限します。 iptablesでは、次のようにします。
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
( debian-administration.org からの例)これにより、ポート22への要求が3 /分に制限され、その他の要求はすべて破棄されます。これは、ログインルーチン以外の操作にも役立ちます。
CAPTCHAは通常、「ユーザー」入力が実際の人からのものであることを保証することを目的としています。
Webサイトのログインメカニズムに対する自動化された攻撃を防ぐのに役立ちますが、1回または2回のログインに失敗した後にのみCAPTCHAを有効にするようにシステムを構成できない限り、ユーザーエクスペリエンス(ユーザー名、パスワード、CAPTCHA)に悪影響を及ぼす可能性があります。
ユーザーエクスペリエンスを損なうことなく攻撃を制御するための代替メカニズムは、一定期間内に失敗したログイン試行回数の制限とそれに続くロックアウト期間を含むWebサイトのアクセス制御ポリシーです。これは、自動化された攻撃と標的型攻撃(つまり、ユーザーベースのパスワード推測攻撃と自動化された攻撃)の両方を阻止するのに役立ち、実質的に2対1になります。
時限ロックアウト(つまり10分後に自動リセット)を課すか、またはアカウントをロックして有効なユーザーが何らかの方法で応答するのを待つかは、特定のシナリオに基づいた判断呼び出しです。ユーザー数、利用可能なヘルプデスクスタッフの数など.
ログインに失敗したことをユーザーに通知すると、不正アクセスの可能性がある試みをユーザーに知らせるのに役立ちますが、多くの歓迎されないサポートコールが発生する可能性があるため、適切なレベルにバーを設定してください。
reCAPTCHAは確かにパスワードの推測を難しくしますが、不可能ではありません。ハッカーはcaptchaで保護されたグッズ(ゲーム、ダウンロードなど)を含むサイトを設定し、そこにcaptchaをリダイレクトします。ダウンロードを取得しようとするユーザーはyour captchasを解決し、ハッカーがそれを使用して別のパスワードを推測できるようにします。電子メールの所有者だけがアカウントのロックを解除できるため、アカウントロックダウンはより効果的です。また、ユーザーにとってより混乱を招きます。
Captchaとアカウントのロックダウンはどちらもひどいユーザーエクスペリエンスであり、そのようなテクニックを実行できるようにするには、サイトがかなり優れている/ユニークである必要があることに注意してください。最初にキャプチャを要求する前に、ユーザーに少なくとも数回の試行を与えてください。そうしないと、ユーザーは同じサービスを提供している次のサイトに移動するだけです。
セキュリティを強化するもう1つの方法は、2要素認証です。これは、ユーザーが自分の携帯(携帯)電話番号を登録する場所であり、ログオンするたびに、サーバーはSMSメッセージを介してコードを送信します。これは、アクセスする前にユーザーが入力する必要があります。すべてのセキュリティと同様に、これはユーザーに迷惑をかけますが、非常に効果的です。
より簡単なセキュリティ手段は、短い/簡単なパスワードを制限することです。ユーザーが「1234」を自分のパスワードにすることを許可されている場合、ボットは「ihatelongpasswordssomuch」よりもそれを推測する可能性がはるかに高くなります。
「少ない」回数の不正なパスワード試行(3など)の後にCAPTCHAを使用し、「高い」回数の不正なパスワード試行(一定時間など)の間アカウントをロックするサイトを見たことがあります( 10など)。事実上、これはブルートフォース攻撃が人間のオペレーターによって実行される1時間あたり最大10推測に制限されることを意味します-攻撃者の観点からはあまり魅力的ではありません。
多くの回答は、reCAPTCHAが入力が人間であることを検証することを示唆しているようです...そうではありません。多くのオープンソース OCRユーティリティ (クライアント側とサーバー側の両方)があり、自動化されたスクリプトで画像からテキストを解析できます。したがって、テキストベースの計算は、たとえ計算であっても、簡単に偽装することができます。
OCRは推測ごとに多くの時間を追加し、さらに多くのリソース(計算能力)を必要としますが、最終的には攻撃者を遅らせるだけです。したがって、これを唯一の防御メカニズムとして使用するべきではありません。もちろん、1つだけを使用した方がよい場合もあります。可能であれば、新しい画像ベースの検証を使用します(花を表示するすべての画像を選択します)。入力ベースのメカニズム(Googleは現在テスト中です)も 簡単にスプーフィングされます ハードウェアを正しく分析することによってです。
また、どのユーザーに対しても間違ったパスワードが入力された場合は、IP、ユーザーエージェント、識別可能なものの履歴を保持することをお勧めします。ユーザーをブルートフォースで攻撃する場合、多くのユーザーを交互に切り替え、さまざまなプロキシを使用し、ユーザーエージェントスプーファーを使用してランダムに見えるようにしますが、十分な情報があればすべてを検出してブロックできます。
reCaptchaは非常に優れていますが、完全ではありません。
Fail2banのようなツールは別の効果的な方法です。失敗をログに記録するようにWebサイトを構成し、ログを監視するようにfail2banを構成します。設定された時間内にIPアドレスからx回の失敗を検出すると、サーバーがそのIPアドレスに対してオフラインになるようにファイアウォールルールを追加します。所定の時間。
利点:
短所: