F5 Advanced WAF v17.1 簡単セットアップガイド

最終更新日: 2023年8月28日

はじめに

このページでは、これらのオフィシャルなドキュメントの補足となる資料や、複数の機能を組合せてソリューションを実現する方法をご紹介いたします。 F5のオフィシャルなドキュメントはこちらにございます。

コンテンツ

こちらのページでは、以下の内容をご紹介しております。

  • 本セットアップガイドにて、F5 Advanced WAF(以下、AWAF)のポリシーの設定方法についてご案内します。

  • AWAFは、Webアプリケーションファイアウォールです。

  • AWAF によって、Web アプリケーション特有の攻撃に対する防御が可能となります。

  • Bot対策機能、L7レベルのDoS攻撃に対する防御機能も兼ね備えています。

  • 本ガイドでは、AWAFをご購入いただいてすぐにWAFを導入頂けるように、必要となる典型的なセットアップ手法を、豊富なスクリーンショットを交えて解説します。(実際は環境構成にあった設定値を設定して下さい。)

  • 本ガイドでは、F5 Japanにおけるハンズオントレーニングのコースでも利用しております。

AWAF設定初級編

本章では、基本的なAWAFの設定内容についてご紹介致します。

AWAFとは

F5 Advanced WAF(略してAWAF)とは、OWASP TOP10の攻撃、ウェブアプリケーションの脆弱性、ゼロデイ攻撃、L7レイヤのDDoS攻撃などからWEBアプリケーションを守る高度なウェブアプリケーションファイアウォールです。

AWAFであれば、スタンドアローン構成、BIG-IP LTM(ADC)にアドオンして利用する構成を取ることとが可能です。そして、オンプレでも、Public Cloud でもPrivate Cloudでも動作するため、デプロイ場所を選びません。

自社で柔軟なWAFポリシーを作成したいお客様、AWAFを利用して高度なWAFサービスを提供したいというサービス事業者様、そして、LTM導入済みでWAFを追加したいお客様など、幅広くご利用頂けます。

_images/mod1-1.png

その他、AWAFの特長や利用メリットは以下の記事をご確認下さい。

AWAFスタンドアロン構成ネットワークサンプル

本手順書では以下のサンプルネットワーク構成で設定を行います。 (F5ハンズオン環境でも同様のネットワーク構成を利用しています。)

  1. 本ガイドにおける構成イメージ

    _images/mod2-1.png

    注釈

    • v17.1.0.2以上 のバージョンをご利用下さい。

    • (各F5代理店でサポート可能な範囲において、)極力最新のバージョンを適用頂くことをおすすめ致します。最新のバージョンはAskF5でご確認下さい。

