Subscribed unsubscribe Subscribe Subscribe

PIED_PIPER’s diary

ネットワークエンジニア視点からの Web Security, WAF についてのブログです.

F5 Networks の Application Security Manager (ASM) セットアップ

ここでは F5 Networks 社の ASM のセットアップから使い方を解説します.細かい設定項目は別の投稿で詳解する予定なので,ここではセットアップの流れを詳解します.

 

ASM のセットアップ手順

1.ライセンスの確認

2.プロビジョニング

3.セキュリティポリシーの作成

4.作成したセキュリティポリシーを Virtual Server に適用する

 

1.ライセンスの確認

ライセンスの確認は GUI の 《 System タブ ➡︎ Resource Provisioning 》からできます.Application Security (ASM) の項目が Licensed になっていれば,ASM 用のライセンスが有効になっている,という事になります.

f:id:PIED_PIPER:20170103194430j:plain

 

2.プロビジョニング

プロビジョニングの変更時にはシステムが Offline となりますので,プロダクション環境で行う際には,冗長構成のスタンバイ側で先に変更を実施し,Failover を行ってもう一方の機器でも実施するようにしましょう.

 

ASM の項目のチェックボックスをクリックすると,Provisioning モードが選択できます.デフォルトは Nominal です.その他に Minimal, Dedicated があります.変更に応じて画面上のリソースの割り当てを示すバーグラフが更新されます.

 

Minimal : ASM を動かすのに必要最小限のリソースを割り当てる

Dedicated : 機器のリソースを ASM に最大限割り当てる.このモードを選択するとその他のモジュールを使うことができません (その他のモジュールを全て None にしなくてはならない).

f:id:PIED_PIPER:20170103195359j:plain

プロビジョニング設定を変更したら Submit をクリックして,適用します.クリックすると以下の様な確認メッセージが出てきますので,OK をクリックすると適用が開始されます.

《 Reprovisioning may restart daemons or reboot the system, which causes lost connections.  Are you sure you want to proceed? 》

 

OK をクリックすると以下のような画面となり,しばらく Offiline になります.

f:id:PIED_PIPER:20170103200457j:plain

 

3.セキュリティポリシーの作成

プロビジョニングが完了すると,GUI の左のメインタブの中に "Security" というタブが表示されます.ASM の設定のほとんどはこのタブの中で行います.

 

では,セキュリティポリシーを作ってみましょう.GUI から以下の様に進みます.

《 Security ➡︎ Application Security ➡︎ Security Policies ➡︎ Active Policies 》

 

f:id:PIED_PIPER:20170103201109j:plain

Create をクリックすると,以下のメニューが表示されます.ここでは,『作成したセキュリティポリシーを既存の Virtual Server に適用する』方法で作成します.

f:id:PIED_PIPER:20170103201853j:plain

Next をクリックすると,以下のメニューが表示されます.ここでは,適用する Virtual Server の名前と,Virtual Server が HTTP なのか HTTPS なのかを選択します.

f:id:PIED_PIPER:20170103202154j:plain

Next をクリックすると,以下のメニューが表示されます.ここではデプロイメント シナリオを選択します.今回はマニュアル設定のオプションで説明します.

Create a security policy automatically (recommended)

ポリシービルダーを使ってセキュリティポリシーを作り上げていく場合に選択します.ポリシービルダーとは,一定期間実際にトラフィック(リクエスト)を流してトラフィックから自動的にポリシーの詳細定義を学習していく機能です.ポリシービルダーの詳細については別の投稿で説明しようと思います.

Create a security policy manually or use template (advanced)

手動でポリシーの詳細を定義していくオプションです.アプリケーションで使用している URL やパラメータなどが判っていて,それに応じてポリシーを定義したい場合や,テンプレートを使用したい場合にはこのオプションになります.

Create a security policy for XML and web services manually

あまり利点がないので使いません.マニュアル設定で問題なし.

Create a security policy using third party vulnerability assessment tool output

IBM, HP, Qualys などのスキャナーからのレポートをもとにポリシーを定義するオプションです.例えば監査に通るように,スキャナーで報告されたセキュリティホールに対応したポリシーを作れと言われたら,このオプションで作ったポリシーをベースに設定を始めます.

f:id:PIED_PIPER:20170103202603j:plain

Next をクリックすると,以下のメニューが表示されます.ここではいくつか設定項目がありますが,以下の3つは必須項目です.

