レールへのログイン試行を制限する必要がありますか?
-
06-07-2019 - |
質問
Ruby on Railsのログインシステムの構築を考えています。これとよく似ています
http://visionmasterdesigns.com/ tutorial-create-a-login-system-in-ruby-on-rails /
セキュリティの観点から、ユーザー名を間違えた場合にユーザーがログインできる回数を制限する必要がありますか?
また、ログインの基本的な手順は次のようです:
- データベース内のユーザー名とパスワードに対する認証
- 本物のユーザー名とパスワードの場合、セッション変数を作成します
- ログインが必要なページが保護されるようにフィルタする前。
他に考慮すべき点はありますか?
他のヒント
最初に、IPごとにログインページのレート制限を行います。ログインページで非表示のキャプチャシステムを使用します。次に、IPごとにログイン制限を設定する必要がありますが、ボットネットが複数のIPからブルートフォースを行わないようにする最後の手段として、ユーザーごとにログイン制限を設定する必要があります。パスワードを総当たり攻撃する試みが検出された場合、ユーザーにメールを送信します。誰かがさまざまなIPから試行する場合、繰り返し電子メールを大量に送信しないでください。それ以外の場合、ボットネットは重大なスパムを行う可能性があり、さらに悪いことに、重要なメッセージがスパムフォルダーに送られる可能性があります。パスワードを変更したり、強度をアップグレードしたりする可能性があることを忘れないでください。
IPログイン制限をオンにする場合、制限を高くします。多くの場所で3回ストライクが行われ、外出しています。それは非常に簡単で、ユーザーフレンドリーではありません。現実的には少なくとも10以上である必要があります。ヒットすると、「カスタマーサポートに電話する」のではなく、時間ベースの禁止を取得する必要があります。禁止。 10回の試行でパスワードをブルートフォースする人はいません。そのため、IPごとのログイン制限を10に、ユーザーごとのログイン制限を1,000から10,000に設定することをお勧めします(サービス拒否攻撃を阻止するのに十分高いが、ボットネットがパスワードをクラックする可能性が低いほど低い) 。ただし、そのしきい値に達するかなり前に作動するボットネットが動作しているという、sysadmin / on-callページャーへの何らかの形のアラートが必要です。 (すべてのユーザーと個々のユーザーのログイン失敗回数を数え、ローリング平均を実行し、いずれかのしきい値を超えた場合に警告します。ユーザーリストが十分に大きい場合、全体で少なくとも1つのアカウントで成功する確率ユーザーベースは、1つのアカウントのみを攻撃して成功する確率とほぼ同じです。)
ファイアウォールで明らかな攻撃者をブロックします。しばらくして禁止を期限切れにします。カスタマーサポートが誰かの禁止を解除できるようにすることを忘れないでください。ただし、禁止が何らかの形で犯罪にリンクされていることを確認してください。 20種類のユーザーログインなどを破ろうとした人の禁止を解除しないでください。もちろん、ここでの判断は、ボットネットに乗っ取られた無防備な家族やおばあちゃんのスクリプトキディがIP禁止になっているためです。
実際にすべてを行う時間がある場合は、一流のログインフォームがあります。そんなに必要だとは思わない。
もう1つの方法は、ラックを使用することです。データベース、memcached、redis、tokyoキャビネットなどにログイン試行を保存して、一定時間IPがログインページにアクセスする回数を追跡することができます。定義された時間間隔のクォータ。
DamienはAuthlogicを提案しました。 Authlogic は、Railsのお気に入りの認証システムです。非常に包括的で適応性があります。 Authlogicには既存のモジュールがたくさんあり、これらのいずれかを活用してAuthlogicを機能させることができると確信しています。
もう1つの考慮事項は、サービス拒否攻撃です。動的ページへのリクエスト数を妥当なレートに制限すると、悪意のあるユーザーがサイトを削除するのが難しくなります 。これにより、パスワードクラッキングの問題を解決すると同時に、ユーザーが意図しない方法でサイトデータを操作することを防ぐことができます。
このアプローチを使用することに決めた場合、これを支援するために(独自にロールするのではなく)よくサポートされているモジュールを見つけるようにしてください。