初期設定(プロビジョニング、ネットワークの設定等)

  1. 初期パスワード(Username:admin, Password:admin)でログインし、F5ハンズオントレーニングではパスワードを(ilovef5)に変更します。

    _images/mod3-1.png

  2. パスワード変更に成功したら、変更後のパスワード(Username:admin, Password:ilovef5)でログインします。

    _images/mod3-2.png

  3. Next ボタンを選択します。

    _images/mod3-3.png

  4. ライセンスアクティベーションを行います。ライセンス投入済みの場合は、Next ボタンを選択します。

    _images/mod3-4.png

  5. プロビジョニングを行います。Application Security(ASM) のみを選択し、Next ボタンを選択します。

    _images/mod3-5.png

  6. プロビジョニングには少し時間がかかります。終了したら、Continue ボタンを選択します。

    _images/mod3-6.png

  7. デバイス証明書の確認をし、Next ボタンを選択します。

    _images/mod3-7.png

  8. Host Name に、big80.f5jp.local と設定し、Time ZoneJapan を選択し、Root Account のパスワードに ilovef5 と記入し、Next ボタンを選択します。(F5ハンズオントレーニング以外の場合は、それぞれの環境にあった内容を設定して下さい。)

    _images/mod3-8.png

  9. Finished ボタンを選択します。

    _images/mod3-9.png

  10. External VLANの設定を行います。Network >> VLANs : VLAN List にて、Create ボタンを選択します。Nameexternal と設定し、Interface1.1(Untagged) を選択し、Finished ボタンを選択します。

    _images/mod3-10.png

  11. Internal VLANの設定を行います。Network >> VLANs : VLAN List にて、Create ボタンを選択します。Nameinternal と設定し、Interface1.2(Untagged) を選択し、Finished ボタンを選択します。

    _images/mod3-11.png

  12. 以下のようになります。

    _images/mod3-12.png

  13. External SelfIPの設定を行います。Network >> Self IP List にて、Create ボタンを選択します。Nameexternal-selfip と設定し、IP Address10.1.10.80Netmask255.255.255.0VLAN/Tunnelexternal を選択し、Port LockdownAllow None を選択し、Finished ボタンを選択します。

    _images/mod3-13.png

  14. Internal SelfIPの設定を行います。Network >> Self IP List にて、Create ボタンを選択します。Nameinternal-selfip と設定し、IP Address10.1.20.80Netmask255.255.255.0VLAN/Tunnelinternal を選択し、Port LockdownAllow Default を選択し、Finished ボタンを選択します。

    _images/mod3-14.png

  15. 以下のようになります。

    _images/mod3-15.png

  16. Default Gatewayの設定を行います。Network >> Routes にて、Add ボタンを選択します。Name に任意の名前を設定し、Destination , Netmask0.0.0.0 を設定し、Gateway Address10.1.10.1 を設定し、Finished ボタンを選択します。

    _images/mod3-16.png

  17. WEBサーバへのルーティング設定を行います。(以下は設定例となります。F5ハンズオントレーニングでは、SelfIPと同じセグメントなため不要です。)

    _images/mod3-17.png

  18. 以下のようになります。

    _images/mod3-18.png

  19. DNSの設定を行います。System >> Configuration : Device : DNS にて設定します。F5ハンズオントレーニングでは、10.1.1.2を指定します。

    _images/mod3-19.png

  20. NTPの設定を行います。System >> Configuration : Device : NTP にて、NTPを設定し、Update ボタンを選択します。 F5ハンズオントレーニングではNICTのNTPを利用します。

    _images/mod3-20.png

(脆弱な)WEBサーバの登録

  1. Virtual Serverを作成します。Local Traffic >> Virtual Servers : Virtual Server List にて、Create ボタンを押します。

    _images/mod4-1.png

  2. Name に任意の名称を記述し、Destination Address/Mask10.1.10.180Service Port443 を設定し、HTTP Profile (Client) にて HTTP を選択、SSL Pofile(Client) にて clientssl を選択します。

    _images/mod4-2.png

  3. Source Address Translation にて、Automap を選択します。

    _images/mod4-3.png

  4. Default Pool にて、+ ボタンを選択します。

    _images/mod4-4.png

  5. Poolを作成します。Name にて、任意の名称を入力し、Health Monitors にて gateway_icmp を選択し、New Membersに、WEBサーバ(Address : 10.1.20.202, Service Port : 80 )を加えて Add ボタンを押し、Finished ボタンを押します。

    _images/mod4-5.png

  6. Default Pool にPoolが追加されたことを確認し、Finished ボタンを押します。

    _images/mod4-6.png

  7. Windowsクライアントを起動し、https://10.1.10.180/DVWA/login.php にアクセスします。Username: admin、Password: password でログインします。

    _images/mod4-7.png

  8. DVWA Security にアクセスし、Security LevelLow に設定します。

    _images/mod4-8.png

  9. SQL Injection にアクセスし、User ID' or 1=1 # と入力し、SQLインジェクション攻撃をします。(本ガイドからコマンドはコピーしないで下さい。シングルクォーテーションに注意してタイプして下さい。)

    _images/mod4-9.png

  10. SQLインジェクション攻撃が成功し、User IDが複数表示されることを確認します。

    _images/mod4-10.png

