総当たり攻撃からの保護
認証によってセキュリティを強化したアプリケーションであっても、ユーザーのパスワードを体系的に推定する総当たり攻撃の対象になりえます。OutSystemsはこうした攻撃への対策となる、ビルトインの保護メカニズムを提供します。
- ユーザーレベルでの攻撃
- 特定のIPアドレスのユーザーから攻撃が仕掛けられます。この場合、そのユーザーは攻撃者のIPアドレスからログインできないようブロックされます。正当なユーザーは攻撃に使用されていない元のIPアドレスを使用して引き続きログインできます。
- IPレベルでの攻撃:
- 攻撃者がユーザーのリストを持っており、特定のIPアドレスからそのパスワードの推定を試みます。この場合は、攻撃者のIPアドレスをブロックします。
IPアドレスをブロックすることで、プラットフォームは攻撃者がすべてのユーザーを試してアプリケーションに大量のリクエストを送れないようにし、DoS(サービス妨害)攻撃につながる可能性も防ぎます。
保護の仕組み
提供される対策は、2段階のバックオフメカニズムで構成されています。
-
1段階目のバックオフ
一定の期間内に一定の回数ログイン試行を失敗すると、以下のことが起こります。- ユーザーレベルでの攻撃: ユーザーはそのIPアドレスについてブロックされ、短時間(数分間)ログインできなくなります。
- IPレベルでの攻撃: そのIPアドレスはブロックされ、ユーザーは短時間(数分間)ログインできなくなります。
どちらの場合でも、エラーメッセージは「無効なユーザー名またはパスワード」から「ログインの失敗が多すぎます。数分後に再試行してください」に変わります。
-
2段階目のバックオフ
攻撃が継続されて2段階目の上限に達すると、ログインは長時間(約1時間)ブロックされます。
エラーメッセージは「ログインの失敗が多すぎます。60分後に再試行してください」に変わります。
アプリケーションユーザーとITユーザーを保護する
このトピックで説明されているアプリケーションユーザー(アプリケーションのエンドユーザー)に対する総当たり攻撃からの保護は、ユーザーをユーザープロバイダとして設定しているすべてのアプリケーション、またはユーザーから複製されたカスタムユーザープロバイダを使用している場合に使用することができます。
アプリケーションユーザーに対してこの保護を設定する方法については、「アプリケーションユーザーに総当たり攻撃からの保護を設定する」セクションをご覧ください。
ITユーザーがService CenterやLifeTimeにログインするときも、同じ総当たり攻撃からの保護をデフォルトで利用できます。ITユーザーに対してこの保護を設定する方法については、「ITユーザーに総当たり攻撃からの保護を設定する」セクションをご覧ください。
アプリケーションのユーザーとIPアドレスのブロックを解除する
たとえば以下のような場合、ユーザーやIPアドレスが正当であってもブロックされる可能性があります。
- パスワードを忘れ、何回もログイン試行を行った場合。
- 総当たり攻撃によって、多くの正当なユーザーも使用しているIPアドレス(ISPなど)がブロックされた場合。
ユーザーやIPアドレスのブロックを解除して、正常なログインのプロセスを回復するには、ユーザー管理コンソール(http://<ご利用のサーバー>/Users
)に移動します。
ユーザーのブロックを解除するには、以下の手順を実行します。
- Usersアプリケーションにログインします。
- [User details]ページに移動します。そのユーザーのログイン試行がブロックされている場合、ページ上に警告メッセージが表示されています。
- ページの最下部に移動します。ユーザーがログイン試行をブロックされているIPアドレスの一覧があります。
- [Unblock]をクリックして、希望するIPアドレスでユーザーの正常なログインプロセスを回復します。
IPアドレスのブロックを解除するには、以下の手順を実行します。
- Usersアプリケーションにログインします。
- 画面の右側で[Blocked Addresses]リンクをクリックして、ブロックされているIPアドレスの掲載されているページを表示します。
- [Unblock]をクリックすると、希望するIPアドレスのすべてのユーザーについて、正常なログインプロセスを回復できます。
管理者ユーザーのブロックを解除する
管理者ユーザーがブロックされた場合、ブロック解除するには以下のいずれかの方法を行います。
- 異なるIPアドレスから管理者としてログインして、ブロックを解除する。
- ユーザーとチームを管理する権限のあるユーザーでログインして、ブロックを解除する。
LifeTimeとService Centerでのブロックを解除する
LifeTimeとService Centerは総当たり攻撃から保護されているため、そのユーザーがブロックされる場合があります。ブロックされた場合はLifeTimeを使用してブロックを解除します。または、LifeTimeがインストールされていない場合はService Centerを使用します。
LifeTimeでブロックを解除する
LifeTimeでITユーザーのブロックを解除するには、以下の手順を実行します。
- ユーザーとチームを管理する権限のあるユーザーで、LifeTimeにログインします。
- [Users & Roles]セクションに移動します。
- ユーザーの詳細のページに移動します。そのユーザーのログイン試行がブロックされている場合、ページに警告メッセージが表示されています。
- ページの一番下に移動すると、ユーザーのログイン試行がブロックされているIPアドレスの一覧があります。
- [Unblock]をクリックして、希望するIPアドレスでユーザーの正常なログインプロセスを回復します。
LifeTimeでIPアドレスのブロックを解除するには、以下の手順を実行します。
- ユーザーとチームを管理する権限のあるユーザーで、LifeTimeにログインします。
- [Infrastructure]セクションに移動します。
- 希望する環境で[Blocked Addresses]リンクをクリックして、ブロックされているIPアドレスの掲載されているページを表示します。
- [Unblock]をクリックすると、希望するIPアドレスのすべてのユーザーについて、正常なログインプロセスを回復できます。
Service Centerでブロックを解除する
Service CenterでITユーザーのブロックを解除するには、以下の手順を実行します。
- ユーザーとチームを管理する権限のあるユーザーで、Service Centerにログインします。
- [Administration]セクションに移動します。
- [Users]オプションを選択します。
- ユーザーの詳細のページに移動します。そのユーザーのログイン試行がブロックされている場合、ページに警告メッセージが表示されています。
- [Blocked Addresses]タブに移動すると、ユーザーのログイン試行がブロックされているIPアドレスの一覧があります。
- ユーザーのブロックを解除したいIPアドレスを選択します。
- [Unblock Selected]ボタンを押します。ユーザーが、そのIPアドレスから再度ログインできるようになります。
Service CenterでIPアドレスのブロックを解除するには、以下の手順を実行します。
- ユーザーとチームを管理する権限のあるユーザーで、Service Centerにログインします。
- [Monitoring]セクションに移動します。
- ブロックされているIPアドレスの一覧が掲載されている、[Security]オプションを選択します。
- すべてのユーザーで正常なログインのプロセスを回復させたいIPアドレスにチェックを入れます。
- [Unblock Selected]ボタンを押します。
総当たり攻撃の疑いを確認する
環境管理コンソール(Service Center)は、総当たり攻撃の疑いの監視に使用できる情報を含むログを提供します。
ログにアクセスするには、以下の手順を実行します。
- Service Centerにログインし、[Monitoring]セクションに移動します。
- [Errors]オプションを選択します。
- Loginモジュールでフィルタをかけます。
総当たり攻撃の疑いでユーザーかIPアドレスがブロックされている場合、次の形式で情報が表示されます。
- ログイン試行のタイムスタンプ
- ログイン試行したユーザー
- ログイン試行の際に使用したIPアドレス
- 最後のログイン試行から経過したおよその時間
- 最後のログイン試行の発生日時
- ログイン試行回数
ログイン試行の失敗が攻撃でない場合、以下のように情報が表示されます。
- ログイン試行のタイムスタンプ
- ログイン試行したユーザー
- ユーザーレベルとIPレベルでのログイン試行回数
アプリケーションユーザーに総当たり攻撃からの保護を設定する
このセクションの構成はアプリケーションユーザーにのみ適用されます。ITユーザーには適用されません。このため、LifeTimeやService Centerの保護には影響を及ぼしません。
ITユーザーに対してこの保護を設定する方法については、「ITユーザーに総当たり攻撃からの保護を設定する」セクションをご覧ください。
OutSystemsのアプリケーションには、総当たり攻撃からの保護を設定することができます。動作を変更するには、以下の手順を実行します。
- Service Centerにログインします。
- [Factory]セクションに移動して、[Modules]オプションを選択します。
- Usersモジュールを検索して、詳細のページを開きます。
- [Site Properties]タブを選択します。
- 下記の表で説明されている[Site Properties]で保護を設定します。
Siteプロパティ | 説明 |
---|---|
EnableBruteForceProtection | ユーザーレベルでの総当たり攻撃ログイン保護を有効化します。 |
MaxUsernameAttemptsFirstBackoff | ユーザーによるログイン試行の最大回数。この回数に到達すると、1段階目のバックオフ保護がトリガーされます。 デフォルト値は3回です。 |
MaxUsernameAttemptsSecondBackoff | ユーザーによるログイン試行の最大回数。この回数に到達すると、2段階目のバックオフ保護がトリガーされます。 デフォルト値は6回です。 |
UsernameAttemptsFirstBackoffDelayInSeconds | 1段階目のバックオフがトリガーされた後、ユーザーのログイン試行がブロックされる時間です。 デフォルト値は30秒です。 |
UsernameAttemptsSecondBackoffDelayInSeconds | 2段階目のバックオフがトリガーされた後、ユーザーのログイン試行がブロックされる時間です。 デフォルト値は1800秒です。 |
EnableBruteForceProtectionPerIP | IPレベルでの総当たり攻撃ログイン保護を有効化します。 |
MaxIPAttemptsFirstBackoff | IPアドレスによるログイン試行回数。この回数に到達すると、1段階目のバックオフがトリガーされます。 デフォルト値は20回です。 |
MaxIPAttemptsSecondBackoff | IPアドレスによるログイン試行回数。この回数に到達すると、2段階目のバックオフがトリガーされます。 デフォルト値は50回です。 |
IPAttemptsFirstBackoffDelayInSeconds | 1段階目のバックオフがトリガーされた後、IPアドレスのログイン試行がブロックされる時間です。 デフォルト値は300秒です。 |
IPAttemptsSecondBackoffDelayInSeconds | 2段階目のバックオフがトリガーされた後、IPアドレスのログイン試行がブロックされる時間です。 デフォルト値は3600秒です。 |
InvalidLoginCheckWindowInMinutes | 試行失敗が確認された時間枠(単位: 分)。 デフォルト値は60分です。 |
ITユーザーに総当たり攻撃からの保護を設定する
ITユーザーがService CenterやLifeTimeにログインするときも、総当たり攻撃からの保護をデフォルトで利用できます。デフォルトの動作を変更するには、すべての環境で、OutSystems Forgeで入手可能なFactory Configurationアプリケーションを使用します。
ITユーザーに対して総当たり攻撃からの保護を構成するには、すべてのアプリケーション環境とLifeTime環境で以下の手順を実行します。
-
Factory Configurationアプリケーションをダウンロードし、インストールします。
-
Factory Configurationアプリケーション(
https://<環境名>/FactoryConfiguration
)に移動し、総当たり攻撃からの保護の設定を変更します。 -
[Apply]ボタンをクリックします。
総当たり攻撃からの保護の設定はすべての環境で同じになるようにしてください。