Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WAFv2設定手順

 WAFv2設定手順

本資料ではOCI Load Balancerに直接アタッチする形のWAFの構成手順、および動作確認をご紹介いたします。
WAFポリシーにて、攻撃を検知・ブロックする保護ルールを有効化し、実際にアプリケーションを攻撃して動作を確認します。

oracle4engineer

December 21, 2021
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. (新)WAFポリシー 【保護機能】 • 500を超える保護ルールが基本機能に同梱、チェックボックスを つけるだけで有効化 • 最新の脅威情報データベースを反映し保護ルールを自動更新 • レート制限によるDDoS攻撃からの保護 【デプロイ】

    • OCI Flexible Load Balancerに直接デプロイし、Public及び Privateネットワーク上のWEBアプリケーションも同様に保護 【高性能・高可用性】 • ロードバランサに統合されたリージョン内WAF • 専門のITセキュリティチームがインターネットの脅威を24x365で 監視、対応 (旧)エッジポリシー 【保護機能】 • 600を超える保護ルールが基本機能に同梱、チェックボックスを つけるだけで有効化 • 最新の脅威情報データベースを反映し保護ルールを自動更新 • AI & 機械学習によるアクセス解析とレコメンデーションを搭載 • インテリジェントな対ボット防御ロジックを複数実装 【デプロイ】 • OCI、オンプレミス、他クラウド問わずDNSの設定変更のみで既 存Webアプリケーションを保護 【高性能・高可用性】 • 大規模DoS攻撃時には自動で経路を大規模スクラビングセン ターに瞬時に変更しサービスを保護 • エニーキャストIPにより、世界中のデータセンターのリソースを同 時に利用できるグローバルWAF • 専門のITセキュリティチームがインターネットの脅威を24x365で 監視、対応 Oracle Cloudが提供する2種類のWeb Application Firewall Copyright © 2021, Oracle and/or its affiliates 5 本資料で紹介するWAF
  2. オブジェクト・ストレージに格納してあるエッジポリシーのログや LoggingサービスからService Connector Hub経由で送信 されたWAFポリシーのログをLogging Analyticsで分析 Logging Analyticsは、機械学習のテクノロジーを活用した 高度なログ分析を提供 -

    250種類以上のログに対応した事前定義済みパーサー - OCIやオンプレミスにある様々なOSやミドルウェアのログに対応し ログの取り込みからビジュアライズまでをサポート - ユーザー独自のアプリケーションや未サポートのログに対応する カスタム・パーサを簡単に手動作成 異常値の検出、クラスタ分析、トレンド分析など、経験やスキル を問わず誰でも高度な分析手法が可能 ログデータに応じたアラート通知 WAFのログ分析用に開発されたダッシュボードが ログ監視の効率化と自動化をサポート (2022年予定) Logging Analyticsを組み合わせたログのビジュアライズ Copyright © 2021, Oracle and/or its affiliates 9 アクセス急増によるDDoS攻撃の検出 アクセスログを包括的に監視するダッシュボード
  3. 手順概要 WAFポリシーはOCI Load Balancerにアタッチする形のWeb Application Firewallになります。 そのため、まずはOCI Load Balancerを構成するために、バックエンドサーバとなるLinuxのコンピュートインスタンスを2台作 成します。

    その後、それぞれのコンピュートインスタンスでWebサーバを立ち上げます。 また、WAFの動作検証に用いる攻撃スクリプトは、Webサーバ上で動いているアプリケーションのドメインに対して攻撃を実 施するため、合わせてドメインの取得と構成も実施します。 1. OCI Load Balancerを構成する Copyright © 2021, Oracle and/or its affiliates 12
  4. 手順概要 Copyright © 2021, Oracle and/or its affiliates 13 1.

    OCI Load Balancer を構成する 2.OCI WAFポリシーを 作成する 3.OCI WAFの動作を 確認する a.Webサーバを2台立 ち上げる b.OCI Load Balancer を作成する c.ドメインを構成する a.WAFポリシーを作成 する b.保護ルール/レート制 限を設定する c.ログを有効化する a.攻撃スクリプトで攻撃 する b.メトリックを確認する c.ログを確認する
  5. a. Webサーバを2台立ち上げる Load Balancerのバックエンドサーバを2台作成したら、それぞれのコンピュートインスタンスにSSHでアクセスし、Webサーバ を立ち上げます。 $sudo yum –y install httpd

    $sudo firewall-cmd --permanent --add-port=80/tcp $sudo firewall-cmd --permanent --add-port=443/tcp $sudo firewall-cmd --reload $sudo systemctl start httpd 1. OCI Load Balancerを構成する Copyright © 2021, Oracle and/or its affiliates 15 参考:https://oracle- japan.github.io/ocitutorials/intermediates/using-load-balancer/
  6. a. OCI WAFポリシーを作成する WAFポリシーの作成画面にて、以下項目を入力し、 「次」をクリックします。 • 「名前」:任意 • 「コンパートメント」:任意 2.

    OCI WAFポリシーを作成する Copyright © 2021, Oracle and/or its affiliates 21 WAFでは、アプリケーションへのリクエストに対して、 以下3つのアクションが事前定義されています。 • Check Action: リクエストはブロックしないが、 内容をログに記録 • Allow Action:リクエストを許可 • 401 Response Code Action: リクエストに対 して、401エラーコードを返す 必要に応じて異なるエラーコードを返すアクションを 作成したり、既存のアクションを修正することも可 能です。
  7. a. OCI WAFポリシーを作成する アクセス制御は有効化せずに「次へ」をクリックします。 2. OCI WAFポリシーを作成する Copyright © 2021,

    Oracle and/or its affiliates 22 アクセス制御は、HTTPリクエスト/レスポンスのプロパティ から攻撃を検知し、ブロックする保護機能です。 アクセス制御を使用することで、例えば特定の国からの HTTPリクエストや、特定のリクエストヘッダー、URLによる 通信を検知しブロックすることが可能です。
  8. b. レート制限を設定する 1. 「レート制限ルールの構成の有効化」にチェックを入れ、 「レート制限ルールの追加」ボタンをクリックします。 2. レート制限ルールの追加画面にて、以下の項目を 入力します • 名前:任意

    • レート制限の構成:リクエスト制限=100、 期間(秒)=1 • ルール・アクション:アクション名=Pre-configured 401 Response Code Action 3. 「レート制限ルールの追加」ボタンをクリックし、「次」を クリックします 以上の手順で、同一のクライアント端末から1秒間に100 回以上のアクセスがあった場合、アクセスをブロックするよう に設定しました。 2. OCI WAFポリシーを作成する Copyright © 2021, Oracle and/or its affiliates 23
  9. b. 保護ルールを設定する 「保護ルールの構成の有効化」にチェックを入れ、「リクエスト 保護ルールの追加」をクリックします。 2. OCI WAFポリシーを作成する Copyright © 2021,

    Oracle and/or its affiliates 24 本 資 料 は 、 SQL Injection 、 XSS ( Cross Site Scripting)、DDoS攻撃による攻撃を実施する攻撃 スクリプトを使用してWAFの動作を確認します。 そのため、WAFポリシーにて、SQL Injection、XSSに よる攻撃を検知してブロックするために保護ルールを 有効化します。 ※DDoS攻撃に対しては、レート制限の機能を利用し ます。
  10. b. 保護ルールを設定する 1. 保護ルールの追加画面にて、以下を入力します。 • 名前:任意(例:ProtectionRule) • アクション名: Pre-configured 401

    Response Code Action 2. 「保護機能の選択」ボタンをクリックします。 2. OCI WAFポリシーを作成する Copyright © 2021, Oracle and/or its affiliates 25 本手順では、「Pre-configured 401 Response Code Action」のアクションにより、攻撃を検知し、ブロックする 手順を紹介します。 False Positive(過剰検知)によるユーザーの利便性 の低下を防ぎたい場合 、まずはアクションを「Pre- configured Check Action」とすると攻撃をブロックせず、 検知だけ行うことができます。攻撃の有無を検知し、 実際に攻撃と疑われるようなアクセスが確認された場合 は 、アク シ ョン を「 Pre-configured 401 Response Code Action」に変更してください。
  11. b. 保護ルールを設定する 1. 保護ルールの追加画面にて、以下2点を確認します。 • ル ー ル ・ ア

    ク シ ョ ン の 「 ア ク シ ョ ン 名 」 に 「 Pre- configured 401 Response Code Action」が選択 されていること • 保護機能にて、「SQL Injection」「SQLi」「XSS」 「Cross-Site Scripting」の4つのタグが付いた保護 ルールが選択されていること 2. 「リクエスト保護ルールの追加」ボタンをクリックし、「次」 をクリックします。 2. OCI WAFポリシーを作成する Copyright © 2021, Oracle and/or its affiliates 27
  12. c. ログを有効化する 1. 「ログの有効化」ボタンをクリックします。 2. ログの有効化画面にて、以下設定をします。 • ログ・グループ:任意 • ログ名:任意

    • ログ保持期間:任意(1か月~6か月) 3. 「ログの有効化」ボタンをクリックします。 以上の手順で、WAFによって出力されたログがOCIの Loggingサービスに転送されるようになりました。 2. OCI WAFポリシーを作成する Copyright © 2021, Oracle and/or its affiliates 31 Loggingサービスに、WAFのログを保存したい特定のロ グ・グループがある場合は、該当のログ・グループを指定 してください。新規にログ・グループを作成することもでき ます。もしくは、Loggingサービスにデフォルトで作成され ているログ・グループ「Default」に保存することもできます。
  13. a. 攻撃スクリプトで攻撃する OCIコンソールからCloud Shellを起動し、以下コマンドで攻撃スクリプトをダウンロードします。 $git clone https://github.com/mmarukaw/oci-waf-handson.git • ダウンロードされたoci-waf-handsonのattack-scriptsのディレクトリ内に、攻撃スクリプトとconfigファイルが含まれま す。

    • $ls /home/<ユーザーディレクトリ>/oci-waf-handson/attack-scripts • 01-php-code-injection-protection-rule-950002.sh • 02-credit-card-leakage-in-request-protection-rule-981078.sh • 03-Classic-SQL-injection-probing-protection-rule-942000.sh • 04-SQL-Keyword-Anomaly-Scoring-protection-rule-981317.sh • 05-Internet-Explorer-XSS-Filters-protection-rule-981173.sh • 06-Layer7-DDoS-Distributed-Denial-of-Service-Apache-Benchmark.sh • config • readme.md 3. OCI WAFの動作を確認する Copyright © 2021, Oracle and/or its affiliates 34 本資料で使用する攻撃スクリプト
  14. a. 攻撃スクリプトで攻撃する /home/<ユーザーディレクトリ>/oci-waf-handson/attack- scripts の 中 の config フ ァ

    イ ル を vim で 編 集 し 、 「WAFSecuredHost」に本手順で構成したドメイン名を記入 します。 • $vi config • i • WebSecuredHost=<アプリケーションのドメイン名> • Escボタン→:wq!を入力 3. OCI WAFの動作を確認する Copyright © 2021, Oracle and/or its affiliates 35 /home/< ユ ー ザ ー デ ィ レ ク ト リ >/oci-waf-handson/attack- scriptsディレクトリ内にある攻撃スクリプトは、configファイルで 指定したURLに対して攻撃を実行します。
  15. a. 攻撃スクリプトで攻撃する 本手順では、以下4つの攻撃スクリプトを実行します。 • 03-Classic-SQL-injection-probing-protection-rule-942000.sh • 04-SQL-Keyword-Anomaly-Scoring-protection-rule-981317.sh • 05-Internet-Explorer-XSS-Filters-protection-rule-981173.sh •

    06-Layer7-DDoS-Distributed-Denial-of-Service-Apache-Benchmark.sh 攻撃スクリプトがあるディレクトリに行き、それぞれの攻撃スクリプトを実行していきます。 例)$./03-Classic-SQL-injection-probing-protection-rule-942000.sh →Enterを押すと、スクリプトが実行されます。 3. OCI WAFの動作を確認する Copyright © 2021, Oracle and/or its affiliates 36
  16. a. 攻撃スクリプトで攻撃する 各スクリプトを実行したら、右のように{“code”:”401”, “message”:”Unauthorized”}と出力されていることを 確認してください。 WAFの保護ルールの設定で、401コードを返すように 設定したため、攻撃を検知して401コードが返されていま す。 3. OCI

    WAFの動作を確認する Copyright © 2021, Oracle and/or its affiliates 37 6つ目の攻撃スクリプト「06-Layer7-DDoS-Distributed- Denial-of-Service-Apache-Benchmark.sh」は、DDoS 攻撃により、アプリケーションに対して1000回のクエリを実行します。 WAFのレート制限にて、単一のIPアドレスから1秒間で100回以 上のアクセスがあったらブロックすると設定しているので、「06- Layer7-DDoS-Distributed-Denial-of-Service- Apache-Benchmark.sh 」にて1秒間に100回クエリが実行され たタイミングから、リクエストがブロックされるようになります。
  17. b. メトリックを確認する ファイアウォール詳細画面から以下のメトリックを確認する ことができます。 • 「ブロックされたリクエスト」:LBへのリクエストのうち、 WAFが攻撃判断してブロックしたリクエスト • 「トラフィック」:LBへの全体のトラフィック •

    「レスポンス・コード・グループ」:LBへのリクエストに 返答したHTTPコード(4xxはオレンジ色、200は 青色の折れ線グラフで表示されます。) 3. OCI WAFの動作を確認する Copyright © 2021, Oracle and/or its affiliates 39
  18. c. ログを確認する 1. WAFポリシーの詳細画面→ファイアウォール→ファイア ウォール名をクリックします。 2. ファイアウォールの詳細画面から「ログ」のタブをクリック します 3. ログの「ログ名」をクリックすると、出力されたWAFの

    ログをLoggingサービスのコンソールから確認すること ができます。 3. OCI WAFの動作を確認する Copyright © 2021, Oracle and/or its affiliates 40 Loggingサービスのコンソールにログが表示され ない場合は、ログの探索の「時間によるフィルタ」 から、指定時間範囲を広げてみてください。
  19. c. ログを確認する 表示されている各ログコンテンツの一番右にある∨ボタンをクリックすると、ログコンテンツ全体を確認することができます。 3. OCI WAFの動作を確認する Copyright © 2021, Oracle

    and/or its affiliates 41 リクエストがブロックされているログであれば、以下の内容をログから 確認することができます。 ① data.requestProtection.matchedIds:保護ルールID ② data.requestProtection.matchedRule:作成したリクエスト 保護ルール名 ③ data.response.code:レスポンスコード ① ➁ ③
  20. c. ログを確認する 3. OCI WAFの動作を確認する Copyright © 2021, Oracle and/or

    its affiliates 42 ログコンテンツに以下の内容が含まれていたら、レート制限によって、 リクエストがブロックされたアクセスのログになります。 ① data.requestRateLimiting.matchedRule:作成したレー ト制限ルール名 ② data.responseProtection.responseProvider:「request RateLimiting/<作成したレート制限ルール名>」 ① ➁
  21. c. ログを確認する(Optional) 1. OCIコンソールの🈪→「監視および管理」→「ロギング→ サービス・コネクタ」→「サービス・コネクタの作成」をクリック します。 2. サービス・コネクタの作成画面にて、以下項目を入力し ます •

    名前&説明:任意 • ソース:ロギング • ターゲット:ログ・アナリティクス • ソースの構成:ログ・グループ=WAFログが保存されて いるLoggingサービスのログ・グループを選択 • ログ→WAFログを選択 • ターゲットの構成:ターゲット接続の構成=WAFのログ を保存したいLogging Analyticsのログ・グループを 選択(既存のものが無ければ新規作成) 3. 「作成」ボタンをクリックします。 Copyright © 2021, Oracle and/or its affiliates 44 Loggingサービスに保存されているWAFログ は、Service Connector Hubを使用して Logging Analyticsサービスにログを転送し、 高 度 な 分 析 を 行 う こ と も で き ま す 。 3. OCI WAFの動作を確認する