Guided configurationによるWAFポリシーの作成

  1. Security >> Guided Configuration を開きます。Guided Configurationのバージョンを確認します。(Guided Configurationの起動には少し時間がかかります。)

    _images/mod5-1.png

  2. MyF5のDownloadサイト にて、最新版のGuided Configurationをダウンロードします。ダウンロードにはMyF5のアカウント登録が必要となります。アカウント登録は数分で行うことはできますが、F5ハンズオン受講者でアカウントをすぐに作成することができない方は、Windows Clientデスクトップ上のダウンロード済みのファイルをご利用下さい。(既に最新版をご利用の場合は、アップデート作業は不要なので、手順7に進んで下さい。)

    _images/mod5-2.png

  3. AWAFの先程の画面に戻り、右上の Upgrade Guided Configuration をクリックし、ダウンロードしたGuided Configurationファイル(xxx.tar.gz)をアップロード、インストールします。

    _images/mod5-3.png

  4. インストールしている途中のイメージです。

    _images/mod5-4.png

  5. インストールが終了したら、Continue ボタンを押します。

    _images/mod5-5.png

  6. Guided Configurationのバージョンがアップデートされていることを確認します。

    _images/mod5-6.png

  7. Web Application ProtectionWeb Application Protection を選択します。

    _images/mod5-7.png

  8. DNS, NTP, Routing が設定OKとなっていることを確認し、Next ボタンを押します。

    _images/mod5-8.png

  9. 右上の Show Advanced Setting をクリックし、Security Policy Name に任意の名前を設定し、Enforcement Mode にて Transparent を選択し、type of policy to protect application にて、Generic を選択し、Server Technologies にて利用しているミドルウェアや言語を選択します。F5ハンズオン環境では、Apache, MySQL, PHP を選択し、Next ボタンを押します。

    _images/mod5-9.png

  10. 既にVirtual Serverは作成済みなので、ここでは、Assign Policy to Virtual Server(s) にチェックを入れ、Use Existing を選択し、作成済みのVirtul Serverを右に移動させ、Save&Next ボタンを押します。

    _images/mod5-10.png

  11. 内容を確認し、Deploy ボタンを押します。

    _images/mod5-11.png

  12. 作成したWAFのポリシーにLogging Profileをアタッチします。Security >> Overview:Summary にて、作成済みのVirtual Serverを選択し、AttachLogging Profile を選択します。

    _images/mod5-12.png

  13. Log illegal requests を選択し、Attach ボタンを押します。

    _images/mod5-13.png

  14. Local Traffic >> Virtual Servers:Virtual Server List にて作成済みのVirtul Serverを選択し、Security タブの Policies を選択します。Application Security Policy と Log Profile がそれぞれ設定されていることを確認します。

    _images/mod5-14.png

  15. 次に誤検知対策、負荷防止対策を設定します。(必須ではありません。) Security >> Application Security : Policy Building : Learning and Blocking Settings を開きます。日本語サイトの誤検知の防止策として、Failed to convert character をOFFにします。また、Data Guard:Information Leakage Detected もパフォーマンス面を考慮してOFFにし、Save ボタンを押します。

    _images/mod5-15.png

  16. Apply Policy ボタンを押し、ポリシーを反映させます。

    _images/mod5-16.png

シグネチャの状態確認

  1. Security >> Application Security : Policy Building : Learning and Blocking Settings を開きます。Attack Signatures のところで、Enable Signature Staging にチェックが入っていることを確認します。

    _images/mod6-1.png

  2. Security >> Application Security : Security Policies : Policies List を開きます。作成済みのセキュリティポリシーをクリックします。

    _images/mod6-2.png

  3. Attack Signatures をクリックします。作成済みのセキュリティポリシーをクリックします。シグネチャのステータスが Staging となっていることを確認します。

    _images/mod6-3.png

    注釈

    Staging(ステージング)モードとは、Block設定が無効化され、攻撃を検知した場合には、「Manual Traffic Learning」で学習するだけの動作となるモードです。

ステージングログの設定

ステージングのログをEvent Logs に出力するための設定を行います。(必須ではありませんが、ステージング運用される場合には便利です。)

  1. Security >> Event Logs : Logging Profiles にて、Create ボタンを押します。任意の名前を設定し、Application Security のところで、Enabled をチェックし、Request type にて、Illegal requests, and requests that include staged attack signatures or staged threat campaigns or Potential False Positive signature ... を選択し、Create ボタンを押します。

    _images/mod7-1.png

  2. Security >> Overview : Summary にて、作成済みのVirtul Serverにチェックをし、一旦、アタッチした Logging Profile(s) をはずします。

    _images/mod7-2.png

  3. 再度アタッチの設定をします。

    _images/mod7-3.png

  4. 作成済みの Logging Profile(s) をアタッチします。

    _images/mod7-4.png

