OCI WAFでJuiceサーバを保護!~Part2~

 2020.12.28  株式会社テリロジー 技術統括部

こんにちは!テリロジーのY.Tです。
今回はOCI WAFでJuiceサーバを保護!~Part1~の続きの作業をしていきたいと思います。
前回は以下の手順の1~3を実施し、OWASP Juice ShopのインストールとOWASP Tutorialsを実施したため、ここでは、OCI WAFを利用し、OWASP Tutorialsにある攻撃がどれくらい防ぐことができるか確認していきたいと思います!

OCI WAFの設定

1.WAFの作成

OCI WAFは、OCIコンソール左メニューの「セキュリティ」>「Webアプリケーション・ファイアウォール」から設定していきます。
Juice ShopをインストールしたVMマシンと同じコンパートメントを指定し、「WAFポリシーの作成」からWAF設定をしていきます。設定画面では以下の項目を入力し、下部の「WAFポリシーの作成」をクリックして作成します。

WAFの作成

2.WAFポリシーの適用

作成後、WAFのポリシーを有効化します。下部の「WAFポリシー」から「WAFの保護ルール」を選択すると、設定可能な保護ルールの一覧が表示されます。
サポートされている保護ルールはOracle Cloudのドキュメント「サポートされている保護ルール」から確認でき、SQLインジェクションやXSS、ディレクトリトラバーサルなどを防ぐことができます。
また、「推奨事項」タブでは推奨設定が表示されるため、設定時に参考にすることができます。

ここではすべての保護ルールを有効化し、ブロックする設定にします。設定後は、左メニュー「WAFポリシー」>「公開されていない変更」へ推移し、「すべて公開」でルールを保存します。
また、今回は実施しませんが、Botを検出してブロックする機能も設定可能です。

WAFポリシーの適用

管理画面上にはございませんが、CLI、もしくはAPIを利用して脅威インテリジェンスサービスを利用し、脅威のあるIPからの接続をブロックすることも可能です。どちらも、利用可能な脅威インテリジェンスサービスのキーリストを取得後、特定のキーを指定し、検出やブロックなどの設定が可能です。

Tips!

脅威インテリジェントサービスとは?
サイバー攻撃を分析している組織が提供している、脅威のある情報を利用できるサービスです。攻撃者が利用しているドメインやIPアドレス、サイトなどの情報が確認できます。OCI WAFで利用可能な情報は脅威のある IPアドレスになります。

サブネットとDNSの設定

1.サブネットの設定

OCI WAFで利用するトラフィックをOWASP Juice Shopを構築したVMを構築したパブリックサブネットで許可します。現在のVMの構成は以下のようになっており、パブリックサブネットに紐づけられているセキュリティリストでは、組織のグローバルアドレスからのみ接続可能となっています。
※セキュリティリストについてはOracle Cloudで作ってみた その1:仮想クラウド・ネットワーク編に説明がございます

サブネットの設定

Oracle Cloudのドキュメント「オリジン管理」に記載されているIPアドレスを、OWASP Juice ShopのVMに設定したサブネットに追加し、通信を許可します。
サブネットは、左メニューの「ネットワーキング」>「仮想クラウド・ネットワーク」からOWASP Juice ShopのVMに設定したVCNを選択し、パブリックサブネットをクリックします。紐づけられているセキュリティリストが表示されるため、選択後、「イングレス・ルールの追加」から許可するIPアドレスを設定していきます。

2.DNSの設定

前回、Freenomで取得したドメインのDNS設定をしていきます。Freenom下部の「MyDomains」内の「Manage Domain」を選択します。

DNSの設定 画像1

「Manage Freenom DNS」のCNAMEでWAFのドメインを追加します。

DNSの設定 画像2

OWASP Tutorialsの再実施

前回のOCI WAFでJuiceサーバを保護!~Part1~で実施したOWASP Tutorialsを再度実施し、攻撃を防ぐことができるか検証していきます。

1.Score Board

結果:成功

これはブラウザからソースコードを確認して、クライアント側のJavaScriptからGUI上にないページを探すというチュートリアルです。JavaScriptの不備となりますが、本項目はWAFで防げる攻撃ではありません。そのため、結果としては成功しています。

Score Board

2.DOM XSS

結果:成功

JavaScriptによる処理の不備が原因でXSSが行われています。このチュートリアルでのDOM XSSはブラウザ側の処理で完結するため、WAFによる防御ができないため、成功となっています。

DOM XSS

3.Bonus Payload

結果:成功

こちらもDOM XSSを利用しています。外部サイトをiframeで表示させていますが、ブラウザ側の処理で完結するため、WAFによる防御ができず、こちらも結果は成功となっています。

Bonus Payload

4.Privacy Policy

結果:失敗

ログインすることができないため、「Privacy Policy」ページは確認できませんでした。

Privacy Policy

8.Forged Feedback

結果:失敗

通常、Authorは「annonymous」と自動的に入力され、下部の「Submit」ボタンを押すと「Thank you for your feedback!」と表示されるのですが、何も表示されませんでした。

Forged Feedback

5.Login Admin~7.View Basket、9.Login Jim、10.Login Bender

結果:失敗

結果:失敗 画像1

ログインしようとすると、htmlのエラー画面のコードが表示されます。コードを画面に表示すると以下のようになります。

結果:失敗 画像2

また、新規にアカウントを作成しようとしたところ、公式のデモサイトではRegisterボタンを押すとログイン画面へ推移しますが、推移せず、アカウントが作成できませんでした。

まとめ

今回は実際にOCI WAFを設定し、どこまで防げるのかJuice Shopを使って検証していきました。全てのポリシーを有効化しブロックしましたが、ポリシー検知時のアクションとして「検出」も選択可能です。また、「WAFポリシー」>「ログ」から検出やブロックされた通信が確認できるため、検出したことをログで確認しながらチューニングしていくこともできます。
最後までお読みいただき、ありがとうございました。🙇


RECENT POST「OCIサービス紹介」の最新記事


OCIサービス紹介

テリロジーが提供しているOCIの4つのサービス

OCIサービス紹介

Oracle FunctionsのスクリプトをAPIGW経由で確認 Part1

OCIサービス紹介

Oracle FunctionsのスクリプトをAPIGW経由で確認 Part2

OCIサービス紹介

OCIのDNSサービス

OCI WAFでJuiceサーバを保護!~Part2~