AzureでBarracuda Web Application Firewall(WAF)を構築してみる

#はじめに

【最新記事はこちら↓】
‪Azure上にBarracuda CloudGen WAFをHA構成で構築‬

‪Azureインフラ編‬
[‪https://zakki.nya-n.net/?p=371‬](https://zakki.nya-n.net/?p=371)

‪WAF設定編‬
[‪https://zakki.nya-n.net/?p=387‬](https://zakki.nya-n.net/?p=387‬)
【最新記事はこちら↑】
‪
Barracuda Web Application Firewallを試用する機会があったので、Azure上に構築してみました。
前提として、すでにバラクーダネットワークスジャパンさんから、試用版のLicense Tokenは発行済みという所からの記事です。
また、Azureポータル上から仮想マシン、仮想ネットワークなどの作成が行える方が対象です。

【宣伝】[pnop](http://www.pnop.co.jp/)は[バラクーダネットワークスジャパン](http://www.barracuda.co.jp/)さんの[クラウドパートナー](http://www.barracuda.co.jp/lp_cloud)です【大事】

#ネットワーク構成とWebサーバ
Azureの仮想ネットワークは「Frontend」と「Backend」のふたつのサブネットに分けており、Frontend側にWAFを構築します。
BackendにはLinux(CentOS)の仮想マシンを立ち上げてこれをWebサーバとします。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/758ff078-b8a7-df64-b38e-2e2954714dd8.png)

Webサーバの仮想マシンは事前にデプロイしておきます。
今回は試用であるのと、LinuxサーバはOS自体が軽いので、仮想マシンのサイズはBasic A1で十分です。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/bec32d39-4be3-7155-1ff4-291a0d356ef3.png)

#WAFのデプロイ
Azureポータルのマーケットプレイス上から「Barracuda Web Application Firewall」でフィルターを行い、「Barracuda Web Application Firewall (WAF) - BYOL」を選択して「作成」をクリックします。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/e49e8ba1-06ff-3ea1-2fb6-4ebcb93a2909.png)

1.基本ブレードでは必要事項をすべて入力します。
ここで入力するパスワードはWAF管理画面にアクセスする際に必要なものになります。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/f34a04aa-f29c-0b94-778a-03a9c68f4b99.png)

2.サイズブレードでは、試用版ライセンス取得時に決めたサイズと同じものを選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/d3f27c88-96ee-b24f-03a0-6103ab1e7c4a.png)

3.設定ブレードではWAFの仮想マシンを配置する仮想ネットワークとサブネットを正しく設定します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/1a30dd85-de6f-4321-8e31-d3ddd6e97920.png)

4.概要ブレードで最終的に内容を確認します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/e1771a42-1441-7cc0-c66a-808620013d36.png)

5.購入ブレードで、念のためプランの詳細を確認して、仮想マシン料金以外は0円であることを確認します。
最後に「購入」をクリックするとWAFサーバの作成が始まります。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/27a73643-6fd0-80fd-25b4-72ef8c1cedf0.png)

しばらく待って、仮想マシンの状態が「実行中」になったら構築完了です。
パブリックIPアドレスを控えておきます。(本例では40.117.196.197)
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/d470e25b-f8ed-becb-1d4f-e54db4ca5a66.png)

#管理画面へのアクセス
通常のブラウザから「 http://WAFのIPアドレス:8000 」にアクセスします。
初回はライセンス登録画面が表示されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/915a8bf4-4340-0af1-84c3-ba580a8b440a.png)

「I Already Have a License Token」をクリックして、TokenとDefault Domain(とりあえずデフォルトでOK)を入力して「Provision」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/789dba45-08e1-6234-ccac-f953ea9ace9e.png)

しばらく待つと使用許諾画面が出るので、画面下部のName, Email Address, Companyを入力して「Accept」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/c65784db-d2ef-9642-891c-b1edb42f2ba4.png)

ログイン画面が表示されるので、id欄は「admin」パスワード欄にはAzureポータルから指定したパスワードを入力します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/1151febe-7a8e-1b0e-dd01-fa37492b439a.png)

WAFの初期画面が表示されたらインストールは完了です。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/a4206dad-4770-6d19-6ea0-ba0ea33b5d7b.png)

#Webサーバ側の準備
仮想ネットワークのBackendのサブネットに構築済みのLinux(CentOS)サーバにApacheをインストールして有効化します。

以下のコマンドでOKです。

```
sudo yum -y install httpd
sudo service httpd start
```

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/8ea8187c-0188-2212-00b7-c877d0bbbe52.png)

Linuxサーバに紐づいているNSGの受信セキュリティ規則にTCP/80のポート開放を追加します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/bdd28a89-b593-b14f-6d36-d73d7cbfabd8.png)

まずはブラウザからWAFを経由しないで、Linuxサーバに直接アクセスしてWebページが表示されることを確認します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/18542631-c752-e907-7043-05abefd59078.png)

#WAFの設定
まずはLinuxサーバのプライベートIPアドレスを確認しておきます。
Azureポータルからも確認できますが、sshコンソールから以下のコマンドでも確認できます。

```
ifconfig
```

今回の画面例では「192.168.1.5」であることがわかりました。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/ed5b74eb-7514-ff6d-fc54-e73114d35c7b.png)

WAFの管理画面から「基本設定」「サービス」画面を開きます。
サービスの追加の入力フィールドで「サービス名」には適当な文字列、「タイプ」はHTTP、「ポート」は80、「実サーバ」に先ほど確認したLinuxサーバのプライベートIPアドレスを入力して、「追加」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/537cea94-e5ef-ba7a-2339-915e0c47bd09.png)

しばらく待って、設定が更新された旨のメッセージと、下部のServices一覧にて、追加したサーバのステータスが緑色になることを確認します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/5ba5e2ad-d5b2-598e-c4b1-ad686f751823.png)

今度はWAF経由でWebサーバにアクセスするため、WAFサーバのNSGの受信セキュリティ規則にTCP/80のポート開放を追加します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/5c094c40-539d-8382-c4f4-835808b1e5b0.png)

もうWebサーバに対して直接HTTPアクセスはされないように、こちらのNSGの受信セキュリティ規則からはTCP/80のポート開放の行は削除しておきます。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/f88acdbe-940f-15dd-1b1d-541014bcf3ac.png)

「 http://WAFのIPアドレス/ 」でWebサーバ側のコンテンツが表示されることを確認します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/d67b8a0c-c229-b713-ec9b-687035b651e1.png)

#WAFの機能確認
今回はアクセスするURLにクロスサイトスクリプティング的なパラメータを追加して、WAFの機能でアラートが発生するかを確認します。
先ほどのURLの後ろに「?test=\<script>attack\</script>」を追加して再度アクセスします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/7deb6d9a-0139-c1c0-6f88-c6df453bce12.png)

続いてWAF管理画面から「基本設定」「Webファイアウォールログ」をクリックして、一覧から「攻撃名=XSS」となっているレコードが出力されていることを確認します。
今回は簡単な試用であるため、こちらの攻撃を受けた際のアクション設定などは割愛しますが、WAF側で攻撃されたことを検知したことがわかりました。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/44f99168-1969-c706-8fc4-5529b106ff4d.png)

さらに一覧から「詳細」をクリックすると、詳しい内容が表示されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/7cf8e878-6187-6478-1d86-ec2ebc55885e.png)

#おわりに
今回は非常に簡単な試用でしたが、Azureマーケットプレイスからのデプロイ方法と、最初の導入方法については詳しく説明できたと思います。
また試用の機会があれば、さらにWAF本体の機能についてももう少し深く掘り下げたいと思います。