シグネチャの動作確認

  1. Windowsクライアントを起動し、https://10.1.10.180/DVWA/login.php にアクセスします。Username: admin、Password: password でログインし、SQL Injection にアクセスし、User ID'or 1=1 # と入力し、SQLインジェクション攻撃をします。(本ガイドからコマンドはコピーしないで下さい。シングルクォーテーションに注意してタイプして下さい。)

    _images/mod8-1.png

  2. Security >> Event Logs : Application : Requests にて、Staged でSQLインジェクションが検出されていることを確認します。

    _images/mod8-2.png

  3. 上記画面のSuggestionsの Related Suggestions をクリックすると、TrafficLearningの画面でも Attack signature detected が確認できます。( Security >> Application Security : Policy Building : Traffic Learning でもたどれます。)

    _images/mod8-3.png

シグネチャのステージング解除

  1. ステージングを解除すると、Event logに攻撃として記録されます。Security >> Application Security : Security Policies : Policies List >> DVWA_policy にて、Attack Signatures を選択し、画面右上の Enforce all Staged Signatures を選択し、ステージングを解除します。

    _images/mod9-1.png

  2. ステージングが解除されると、StatusEnforced となります。

    _images/mod9-2.png

  3. Apply Policy を押します。

    _images/mod9-3.png

  4. 再度WindowsクライアントからSQLインジェクションを試みます。

    _images/mod9-4.png

  5. Security >> Event Logs : Application : Requests にて、Alarm Learn でSQLインジェクションが検出されていることを確認します。

    _images/mod9-5.png

Blockingモードへの変更

  1. Blockingモードへ変更すると、Event logに攻撃として記録され、更にブロックされます。Security >> Application Security : Security Policies : Policies List >> DVWA_policy にて、General Settings を選択し、Enforcement ModeBlocking に変更し、Save ボタンを選択します。

    _images/mod10-1.png

  2. Apply Policy を押します。

    _images/mod10-2.png

  3. 再度WindowsクライアントからSQLインジェクションを試みます。

    _images/mod10-3.png

  4. Security >> Event Logs : Application : Requests にて、Block Alarm Learn でSQLインジェクションが検出されていることを確認します。

    _images/mod10-4.png

シグネチャのチューニング

 誤検知が発生した場合の対処例をご紹介します。 以下で実施する内容は、Webアプリケーションの各パラメータの役割が全て把握できている場合を除き、運用開始前から全てを設定するのは難しいかもしれません。その場合は、仮運用・本運用に入ってから、再度このチューニングを実施してください。

以下は誤検知の例です。

  1. 入力内容にたまたま攻撃に関連するパラメータが含まれてしまったとします。

    _images/mod11-1.png

  2. 書き込みを行うと、AWAFで攻撃として検知されてしまいます。

    _images/mod11-2.png

以降、2つの対策例をご紹介します。

誤検知したパラメータをホワイトリスト化

  1. Event logで誤検知したログを確認します。

    _images/mod11-3.png

  2. Occurences をクリックし、誤検知したパラメータ名(mtxMessage)を確認します。また、Attack Signature列のSee Moreをクリックし、 Documentationリンクを開いたページで、シグネチャID(200002835)を確認します。

    _images/mod11-4-1.png _images/mod11-4-2.png _images/mod11-4-3.png

  3. Security >> Application Security : Parameters : Parameters List にて、Create ボタンを押します。

    _images/mod11-5.png

  4. Parameter Name に誤検知したパラメータ名(mtxMessage)を入力し、チェックBOXをすべてクリアし、Parameter Value Type にて、Ignore Value を選択し、Create ボタンを押します。

    _images/mod11-6.png

  5. Apply Policy を押します。

    _images/mod11-7.png

  6. Windowsにて再度書き込みを行うと、書き込みが成功することを確認します。

    _images/mod11-8.png

誤検知したパラメータで該当シグネチャを無効化

  1. 今度は先程作成したParameterの Parameter Value Type にて、User-Input Value を選択し、Attack Signatures タブにて、誤検知したシグネチャID(200002835)を左に移動し、Disabled にし、Update ボタンを押します。

    _images/mod11-9.png

  2. Apply Policy を押します。

    _images/mod11-10.png

  3. Windowsにて再度書き込みを行うと、書き込みが成功することを確認します。

    _images/mod11-11.png

