リージョンまたぎのフェイルオーバーにWebファイアーウォール(WAF)も使えるか試してみた

# はじめに

前回の記事でDNS トラフィック管理のフェイルオーバーの設定と動作について検証しました。
[リージョンをまたいでトラフィックのフェイルオーバーを試してみた](https://qiita.com/cocotaro0202/items/606f59f89fd18b3c70dc)

今回はすでにあるフェイルオーバーの環境に、どのようにWebファイアーウォール(WAF)を連携させることができるかを試してみます。

# WAFとDNSトラフィック管理の構成

WAFとトラフィック管理を併用するにあたり、まず以下の２つの構成イメージを検討しました。

1. ユーザー --> Traffic Management --> WAF --> Webサーバー
2. ユーザー --> WAF --> Traffic Management --> Webサーバー

幾度かトライ＆エラーも兼ねながら、最終的には２. の構成でシンプルに実現できることがわかりました。既存のトラフィック管理のフェイルオーバー構成を変更することなく、WAFの追加設定で実現できることがわかりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/68e780d5-cbd7-2c23-3a66-e0bc05307f37.png)

# WAF の追加設定
WAFの設定観点から見ると、既にフェイルオーバーを実証ずみの アタッチ済みドメイン（app.cocotaro.com）がオリジンサーバーに該当します。既にあるトラフィック管理の設定をそのままに、WAFの設定だけで構成を実現することが可能です。

WAF の動作手順と設定については以下の記事も参考にしてください。
[ネットワーク初心者が OCI WAF で不正アクセスを防御できるか試してみた (設定と保護ルール編)](https://qiita.com/cocotaro0202/items/7384241014302ad346fe)

## WAFポリシーの設定

ナビゲーションメニューから[セキュリティ]-[Webアプリケーション・ファイアウォール] を選択し、WAFポリシーの作成をクリックします。
![image-20201113153556212.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/48131e46-4ae5-2f07-12b5-7c89d1925f45.png)

**[ポリシー名]**  任意のポリシー名
**[プライマリ・ドメイン**]  **ユーザーが呼び出す際のプライマリ・ドメイン名を入力します。ここでは、waf.cocotaro.com と入力します。**
**[オリジン名]**  任意のオリジン名を入力します。
**[URI]**  オリジンのドメイン名を入力します。**ここにDNSトラフィック管理のアタッチ済みドメイン（app.cocotaro.com）をセットします。**

**WAFを通過後、アタッチ済みドメインが呼び出されれば、後はトラッフィック管理のポリシーのプール優先度に応じて処理されます。**

入力後、**WAFポリシーの作成**をクリックします。
CNAME（WAFのエンドポイント）が表示されるのでDNSに登録するまで保持しておきます。
![image-20201113154001904.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/9aef6db8-0c93-279b-27c2-31d048e87633.png)

## DNSへWAFエンドポイントを登録

ナビゲーションメニューから[ネットワーキング]-[DNSゾーン管理] を選択し、DNSゾーンを選択します。該当するDNSソーンを選択し、左メニューから[レコード]を選択し、**レコードの追加**をクリックしします。
![image-20201113155137930.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/fe17ff22-6f86-a1b1-3e1e-090590c6f721.png)

レコードの追加メニが表示されます。
![image-20201113155332349.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/1805013a-652d-291f-793b-963218b8a39e.png)
**[レコード型]**  CNAME を選択します。
**[名前**]  ユーザーが呼び出す際のプライマリ・ドメイン名を入力します。ここでは、**waf**.cocotaro.com と入力します。
**[TARGET(ターゲット)]**  保持しておいたWAFのエンドポイントを入力します。

**これにより、waf.cocotaro.com へのリクエストはWAFのエンドポイントに置き換えられます。**
**送信**をクリックし、確認した後に**変更の公開**をクリックし、変更を公開します。
![image-20201113160140773.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/f312cefa-e6bd-e884-f50c-9bfa2c1625bf.png)

CNAME (WAFのエンドポイント)がDNSに登録されました。
![image-20201113160542891.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/158db2ca-9b0a-5089-f7a7-4f11500f6750.png)

登録後、nslookup するとWAFのエンドポイントを指していることが確認できます。
![image-20201113160218603.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/f4f9e435-dcd4-8e72-01a4-98d469affaea.png)

# 動作確認

今回の検証では、WAFを経由したうえでトラフィック管理のフェイルオーバーと連携できるか、どういった構成/設定で可能になるかがテーマなので、動作確認には WAFの防御設定等は含みません。WAFの防御については、巻末の関連URL等で確認してください。

## 1. 初期状態
waf.cocotaro.com でリクエストされたトラフィックはWAFを経由して、トラフィック管理のフェイルオーバーポリシーにより、優先度の高い osaka01 サーバーが処理しています。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/7032cd96-42ac-fd15-f12a-776027ff3de8.png width=60%>


## 2. osaka01サーバーを停止
osaka01 インスタンスを故意に停止します。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/02c3fd7a-d5cb-6a9e-fa10-d7c3f2587757.png width=60%>

しばらくすると、トラフィック管理のヘルスチェックでosaka01サーバーの異常を検知しました。
![image-20201113164358585.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/20f3b1d9-8652-48bd-8885-d4b4a6ed773d.png)

## 3. london01サーバーへのフェイルオーバを確認
london01サーバーへ正常にフェイルオーバーされることが確認できました。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/32721b56-4d97-83dc-aa57-6d6f265c60c6.png width=60%>

## 4. osaka01サーバーを再起動
osaka01 インスタンスを再起動します。

![image-20201113164749389.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/1429d449-6a7f-bbf4-b978-6bbdb9e53fed.png)

ヘルスチェックでosaka01サーバーが正常にもどったことを検知しました。
![image-20201113164948299.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/cececc69-6940-8dd6-bd8b-de1bf82b3913.png)

## 5. osaka01サーバーの復旧を確認
フェイルオーバーポリシーに順じて、優先度の高い osaka01 サーバーに処理が戻ったことが確認できました。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/7032cd96-42ac-fd15-f12a-776027ff3de8.png width=60%>


**WAF を経由した場合でも、トラフィック管理のフェイルオーバーポリシーが有効に機能していることが確認できました。**

# まとめ
WAF は昨今多発するサイバー攻撃や、Bot による攻撃からWebシステムを未然に守るための１つの防御手段です。今回 WAF と トラフィック管理を容易に組み合わせて利用することが実現できたので、システムのサービスレベルを向上させると共に、セキュアという観点でも安全性を強化して使えることが確認できました。

# 関連URL
[ネットワーク初心者が OCI WAF で不正アクセスを防御できるか試してみた (設定と保護ルール編)](https://qiita.com/cocotaro0202/items/7384241014302ad346fe)

[ネットワーク初心者が OCI WAF を設定し不正アクセスを防御できるか試してみた (Bot編)](https://qiita.com/cocotaro0202/items/688a1aa4426e86fcae8e)

[リージョンをまたいでトラフィックのフェイルオーバーを試してみた](https://qiita.com/cocotaro0202/items/606f59f89fd18b3c70dc)