Security Policy Name : 任意の名前を指定します

Application Language : アプリケーションで使用している文字エンコーディング方式を指定します.これは,後に変更することができません.デフォルトは UTF-8 です.

Enforcement Readness Period : 別の投稿で説明する予定です.デフォルトは 7 日です.

f:id:PIED_PIPER:20170103204826j:plain

Next をクリックすると,以下のメニューが表示されます.ここでは Attack Signature の初期設定を行います.アプリケーションのタイプを選択するとそれに応じた Attack Signature が適用されます.デフォルトは以下の通りです. 

f:id:PIED_PIPER:20170104094214j:plain

Next をクリックすると,以下のメニューが表示されます.ここではエンティティ(File Type,URL,Parameter の事をエンティティという)の学習の粒度を設定します.ここではデフォルトのまま進みます.

f:id:PIED_PIPER:20170104095955j:plain

最後に設定確認画面が表示されます.Finish をクリックするとセキュリティポリシーの作成は完了です.

f:id:PIED_PIPER:20170107102923j:plain

 セキュリティポリシー作成が完了すると以下の画面に移ります.

青い枠で囲んである部分が,現在表示されている画面への Path を表しています.

同画面へは,左の赤枠の Security タブから,《 Security >> Application Security : Policy : Policy Properties 》のように開くこともできます.

f:id:PIED_PIPER:20170107104032j:plain

では,同画面の表示内容について見ていきましょう.

Current edited policy のドロップダウンから,表示するセキュリティポリシーを選択します.ここでは,先ほど作成した myPolicy しかありませんので,選択する必要はありません.次に,Enforcement Mode に着目しておきましょう.ここでは Transparent になっています.この設定はリクエストをブロックするのか,または全て通過させるのかというセキュリティポリシーの基本動作を指定します.Blocking にすると,ポリシー定義に反するリクエストはブロックします.Transparent の場合はリクエスは通過し,設定に応じた violation のログが残されます.Transparent はポリシーを作り上げる過程で,アプリケーションへの影響を出さずにリクエストの内容を把握する時に利用します.

f:id:PIED_PIPER:20170107104727j:plain

 

4.作成したセキュリティポリシーを Virtual Server に適用する

 

最後に,作成したセキュリティポリシーを Virtual Server に適用しましょう.今度は Virtual Server に関する設定なので,Security タブではなく,Local Traffic タブから

《 Local Traffic >> Virtual Servers >> Virtual Server List 》のように適用したい Virtual Server を選択します.その後に,上部の赤枠の Security タブから Policies を開くと以下の画面が表示されます.

Application Security Policy に,作成したセキュリティポリシーをセットします.

Log Profile には,ここではデフォルトで用意されている Log all requests をセットしています.

f:id:PIED_PIPER:20170107110414j:plain

 

以上で ASM セキュリティポシリーの作成と Virtual Server への適用は完了です.実際にリクエストを送ってイベントログを確認してみましょう.テストには,BigIP 自体から cURL コマンドで Virtual Server 宛にリクエストを投げて行います.

[root@asm2:Active:Standalone] config # curl 10.10.0.101/login.php -v
* About to connect() to 10.10.0.101 port 80 (#0)
*   Trying 10.10.0.101... connected
* Connected to 10.10.0.101 (10.10.0.101) port 80 (#0)
> GET /login.php HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 OpenSSL/1.0.1l zlib/1.2.3 libidn/1.18
> Host: 10.10.0.101
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Wed, 14 Dec 2016 20:33:17 GMT
< Connection: close
< Vary: Accept-Encoding
< Content-Length: 91
< Content-Type: text/html;charset=UTF-8
< Set-Cookie: TS015ffd33=0154569298fa6d5cdea94dbf487ad976893f2bba5fa19a410517b8b3de70b51495da692fe26b292e285bfd035aeff2d6ca9a6f73c5; Path=/
<
<html>
省略
</html>

 レスポンスに TSxxxxx という Cookie がセットされているのが見えます.ASM はこのような TSxxxxx という cookie をセッション管理や様々なセキュリティ機能を実現するために使います.

 

最後にイベントログを確認してみましょう.

イベントログの画面は《 Security >> Event Log : Application : Requests 》です.

f:id:PIED_PIPER:20170107112704j:plain

 

以上で ASM のセットアップの流れを説明しました.設定内容の詳細はまた別の投稿で説明したいと思います.