Threat campaignsシグネチャの設定

 Webアプリケーションの脅威対策を行う上で、実際の攻撃とフォールスポジティブを見極めることに直面することがあります。シグネチャやWAFの様々な機能によって、既知の脆弱性に対する攻撃リクエストを評価すると同時に、悪意のないリクエストも評価されるため、管理者はWAFで検知されたアラートに対し、正常なリクエストか悪意のあるリクエストか判断を迫られることがあります。

 この問題は、検査するデータがシングルポイントであることにあります。もっと多くの条件を元にリクエストを検査することによって、この問題を解決することができることがあります。F5はこの問題を解決する手法として、Threat Campaignsシグネチャ という独自のシグネチャを提供しています。Threat Campaignsシグネチャ は、実際の攻撃キャンペーンを元に複数の条件をマッピングされたものになっています。

 この項では、Threat Campaignsシグネチャの設定確認と、テキスト上にて攻撃サンプルログを確認します。

  1. Security >> Application Security : Policy Building : Learning and Blocking Settings で表示された画面にて、Threat Campaigns の AlarmBlock が有効になっていることを確認します。(Learnは存在しません。)

    _images/mod12-1.png

  2. 攻撃を受けたと仮定して、Eveng Logsでログを確認します。(F5ハンズオンでは実際に攻撃は行いません。本ガイドによる確認のみとなります。)下記は攻撃を受けたときのサンプルログとなります。こちらを見ると、Violation Rating が 5:Request is most likely a threat となっていることが分かります。これはThreat Campaignsシグネチャが実際の攻撃を元に作成されており、ほぼフォールスポジティブではないことを表しています。

    _images/mod12-2.png

注釈

Threat Campaignsシグネチャを利用するには、別途サブスクリプションライセンスが必要となります。

シグネチャ、TCシグネチャのアップデート

  1. シグネチャが更新された場合に、ステージングモードで運用するか、即座にLearn/Alarm/Blockの設定を適用するかの指定が可能です。また、既存シグネチャの更新後の振る舞いについての指定も可能です。Security >> Application Security : Policy Building : Learning and Blocking SettingsAttack Signatures にて表示された画面で、必要に応じて希望する動作への設定変更を実施します。(変更する場合、Save, ApplyPolicyで反映させます。)

    _images/mod13-1.png

    注釈

    Enforce updated rule immediately for non-staged signatures:

    Enforcement 状態(Non-Staging)の既存シグネチャがアップデート された場合、更新されたシグネチャも Non-Staging とします。

    Retain previous rule enforcement and place updated rule in staging:

    Enforcement 状態(Non-Staging)の既存シグネチャがアップデート された場合、更新前のシグネチャは Non-Staging のままとし、更新 されたシグネチャを Staging とします。更新されたシグネチャの Staging 期間が終了した際に、更新前の シグネチャが削除され、更新されたシグネチャが Non-Staging となります。(Manualモードでの運用の場合は、手動でStaging->Non-Stagingの設定が必要です。)

  2. System >> Software Management : Live Update で表示された画面で、Check for Updates をクリックして、シグネチャ更新の有無を確認します。

    _images/mod13-2.png

  3. チェック中のイメージです。(チェックには数分かかります。)

    _images/mod13-3.png

  4. 更新可能なシグネチャがある場合、以下のように表示されます。☓を推し、画面を閉じます。(既にシグネチャを裏でダウンロード済みの場合は、No updates found と表示されます。ダウンロード済みのシグネチャは黄色い矢印アイコンが表示され、Pending Statusとなっています。)

    _images/mod13-4.png

  5. 全てをインストールしたい場合は、InstallAllUpdatesをクリックします。

    _images/mod13-5.png

  6. シグネチャ更新中は、以下のように表示されます。(更新には数分かかります。)

    _images/mod13-6.png

  7. Install が完了すると以下のようになります。☓を推し、画面を閉じます。

    _images/mod13-7.png

  8. 以下が更新後のイメージとなります。CurrentlyInstaslledステータスのシグネチャをクリックします。

    _images/mod13-8.png

  9. UpdateされたSignatureの情報が表示されます。各Entityをクリックすると、該当するシグネチャ一覧が確認できます。

    _images/mod13-9.png

  10. Update がない場合は Install Updates をクリックしても以下のように表示されます。

    _images/mod13-10.png

  11. 追加されたシグネチャがステージングになっているかどうかの確認方法を示します。Security >> Application Security : Security Policies : Policies List >> DVWA_policy で表示された画面で、StatusStaging でフィルタリングします。

    _images/mod13-11.png

  12. 追加されたシグネチャがステージングとなっていることが分かります。

    _images/mod13-12.png

