インフラエンジニア勉強雑記

インフラ技術に関して勉強したメモを残したものです。誤っている内容があればコメントもしくはメッセージでお知らせいただけると助かります。

BIG-IP ASMについて③ DoS Protectionの設定方法

※編集中

 

1.Preventing DoS attacks on applications

1.1.DoS protection for applications

①「Security」→「DoS Protection」→「DoS Profiles」をクリックします。

②「Create」をクリックします。

③「Name」にプロファイル名を入力して「Finished」をクリックします。

④「DoS Profiles」のリストに作成されたリストが追加されます。プロファイル名をクリックし、「Application Security」タブをクリックします。

⑤「General Settings」の「Application Security」で「Edit」をクリックして「Enabled」のチェックボックスにチェックを入れます。

f:id:light-spoqz:20190307220909p:plain

⑥「Heavy URL Protection」を設定します。どのURLを対象とするか、対象外とするか、自動検知を使用するか選択が可能です。別項で詳細を説明します。

⑦「Geolocations」を設定します。「Edit」をクリックして以下の設定を行います。

  • Geolocation Blacklist:アクセスを拒否したい国を設定します。
  • Geolocation Whitelist:アクセスを許可する国を設定します。それ以外の設定で攻撃を検知してもアクセスを許可します。
  • How to detect attackers and which mitigation to use:Stress-basedやTPS-based Detectionで検知した国に対しての低減方法を設定します。

設定が完了したら「Close」をクリックします。

DoS攻撃などを検知した場合にiRuleを使用したい場合は「Trigger iRule」で設定をします。

⑨動的に新しいコンテンツをロードする1ページからなるアプリケーションをよりよく保護するには、「Single Page Application」を有効にします。

