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

WAFv2設定手順

 WAFv2設定手順

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

140494d272a4d89883a94fdfdb29dea2?s=128

oracle4engineer
PRO

December 21, 2021
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. WAFv2 設定手順 2021年12月21日 日本オラクル株式会社 クラウド・エンジニアリング統括 COE本部 セキュリティ&マネージメント ソリューション部 Copyright ©

    2021, Oracle and/or its affiliates 1
  2. • OCI Web Application Firewallについて • WAFv2設定手順 • 最後に Agenda

    Copyright © 2021, Oracle and/or its affiliates 2
  3. 本資料ではOCI Load Balancerに直接アタッチする形のWAFの構成手順、および動作確認をご紹介いたします。 WAFポリシーにて、攻撃を検知・ブロックする保護ルールを有効化し、実際にアプリケーションを攻撃して動作を確認します。 なお、OCI Load Balancerを作成するために必要になる以下リソースの作成手順、構成手順については詳細は割愛させ ていただきます。 • Virtual

    Cloud Network • Subnet • Security List • Internet Gateway • バックエンドサーバ(コンピュート・インスタンス2台) • Webサーバ • ドメイン はじめに Copyright © 2021, Oracle and/or its affiliates 3
  4. OCI Web Application Firewallについて Copyright © 2021, Oracle and/or its

    affiliates 4
  5. (新)WAFポリシー(別名:WAFv2) 【保護機能】 • 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
  6. FLB上でWAF保護ポリシーを適用し、 VCN内アプリケーションを保護 VCN内のフレキシブル・ロード・バランサー(パブリック/プライベート)に対してWAF保護ポリシーを適用 - インターネット・アプリケーションだけではなく、VCN内部のプライベートなアクセスに対してもWAFでの保護が可能に DNSには、ロードバランサーのIPアドレスを登録することで、クライアントはWAFを経由したアクセスになる WAFのバックエンドサーバとして保護できるのは、VCNインスタンスのみ フレキシブル・ロード・バランサーに直接デプロイするWAFポリシー Copyright –

    © 2021 Oracle and/or its affiliates. All rights reserved. 8 OCI パブリック・サブネット プライベート・サブネット VCN DRG パブリック・ ロード・バランサ インターネット・ ゲートウェイ インスタンス インスタンス プライベート・ ロード・バランサ WAFポリシー WAFポリシー オンプレミス 保護 保護 インターネット
  7. オブジェクト・ストレージに格納してあるエッジポリシーのログや 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攻撃の検出 アクセスログを包括的に監視するダッシュボード
  8. WAFv2設定手順 Copyright © 2021, Oracle and/or its affiliates 10

  9. 1. OCI Load Balancerを構成する Copyright © 2021, Oracle and/or its

    affiliates 11
  10. 手順概要 WAFv2は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
  11. 手順概要 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.ログを確認する
  12. a. Webサーバを2台立ち上げる はじめにコンピュートインスタンスを配置するVCNおよびサブネットを作成します。VCNの作成手順については、以下チュート リアルをご参照ください。 https://oracle-japan.github.io/ocitutorials/beginners/creating-vcn/ OCI Load Balancerの背後に配置するバックエンドサーバとなるコンピュートインスタンスの作成手順については、以下 チュートリアル記事をご参照ください。 https://oracle-japan.github.io/ocitutorials/beginners/creating-compute-instance/

    1. OCI Load Balancerを構成する Copyright © 2021, Oracle and/or its affiliates 14
  13. 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/
  14. b. OCI Load Balancerを作成する 以下チュートリアル記事を参考にOCI パブリックLoad BalancerをHTTPで作成します。 https://oracle-japan.github.io/ocitutorials/intermediates/using-load-balancer/ 1. OCI

    Load Balancerを構成する Copyright © 2021, Oracle and/or its affiliates 16
  15. c. ドメインを構成する Freenomなど、無料のドメインを取得し、以下サイトを参考にDNSレコードの設定をします。 https://www.ashisuto.co.jp/db_blog/article/oraclecloud-name-resolution-02.html 1. OCI Load Balancerを構成する Copyright ©

    2021, Oracle and/or its affiliates 17
  16. 2. OCI WAFポリシーを作成する Copyright © 2021, Oracle and/or its affiliates

    18
  17. 手順概要 OCI Load Balancerを作成し、ドメインを構成したら、次はWAFのポリシーを作成します。 WAFポリシーは、以下の3種類の保護機能を提供しています。 • アクセス制御:HTTPリクエスト/レスポンスのプロパティを監視し、攻撃を検知・ブロック • レート制限:同一のクライアントIPアドレスからのアクセス頻度を監視し、攻撃を検知・ブロック •

    保護ルール:SQL Injection, PHP Injectionなどの攻撃を検知・ブロック 本資料では、レート制限と保護ルールを有効化する手順を紹介します。 2. OCI WAFポリシーを作成する Copyright © 2021, Oracle and/or its affiliates 19
  18. a. OCI WAFポリシーを作成する OCIコンソールの🈪 → 「アイデンティティとセキュリティ」 →「Webアプリケーション・ファイアウォール」→ 「ポリシー」 → 「WAF

    ポリシーの作成」をクリックします 2. OCI WAFポリシーを作成する Copyright © 2021, Oracle and/or its affiliates 20
  19. 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エラーコードを返す 必要に応じて異なるエラーコードを返すアクションを 作成したり、既存のアクションを修正することも可 能です。
  20. a. OCI WAFポリシーを作成する アクセス制御は有効化せずに「次へ」をクリックします。 2. OCI WAFポリシーを作成する Copyright © 2021,

    Oracle and/or its affiliates 22 アクセス制御は、HTTPリクエスト/レスポンスのプロパティ から攻撃を検知し、ブロックする保護機能です。 アクセス制御を使用することで、例えば特定の国からの HTTPリクエストや、特定のリクエストヘッダー、URLによる 通信を検知しブロックすることが可能です。
  21. 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
  22. 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攻撃に対しては、レート制限の機能を利用し ます。
  23. 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」に変更してください。
  24. b. 保護ルールを設定する 1. 保護機能の選択画面にて、保護ルールを「SQL Injection」「SQLi」「XSS」「Cross-Site Scripting」 のタグによりフィルタリングします。 2. フィルタリングされたルール全83件(2021年12月15日 時点)を全て選択し、画面一番下の「保護機能の

    選択」ボタンをクリックします 2. OCI WAFポリシーを作成する Copyright © 2021, Oracle and/or its affiliates 26
  25. 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
  26. a. WAFポリシーを作成する 強制ポイントの選択画面にて、本手順で作成したOCI ロードバランサを選択し、「次」をクリックします。 2. OCI WAFポリシーを作成する Copyright © 2021,

    Oracle and/or its affiliates 28
  27. a. WAFポリシーを作成する 最後の確認画面で、「WAFポリシーの作成」ボタンをクリック します。 WAFポリシーの作成は数十秒で完了します。 2. OCI WAFポリシーを作成する Copyright ©

    2021, Oracle and/or its affiliates 29
  28. c. ログを有効化する WAFポリシーがアクティブになったら、WAFのログを有効化 します。 1. WAFポリシーの詳細画面→ファイアウォール→ファイア ウォール名をクリックします。 2. ファイアウォールの詳細画面→ログをクリックします。 2.

    OCI WAFポリシーを作成する Copyright © 2021, Oracle and/or its affiliates 30
  29. c. ログを有効化する 1. 「ログの有効化」ボタンをクリックします。 2. ログの有効化画面にて、以下設定をします。 • ログ・グループ:任意 • ログ名:任意

    • ログ保持期間:任意(1か月~6か月) 3. 「ログの有効化」ボタンをクリックします。 以上の手順で、WAFによって出力されたログがOCIの Loggingサービスに転送されるようになりました。 2. OCI WAFポリシーを作成する Copyright © 2021, Oracle and/or its affiliates 31 Loggingサービスに、WAFのログを保存したい特定のロ グ・グループがある場合は、該当のログ・グループを指定 してください。新規にログ・グループを作成することもでき ます。もしくは、Loggingサービスにデフォルトで作成され ているログ・グループ「Default」に保存することもできます。
  30. 3. OCI WAFの動作を確認する Copyright © 2021, Oracle and/or its affiliates

    32
  31. 手順概要 本手順では、攻撃スクリプトを使用してSQL Injection、XSS、DDoS攻撃を実行し、WAFが攻撃をブロックすることを 確認します。 WAFの動きは、WAFのメトリック、またはWAFのログから確認することができます。 また、章末ではOptionalでWAFログをLogging Analyticsに転送する手順を紹介しています。WAFログをLogging Analyticsに転送すると、様々な形式でログをビジュアライズできるほか、機械学習による分析を利用することができます。 3. OCI

    WAFの動作を確認する Copyright © 2021, Oracle and/or its affiliates 33
  32. 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 本資料で使用する攻撃スクリプト
  33. 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に対して攻撃を実行します。
  34. 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
  35. 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回クエリが実行され たタイミングから、リクエストがブロックされるようになります。
  36. b. メトリックを確認する 1. WAFポリシーの詳細画面→ファイアウォール→ファイアウォール名をクリックします。 2. ファイアウォールの詳細画面からメトリックのタブをクリックします 3. OCI WAFの動作を確認する Copyright

    © 2021, Oracle and/or its affiliates 38
  37. b. メトリックを確認する ファイアウォール詳細画面から以下のメトリックを確認する ことができます。 • 「ブロックされたリクエスト」:LBへのリクエストのうち、 WAFが攻撃判断してブロックしたリクエスト • 「トラフィック」:LBへの全体のトラフィック •

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

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

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

    its affiliates 42 ログコンテンツに以下の内容が含まれていたら、レート制限によって、 リクエストがブロックされたアクセスのログになります。 ① data.requestRateLimiting.matchedRule:作成したレー ト制限ルール名 ② data.responseProtection.responseProvider:「request RateLimiting/<作成したレート制限ルール名>」 ① ➁
  41. c. ログを確認する 「ログ検索で探索」の青文字をクリックし、カスタム・フィルタから「data.response.code=401」とフィルタすることで、WAFに よってブロックされたアクセスのログに絞り込むことができます。 3. OCI WAFの動作を確認する Copyright © 2021,

    Oracle and/or its affiliates 43
  42. c. ログを確認する(Optional) 1. OCIコンソールの🈪→「監視および管理」→「ロギング→ サービス・コネクタ」→「サービス・コネクタの作成」をクリック します。 2. サービス・コネクタの作成画面にて、以下項目を入力し ます •

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

    OCI WAFの動作を確認する Copyright © 2021, Oracle and/or its affiliates 45 アクセス急増によるDDoS攻撃の検出 アクセスログを包括的に監視するダッシュボード(2022年提供予定)
  44. 本資料では、WAFv2の設定手順と、動作確認についてご紹介いたしました。 OCI上にあるLoad Balancerを指定するだけで、簡単にWAFを作成・構成することができます。 また、OCI WAFのログは、Loggingサービスで確認するだけでなく、Service Connector Hubを使用してLogging Analyticsに転送することで高度な分析を行うことも可能です。 是非、WAFv2の設定から、Logging Analyticsによるログの分析まで包括してご利用してみてください。

    最後に Copyright © 2021, Oracle and/or its affiliates 46
  45. Thank you Copyright © 2021, Oracle and/or its affiliates 47