注釈

F5ハンズオンでは手順の関係上、動作確認の後にシグネチャをアップデートしておりますが、本来は運用テスト前に行って下さい。 新しいシグネチャをアップデートすることで新たな攻撃に対応することができます。シグネチャの更新についての詳細は、以下の記事を参考にして下さい。

CVE番号によるシグネチャの検索

各シグネチャがどのCVEに対応しているか確認することが可能です。

  1. Security >> Options : Application Security : Attack Signatures : Attack Signature List で表示された画面の フィルタマーク をクリックすると、以下のような画面が表示されます。 ADVANCED タブを選択し、References から CVE を選択し、CVE番号を入力して Apply ボタンを押すと、該当するシグネチャが表示されます。

    _images/mod14-1.png _images/mod14-2.png

    上記の CVE 番号(CVE-2017-5638)は、Apache Struts2の脆弱性に対応したシグネチャ一覧であることを表示しています。Adv.WAF では、1つのCVE番号に関連したシグネチャが複数存在していることがあります。

Geolocationの設定

Geolocation Enforcement の設定を行うことで、接続される予定のない国からの接続をブロックすることが可能です。(F5ハンズオンでは設定画面の確認のみとなります。)

  1. Security >> Application Security : Policy Building : Learning and Blocking SettingsIP Addresses/Geolocations において、Access from disallowed Geolocation の Learn/Alarm/Block がチェックされていることを確認します。

    _images/mod15-1.png

  2. Security >> Application Security : Security Policies: : Policies List にて、対象のポリシーを選択します。

    _images/mod15-2.png

  3. General SettingGeolocation Enforcement ** にて、接続する予定のない国を **Disallow Access に移動し、Save を押します。

    _images/mod15-3.png

  4. Apply Policy を押します。

    _images/mod15-4.png

IP Intelligence(IPI)の設定

IP Intelligence を設定することで、既知の悪意あるIPアドレスからの攻撃をBlockすることが可能です。Appliction Security処理の前段で IPアドレスの評価が行われるため、CPU 負荷高騰を和らげる効果があります。WAF と L7DDoS において IP Intelligence を利用することが可能です。(F5ハンズオンでは設定画面のみの確認となります。)

  1. Security >> Application Security : Security Policies: : Policies List にて、対象のポリシーを選択します。

    _images/mod16-1.png

  2. IP IntelligencOn にします。

    _images/mod16-2.png

  3. チェックしたいカテゴリのAlarmまたはBlockにチェックを入れます。その後、 Save を押します。

    _images/mod16-3.png

  4. Apply Policy を押します。

    _images/mod16-4.png

注釈

上記の他、L7DoS Shun と IP Intelligence を組合せることによって、IP Intelligence の IPレピュテーションDB のリストをL7DoS 対策のShun list(Auto-blacklisting)として利用が可能です。

IP Intelligenceを利用するには、別途サブスクリプションライセンスが必要となります。

Blockingモード画面のメッセージカスタマイズ

攻撃をブロックした際にユーザに返されるレスポンスページの内容を変更することが可能です。(必須ではありません。)

  1. Security >> Application Security : Security Policies : Policies List >> ポリシー名 において、 Response and Blocking Pages を選択すると以下が表示されます。

    _images/mod17-1.png

  2. Response Body タブにて、Custom Response を選択します。

    _images/mod17-2.png

  3. Response Body において、表示させたいメッセージに変更します。

    _images/mod17-3.png

  4. 右上の枠のようなボタンを押します。

    _images/mod17-4.png

  5. ブロックページのレビューが表示されます。

    _images/mod17-5.png

  6. メッセージが表示させたい内容と一致していれば、save を押します。

    _images/mod17-6.png

  7. Apply Policy を押します。

    _images/mod17-7.png

  8. Windows Clientにて、再度SQLインジェクション攻撃を行います。ブロックメッセージが変更されていることを確認します。

    _images/mod17-8.png

AWAF設定中級編

Comming soon!