⑩多数のURLを取り扱うには「URL Patterns」で類似のURLの論理セットを作成できます。「Not Configured」をクリックしてURLのパターンを入力します。(例:/product/*.php
次にシステムは、複数のURLを1つにまとめたURLパターンを調べます。他の同様のURLから統計情報を集計することにより、アクセス頻度が低いURLに対するDoS攻撃をより簡単に推測できます。

⑪パフォーマンスの高速化を使用する場合は、「Performance acceleration」で使用するTCP fastL4プロファイルを選択します。
プロファイルは「Local Traffic」→「Profiles」→「Protocol」→「Fast L4」で作成します。

⑫「Update」をクリックすると設定が保存されます。

1.2.Creating a whitelist for DoS protection

①「Security」→「DoS Protection」→「DoS Profiles」をクリックします。

②プロファイル名をクリックします。

③特定の信頼されたアドレスに対するDoS攻撃のチェックを省略するには、ホワイトリスト設定を編集します。

  • 画面右側の「Address Lists」で、「+」をクリックします。
  • 下の「Property」で、名前を1つずつ入力し、DoS攻撃の有無を調べる必要のない信頼できるIPアドレスまたはサブネットを入力して、「Add」をクリックします。(最大20個のIPアドレスを追加できます。)
  • 完了したら、「Update」をクリックします。新しいホワイトリストがアドレス一覧に追加されます。
  • 新しいホワイトリストを使用するには、「Default Whitelist」の後に、追加したホワイトリストの名前を入力します。

④デフォルトのホワイトリストではなく、HTTPトラフィック用に新規にホワイトリストを作成する場合は、「Override Default」を選択し、デフォルトのホワイトリストと同じようにホワイトリストを作成します。
⑤完了したら、「Update」をクリックします。

1.3.Proactive Bot Defenseの設定

 Proactive Bot Defenseを使用するためにはクライアントのブラウザがJavaScriptを受け入れる必要があります。また、この機能はDNSの逆引きを行うため、DNSサーバとDNSゾルバを設定する必要があります。

WebサイトでCross-Origin Resource Sharing(CORS)を使用している場合、Proactive Bot Defenseには制限があります。

①「Security」→「DoS Protection」→「DoS Profiles」をクリックします。

②プロファイル名をクリックし、「Application Security」タブをクリックします。

③「General Settings」をクリックし、「Application Security」が「enable」となっていることを確認します。

④「Proactive Bot Defense」をクリックします。

⑤「Operation Mode」を使用するタイミングを設定します。

f:id:light-spoqz:20190307220532p:plain

⑥「Block requests from suspicious browsers」設定では以下の設定を行います。

  • Block Suspicious Browsers:疑わしいブラウザをブロックしたい場合は有効にします。
  • CAPTCHA ChallengeCAPTCHAチャレンジを送信したい場合は有効にします。

CAPTCHA Setting」をクリックしてCAPTCHAレスポンスを変更することもできます。 

⑦「Grace Period」設定では、システムがボットをブロックするまでに待機する秒数を入力します。デフォルト値は300秒です。
⑧「Cross-Domain Requests」設定ではCross-Domain Request(埋め込み画像、CSSスタイルシートXMLJavaScriptFlashなどのHTML以外のリソースに対するリクエストなど)を検証する方法を指定します。Cross-Domain Requestは、HostヘッダーとReferrerヘッダーの異なるドメインを持つリクエストです。

設定 概要
Allow all requests 単純なチャレンジに合格した場合、有効なcookieを使用せずに、別のドメインによって参照されているHTML以外のURLに到着する要求を許可します。システムは、HTTPリダイレクトやcookieなどの基本的なブラウザ機能をテストするためのチャレンジを送信します。
Allow configured domains; validate in bulk このセクションで構成されている他の関連する内部または外部ドメインへの要求を許可し、事前に関連ドメインを検証します。関連サイトドメインへのリクエストには、いずれかのサイトドメインからの有効なCookieを含める必要があります。外部ドメインは、簡単なチャレンジに合格すれば許可されます。 Webサイトがあまり多くのドメインを使用していない場合はこのオプションを選択してから、それらすべてを以下のリストに含めます。
また、WebサイトでCORを使用している場合は、このオプションを選択してから「Related Site Domains」リストでWebSocketドメインを指定します。
Allow configured domains; validate upon request 要求時に検証このセクションで設定されている他の関連する内部または外部ドメインへの要求を許可します。関連サイトドメインへのリクエストには、メインドメインからの有効なCookieが含まれている必要があります。外部ドメインは、簡単なチャレンジに合格すれば許可されます。 Webサイトで多数のドメインを使用している場合は、このオプションを選択し、下のリストにメインドメインを含めます。

 「Allow configured domains」を選択したら、アクセス先のリソースとして「Related Site Domains」を加える必要があります。また、アクセス元の外部サイトとして「Related External Domains」を設定します。

⑨「URL Whitelist」設定で他のドメインからアクセスを許可するリソースURLを追加します。/index.htmlの形式でURLを入力し、「Add」をクリックします。ワイルドカードはサポートされています。

⑩完了したら、「Update」をクリックします。

1.4.bot defense loggingの作成

ログの設定を行う前にSplunkへのリモートロギングを設定したことを確認してください。ローカルロギングは推奨ではありません。

1.5.bot signature checkingの設定

ボットシグネチャチェックは通常、Proactive Bot Defenseで使用されます(Proactive Bot Defenseを使用するとデフォルトで有効になります)。 システムはボットシグネチャチェックを実行します。これは、既知のボットをそれらのHTTP特性に基づいて正当なまたは悪意のあるものとして識別します。 特定のカテゴリの悪意のあるボットまたは良性のボットを無視、報告、またはブロックするかどうかを指定できます。 必要に応じて、特定のシグネチャを無効にすることもできます。

①「Security」→「DoS Protection」→「DoS Profiles」をクリックします。

②プロファイル名をクリックし、「Application Security」タブをクリックします。

③「General Settings」をクリックし、「Application Security」が「enable」となっていることを確認します。

④「Bot Signatures」をクリックします。

⑤「Bot Signature Check」設定で「Enabled」を有効にします。

f:id:light-spoqz:20190307222635p:plain

⑥「Bot Signature Categories」で悪意のある、または良性のボットの各カテゴリについて、要求がシグネチャと一致したときに実行するアクションを選択します。

設定 概要
None

何もしません。

Report ログを出力します。
Block 要求をブロックし、ログを出力します。

すべての悪意のあるカテゴリまたはすべての無害なカテゴリに対して1つのアクションを選択することも、別々のカテゴリに対して異なるアクションを実行することもできます。

この設定はProactive Bot Defenseにおける設定を上書きします。

⑦特定のシグネチャを無効にしたい場合は「Bot Signatures List」で対象のシグネチャを「Disabled Signatures」へと移動させます。

⑧完了したら、「Update」をクリックします。

1.6.TPS-based DoS detection設定方法

f:id:light-spoqz:20190307230810p:plain

1.7.Behavioral & Stress-based Detection設定方法

①「Security」→「DoS Protection」→「DoS Profiles」をクリックします。

 DoS Profiles Listの画面が表示されます。

②作成したDoS Profile名をクリックします。

③上部の「Application」タブをクリックします。

④左の「Behavioral & Stress-based Detection」をクリックします。

⑤右上の「Edit All」をクリックします。

⑥「Operation Mode」ではプルダウンメニューから以下から設定可能です。

  • Off:Behavioral & Stress-based Detectionを無効にします。Offにしているとそれ以外の設定項目は表示されません。
  • Transparent:DoS攻撃に関するデータをDoSレポート画面に表示しますが、要求をブロックしたり、緩和策の実行はしません。
  • Blocking:疑わしいIPアドレス、位置情報、URL、またはサイト全体に必要な緩和策を適用します。 DoSレポート画面にDoS攻撃に関する情報も表示します。

f:id:light-spoqz:20190307231005p:plain
⑦「Thresholds Mode」では以下の設定をプルダウンメニューから設定が可能です。

  • Automatic:システムがしきい値を自動的に設定します。しきい値を最大で設定し、7日間の履歴データを使用して最適なしきい値を計算します。その後、システムは12時間ごとにしきい値を更新します。
  • Manual:手動でしきい値を設定することが可能です。「Manual」を選択すると「Stress-based Detection and Mitigation」の設定項目が表示されます。

⑧「Stress-based Detection and Mitigation」は「Thresholds Mode」で「Manual」を設定した場合のみ表示され、以下の設定が可能です。

  • By Source IP:攻撃者としてIPアドレスを扱うときの条件を指定します。システムは、最もアクセスされた送信元IPアドレスに対して1つの自動しきい値を計算し、残りに対しては別のしきい値を計算します。
  • By Device ID:デバイスを攻撃者として扱う場合の条件を指定します。自動しきい値の場合、1つのしきい値はアクセス頻度の高いデバイスIDに対して計算され、もう1つのしきい値は残りのしきい値に対して計算されます。
  • By Geolocation:特定の国を攻撃者として扱うタイミングを指定します。自動しきい値を使用している場合は、上位20の位置情報のしきい値が計算され、1日の時間ごとに異なるしきい値が設定されます。したがって、午前9:00に計算されたしきい値は、午前8:00〜9:00のデータに基づいており、翌日の午前8:00に使用されます。
  • By URL:システムが攻撃を受けているURLを処理するタイミングを指定します。自動しきい値の場合、1つのしきい値はアクセスの多いURLに対して計算され、もう1つのしきい値は残りのしきい値に対して計算されます。 (重いURLは計算に含まれません。)
  • Site Wide:Webサイト全体がいつ攻撃を受けているかを判断する方法の条件を指定します。自動しきい値の場合、サイト全体で1つのしきい値が使用されます。

また、少なくとも1つの緩和方法を選択する必要があります。

  • Client Side Integrity Defense:Sends a JavaScript challenge to determine whether the client is a legal browser or an illegal script. Only used when the Operation Mode is set to Blocking.
  • CAPTCHA Challenge:Issues a CAPTCHA challenge to the traffic identified as suspicious by source IP address, geolocation, URL, or site wide.
  • Request Blocking:

デフォルト値はF5の推奨値のようなので、初期値はこれで設定し、問題があれば後で調整しましょう。

 ⑨「Behavioral Detection and Mitigation」では通信動作からどのようにDDoS攻撃を低減するかを設定します。

設定項目 設定
Bad actors behavior detection システムは通信動作と異常検出を調査することによって攻撃者のIPアドレスを識別します。
Request signatures detection 要求を調査し、システムが識別した攻撃パターンを防御するためのシグネチャを作成します。「Use approved signatures only」を選択すると、システムによって生成されたシグネチャを使用する前に承認する必要があります。
Mitigation
  • Conservative Protection:「Bad actors behavior detection」が有効になっている場合、異常検出の信頼性とサーバーの正常性に基づいて、異常なIPアドレスからの要求をスローダウンおよびレート制限します。「Request signatures detection」が有効になっている場合は、動作シグネチャと一致する要求をブロックします。
  • Standard Protection:「Bad actors behavior detection」が有効になっている場合、異常検出の信頼性とサーバーの正常性に基づいて、異常なIPアドレスからの要求スローダウンします。異常なIPアドレスからの要求をレート制限し、必要に応じて、サーバの状態に基づいてすべての要求をレート制限します。異常なIPアドレスからの同時接続数を制限し、必要に応じて、サーバーの状態に基づいてすべての同時接続数を制限します。「Request signatures detection」が有効になっている場合は、動作シグネチャと一致する要求をブロックします。
  • Aggressive Protection:「Bad actors behavior detection」が有効になっている場合、「Standard Protection」に加えて、積極的に(攻撃の前であっても)すべての保護アクションを実行します。保護技術の影響を高めます。「Request signatures detection」が有効になっている場合は、動作シグネチャと一致する要求をブロックします。ブロックされた要求の影響を増やします。
  • No Mitigationトラフィックの動作を学習および監視しますが、何もしません。

 ⑩「Prevention Duration」では次の緩和ステップに進むことを決定するまでの間隔を指定します。

設定項目 設定
Escalation Perid 攻撃者のIPアドレスまたは攻撃されたURLに対する攻撃を防ぐときに、システムが次のステップに進むまでに各緩和ステップで費やす最小時間を指定します。 DoS攻撃の間、システムは有効になっている緩和方法に対して、ここで設定された時間の間、攻撃防止を実行します。 この期間が過ぎても攻撃が阻止されない場合、システムは次の有効な防止手順を実行します。 1から3600までの数値を入力してください。デフォルトは120秒です。
De-escalation Period 有効になっている緩和方法を使用してステップを再試行するまでに、最後のエスカレーションステップで費やした時間を指定します。 0(ステップが再試行されないことを意味する)から86400秒の間の数(エスカレーション期間よりも大きい)を入力します。 デフォルト値は7200秒(2時間)です。


Configuring heavy URL protection
Recording traffic during DoS attacks
Configuring CAPTCHA for DoS protection
Associating a DoS profile with a virtual server