Palo Alto Networks VM SeriesとBIG-IP ASMによるセキュアーなWebアプリケーションの公開#

要求事項#

公開Webサーバーの利用を想定し、外部からの脅威保護だけでなく、内部からの情報漏洩も防止したい

  • 外部からの脅威保護(入口対策)
    • ポート偽装による外部から内部へのアクセス
    • Webアプリケーションの脆弱性に対する攻撃
    • ウイルスが含まれたファイルやメールの受信
    • 未知のセキュリティ脆弱性を狙った攻撃
  • 内部からの情報漏洩(出口対策)
    • マルウェア感染による情報流出

対応するデザインパターン#

1. 構築の概要#

インターネットからのWebアクセスを想定し、以下製品によるHA構成でアプリケーションやデータを保護します。

  • 次世代ファイアウォール「Palo Alto Networks VM Series」(以下:Palo Alto Networksと記載)
  • Webアプリケーションファイアウォール「BIG-IP ASM」(以下:BIG-IPと記載)

本パターンでは、以下のセキュリティ対策をします。

  • Palo Alto Networksの侵入防御機能(IPS)による対策

    • DoS/DDoS攻撃:公開Webサーバーへの悪意ある大量アクセスを防止
    • SQLインジェクション:データベースの改ざんや情報漏洩を防止
  • BIG-IPのWebアプリケーションファイアウォール(WAF)による対策

    • クロスサイトリクエストフォージェリ(CSRF):利用者が意図しない罠サイトからの不正な操作を防止

構築作業

  • FJcloud-Oのリソース配備

    • オーケストレーション機能のテンプレートを実行
      • ネットワーク関連リソース、仮想サーバーの構築作業を自動化
      • テンプレートの活用方法は、テンプレートを使用したサンプルシステムの構築を参照
  • Palo Alto Networksの設定

    • Palo Alto NetworksのGUIを使用
  • BIG-IPの設定

    • BIG-IPのGUIを使用

2. Palo Alto Networks利用機能およびライセンスに関して#

本パターンで利用する機能は以下です。

  • 標準機能
    • L4ファイアウォール
    • L7ファイアウォール(アプリケーションの識別)
  • 脅威防御(TP)
    • アンチウイルス
    • アンチスパイウェア
    • 侵入防御機能(IPS)
  • Wildfire機能(WF)

ライセンスは以下です。

  • Bundle2

ライセンスで利用可能な機能については、FJcloud-O 機能説明書 仮想アプライアンス提供サービスのPalo Alto Networks提供サービスを参照してください。

3. BIG-IP利用機能およびライセンスに関して#

本パターンで利用する機能は以下です。

  • Application Security Manager(ASM): Webアプリケーションファイアウォール機能

ライセンスは以下です。

  • BIG-IP ASM 1G

ASMライセンスでは、LTMの一部機能も利用可能です。
ライセンスで利用可能な機能については、FJcloud-O 機能説明書 仮想アプライアンス提供サービスのBIG-IP提供サービスを参照してください。

構造(イメージ図)#

構成図#

本ガイド記載のテンプレートで構築した設定値を、括弧内に示しています。

image

  • インターネット環境に見立てた内部ネットワークA1上のテストクライアントから、Web/DBサーバーに接続します。
  • 不正アクセスが遮断されることを検証するため、WebとDBで1台のサーバー構成としています。実際の構築では、適切な構成をご検討ください。

ネットワーク論理構成図#

Palo Alto Networks#

image

  • 内部ネットワークA2とA3に配備されたサーバーからインターネットへの通信は、送信元を代表IPアドレス:192.168.10.100に変換(SNAT)
  • DstNat用IPアドレス:192.168.10.210宛のHTTP/HTTPS通信を受け取ると、バーチャルサーバーIPアドレス:192.168.30.201に変換(DNAT)
  • DstNat用IPアドレス:192.168.10.210宛でHTTP/HTTPS以外の通信を受け取ると、BIG-IP 代表IPアドレス:192.168.30.99に変換(DNAT)

BIG-IP#

image

  • BIG-IPがバーチャルサーバーIPアドレス:192.168.30.201宛のHTTP/HTTPS通信を受け取ると、負荷分散対象のWeb/DBサーバー:192.168.20.200に転送

実装サンプル#

1. ネットワーク関連リソースを作成#

以下のテンプレートファイルをダウンロードし、API実行環境に展開してください。

環境構築テンプレートファイル

Note

本ガイドで使用する各テンプレートファイルは、設定ファイル(yaml形式)とパラメーターファイル(json形式)で構成され、相互に依存関係が存在します。
IaaSポータル「テンプレート」⇒「スタック一覧」画面から、スタックを作成できません。
以下の記載例に従い、API実行環境を配備してください。

  • FUJITSU Hybrid IT Service FJcloud-O 初期構築ガイド API実行編
  • (1) 仮想ネットワーク・仮想ルーターを作成#

    APIを使用して仮想ネットワーク(サブネット含む)・仮想ルーターを作成します。

    • 内部ネットワークA1~A4
    • 仮想ルーターA1・A4

    事前準備をしてください。

    • IaaSポータルの「ネットワーク」⇒「仮想ネットワーク」⇒「fip-net」と選択した画面で、仮想ネットワークIDを控えます。
    • 展開したPARAMETER_Palo-BIGIP_CDP_NETWORK.jsonファイル”fip_net”の値を、上記で控えた値に書き換えます。

    • 設定項目(REST API)
    リクエスト
    パラメーター名
    変数例 設定値例 内容
    - $TEMPLATE_FILE "TEMPLATE_Palo-BIGIP_CDP_NETWORK.yaml" ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_NETWORK.yamlのパスを指定
    - $PARAMETER_FILE "PARAMETER_Palo-BIGIP_CDP_NETWORK.json" ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_NETWORK.jsonのパスを指定
    "stack_name" $STACK_NAME "Palo-BIGIP_CDP_network" 作成するスタック名を指定
    "template" $TEMPLATE $(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g') 変数$TEMPLATE_FILEには、ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_NETWORK.yamlのパスを指定
    "parameters" $PARAMETER $(cat ${PARAMETER_FILE}) 変数PARAMETER_FILEには、ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_NETWORK.jsonのパスを指定
    • 実行API例
      STACK_NAME=Palo-BIGIP_CDP_network
      TEMPLATE_FILE=TEMPLATE_Palo-BIGIP_CDP_NETWORK.yaml
      PARAMETER_FILE=PARAMETER_Palo-BIGIP_CDP_NETWORK.json
      TEMPLATE=$(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g')
      PARAMETER=$(cat ${PARAMETER_FILE})
      
      curl -k $ORCHESTRATION/v1/${TENANT_ID}/stacks -X POST \
      -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
      -d @- <<EOL
      {
        "stack_name": "${STACK_NAME}",
        "template": "${TEMPLATE}",
        "parameters": ${PARAMETER}
      }
      EOL
      

    (2) ルーターA4用ファイアウォール作成#

    APIを使用してルーターA4に付与するファイアウォールを作成します。
    ファイアウォールには、以下のファイアウォールルールが設定されます。

    No. ファイアウォールルール名 action IPプロトコル 接続元IPアドレス 接続元使用ポート 接続先IPアドレス 接続先使用ポート
    1 firewall_ingress_rule_allow_vpncider allow tcp 192.168.246.0/24
    (SSL-VPNクライアントIPプール)
    any 192.168.50.0/24 any
    2 firewall_ingress_rule_allow_vpnendpoint allow tcp 0.0.0.0/0 any 192.168.90.5
    (※1)
    443
    3 firewall_ingress_rule_allow_localnet allow tcp 192.168.50.0/24 any 192.168.50.0/24 any
    4 firewall_egress_rule_allow_all allow any 192.168.50.0/24 any any any
    5 firewall_rule_all_deny deny any any any any any

    ※1:
    192.168.90.5/32はSSL-VPN ConnectionリソースのIPアドレスとして利用されます。
    詳細はこちらを参照してください。

    事前準備をしてください。

    • IaaSポータルの「ネットワーク」⇒「仮想ルーター」⇒「management-net-router」と選択した画面で、仮想ルーターIDを控えます。
    • 展開したPARAMETER_Palo-BIGIP_CDP_FW_MANAGEMENT.jsonファイル”router_id”の値を、上記で控えた値に書き換えます。

    • 設定項目(REST API)
    リクエスト
    パラメーター名
    変数例 設定値例 内容
    - $TEMPLATE_FILE "TEMPLATE_Palo-BIGIP_CDP_FW_MANAGEMENT.yaml" ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_FW_MANAGEMENT.yamlのパスを指定
    - $PARAMETER_FILE "PARAMETER_Palo-BIGIP_CDP_FW_MANAGEMENT.json" ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_FW_MANAGEMENT.jsonのパスを指定
    "stack_name" $STACK_NAME "Palo-BIGIP_CDP_management-fw" 作成するスタック名を指定
    "template" $TEMPLATE $(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g') 変数$TEMPLATE_FILEには、ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_FW_MANAGEMENT.yamlのパスを指定
    "parameters" $PARAMETER  $(cat ${PARAMETER_FILE}) 変数PARAMETER_FILEには、ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_FW_MANAGEMENT.jsonのパスを指定
    • 実行API例
      STACK_NAME=Palo-BIGIP_CDP_management-fw
      TEMPLATE_FILE=TEMPLATE_Palo-BIGIP_CDP_FW_MANAGEMENT.yaml
      PARAMETER_FILE=PARAMETER_Palo-BIGIP_CDP_FW_MANAGEMENT.json
      TEMPLATE=$(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g')
      PARAMETER=$(cat ${PARAMETER_FILE})
      
      curl -k $ORCHESTRATION/v1/${TENANT_ID}/stacks -X POST \
      -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
      -d @- <<EOL
      {
        "stack_name": "${STACK_NAME}",
        "template": "${TEMPLATE}",
        "parameters": ${PARAMETER}
      }
      EOL
      

    (3) セキュリティグループを作成#

    APIを使用して9つのセキュリティグループを作成します。
    各セキュリティグループにはすべての通信を許可するセキュリティグループルールが作成され、後ほど仮想サーバーに対して設定されます。

    • セキュリティグループ

      • internal-security-group
      • external-security-group
      • boundary-security-group
      • palo_ha1-security-group
      • palo_ha1backup-security-group
      • palo_ha2-security-group
      • palo_ha2backup-security-group
      • management-security-group
      • bigip_ha-security-group
    • セキュリティグループルール

    No. ルール 方向 オープンポート ポート番号 接続先 CIDR
    1 ALL TCP 送信 ポート番号 1 - 65535
    2 ALL UDP 送信 ポート番号 1 - 65535
    3 ALL ICMP 送信 ポート番号
    4 ALL TCP 受信 ポート番号 1 - 65535
    5 ALL UDP 受信 ポート番号 1 - 65535
    6 ALL ICMP 受信 ポート番号

    • 設定項目(REST API)
    リクエスト
    パラメーター名
    変数例 設定値例 内容
    - $TEMPLATE_FILE "TEMPLATE_Palo-BIGIP_CDP_SECURITY_GROUP.yaml" ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_SECURITY_GROUP.yamlのパスを指定
    "stack_name" $STACK_NAME "Palo-BIGIP_CDP_security-group" 作成するスタック名を指定
    "template" $TEMPLATE $(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g') 変数$TEMPLATE_FILEには、ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_SECURITY_GROUP.yamlのパスを指定
    • 実行API例
      STACK_NAME=Palo-BIGIP_CDP_security-group
      TEMPLATE_FILE=TEMPLATE_Palo-BIGIP_CDP_SECURITY_GROUP.yaml
      TEMPLATE=$(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g')
      
      curl -k $ORCHESTRATION/v1/${TENANT_ID}/stacks -X POST \
      -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
      -d @- <<EOL
      {
        "stack_name": "${STACK_NAME}",
        "template": "${TEMPLATE}"
      }
      EOL
      

    2. Palo Alto Networks インスタンスを作成#

    (1) Palo Alto Networks用 共有ポートを作成#

    APIを使用して、BIG-IP・Palo Alto NetworksのFJcloud-O共有ポートを作成します。
    仮想サーバーなどを作成した際に、FJcloud-OのDHCP機能でIPアドレスが重複して払い出されることを避けるために行います。

    • Palo Alto Networks用共有ポート
      • 代表IPアドレス:192.168.10.100
      • 代表IPアドレス:192.168.10.210
      • 代表IPアドレス:192.168.30.100
    • BIG-IP用共有ポート
      • 代表IPアドレス:192.168.30.99
      • 代表IPアドレス:192.168.30.201
      • 代表IPアドレス:192.168.20.99

    • 設定項目(REST API)
    リクエスト
    パラメーター名
    変数例 設定値例 内容
    - $TEMPLATE_FILE "TEMPLATE_Palo-BIGIP_CDP_VIRTUAL_PORT.yaml" ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_VIRTUAL_PORT.yamlのパスを指定
    "stack_name" $STACK_NAME "Palo-BIGIP_CDP_virtual-port" 作成するスタック名を指定
    "template" $TEMPLATE $(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g') 変数$TEMPLATE_FILEには、ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_VIRTUAL_PORT.yamlのパスを指定
    • 実行API例
      STACK_NAME=Palo-BIGIP_CDP_virtual-port
      TEMPLATE_FILE=TEMPLATE_Palo-BIGIP_CDP_VIRTUAL_PORT.yaml
      TEMPLATE=$(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g')
      
      curl -k $ORCHESTRATION/v1/${TENANT_ID}/stacks -X POST \
      -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
      -d @- <<EOL
      {
        "stack_name": "${STACK_NAME}",
        "template": "${TEMPLATE}"
      }
      EOL
      

    (2) Palo Alto Networks(Active)を作成#

    APIを使用してPalo Alto Networks(Active)を作成します。
    以下のイメージを使用します。

    • PAN VM50 Bundle2

      • VM50:最小スループット
      • Bundle2:すべての機能を利用可能
    • 設定項目(REST API)

    リクエスト
    パラメーター名
    変数例 設定値例 内容
    - $TEMPLATE_FILE "TEMPLATE_Palo-BIGIP_CDP_Paloalto.yaml" ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_Paloalto.yamlのパスを指定
    - $PARAMETER_FILE "PARAMETER_Palo-BIGIP_CDP_Paloalto-active.json" ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_Paloalto-active.jsonのパスを指定
    "stack_name" $STACK_NAME "Palo-BIGIP_CDP_palo-active" 作成するスタック名を指定
    "template" $TEMPLATE $(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g') 変数$TEMPLATE_FILEには、ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_Paloalto.yamlのパスを指定
    "parameters" $PARAMETER  $(cat ${PARAMETER_FILE}) 変数PARAMETER_FILEには、ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_Paloalto-active.jsonのパスを指定
    • 実行API例
    STACK_NAME=Palo-BIGIP_CDP_palo-active
    TEMPLATE_FILE=TEMPLATE_Palo-BIGIP_CDP_Paloalto.yaml
    PARAMETER_FILE=PARAMETER_Palo-BIGIP_CDP_Paloalto-active.json
    TEMPLATE=$(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g')
    PARAMETER=$(cat ${PARAMETER_FILE})
    
    curl -k $ORCHESTRATION/v1/${TENANT_ID}/stacks -X POST \
    -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
    -d @- <<EOL
    {
      "stack_name": "${STACK_NAME}",
      "template": "${TEMPLATE}",
      "parameters": ${PARAMETER}
    }
    EOL
    

    (3) Palo Alto Networks(Passive)を作成#

    APIを使用してPalo Alto Networks(Passive)を作成します。
    Palo Alto Networks(Active)と同様に、PAN VM50 Bundle2イメージを使用します。

    • 設定項目(REST API)
    リクエスト
    パラメーター名
    変数例 設定値例 内容
    - $TEMPLATE_FILE "TEMPLATE_Palo-BIGIP_CDP_Paloalto.yaml" ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_Paloalto.yamlのパスを指定
    - $PARAMETER_FILE "PARAMETER_Palo-BIGIP_CDP_Paloalto-passive.json" ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_Paloalto-passive.jsonのパスを指定
    "stack_name" $STACK_NAME "Palo-BIGIP_CDP_palo-passive" 作成するスタック名を指定
    "template" $TEMPLATE $(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g') 変数$TEMPLATE_FILEには、ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_Paloalto.yamlのパスを指定
    "parameters" $PARAMETER  $(cat ${PARAMETER_FILE}) 変数PARAMETER_FILEには、ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_Paloalto-passive.jsonのパスを指定
    • 実行API例
    STACK_NAME=Palo-BIGIP_CDP_palo-passive
    TEMPLATE_FILE=TEMPLATE_Palo-BIGIP_CDP_Paloalto.yaml
    PARAMETER_FILE=PARAMETER_Palo-BIGIP_CDP_Paloalto-passive.json
    TEMPLATE=$(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g')
    PARAMETER=$(cat ${PARAMETER_FILE})
    
    curl -k $ORCHESTRATION/v1/${TENANT_ID}/stacks -X POST \
    -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
    -d @- <<EOL
    {
      "stack_name": "${STACK_NAME}",
      "template": "${TEMPLATE}",
      "parameters": ${PARAMETER}
    }
    EOL
    

    3. BIG-IP インスタンスを作成#

    Note

    本手順で配布しているパラメーターファイルでは、Active、Standby共に使用するイメージが「BIG-IP ASM 1G」に設定されています。
    他のライセンスイメージを使用する場合は、各パラメーターファイルの"image"キーを必要なイメージ名に変更し、APIを実行してください。

    ) BIG-IP ASM 200Mを使用する場合
    {
      ...
      "image": "BIG-IP ASM 200M",
      ...
    }
    

    (1) BIG-IP(Active)を作成#

    APIを使用してBIG-IP(Active)を作成します。

    • 設定項目(REST API)
    リクエスト
    パラメーター名
    変数例 設定値例 内容
    - $TEMPLATE_FILE "TEMPLATE_Palo-BIGIP_CDP_BIGIP.yaml" ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_BIGIP.yamlのパスを指定
    - $PARAMETER_FILE "PARAMETER_Palo-BIGIP_CDP_BIGIP-active.json" ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_BIGIP-active.jsonのパスを指定
    "stack_name" $STACK_NAME "Palo-BIGIP_CDP_BIGIP-active" 作成するスタック名を指定
    "template" $TEMPLATE $(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g') 変数$TEMPLATE_FILEには、ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_BIGIP.yamlのパスを指定
    "parameters" $PARAMETER  $(cat ${PARAMETER_FILE}) 変数PARAMETER_FILEには、ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_BIGIP-active.jsonのパスを指定
    • 実行API例
    STACK_NAME=Palo-BIGIP_CDP_BIGIP-active
    TEMPLATE_FILE=TEMPLATE_Palo-BIGIP_CDP_BIGIP.yaml
    PARAMETER_FILE=PARAMETER_Palo-BIGIP_CDP_BIGIP-active.json
    TEMPLATE=$(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g')
    PARAMETER=$(cat ${PARAMETER_FILE})
    
    curl -k $ORCHESTRATION/v1/${TENANT_ID}/stacks -X POST \
    -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
    -d @- <<EOL
    {
      "stack_name": "${STACK_NAME}",
      "template": "${TEMPLATE}",
      "parameters": ${PARAMETER}
    }
    EOL
    

    (2) BIG-IP(standby)を作成#

    APIを使用してBIG-IP(standby)を作成します。

    • 設定項目(REST API)
    リクエスト
    パラメーター名
    変数例 設定値例 内容
    - $TEMPLATE_FILE "TEMPLATE_Palo-BIGIP_CDP_BIGIP.yaml" ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_BIGIP.yamlのパスを指定
    - $PARAMETER_FILE "PARAMETER_Palo-BIGIP_CDP_BIGIP-standby.json" ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_BIGIP-standby.jsonのパスを指定
    "stack_name" $STACK_NAME "Palo-BIGIP_CDP_BIGIP-standby" 作成するスタック名を指定
    "template" $TEMPLATE $(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g') 変数$TEMPLATE_FILEには、ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_BIGIP.yamlのパスを指定
    "parameters" $PARAMETER  $(cat ${PARAMETER_FILE}) 変数PARAMETER_FILEには、ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_BIGIP-standby.jsonのパスを指定
    • 実行API例
    STACK_NAME=Palo-BIGIP_CDP_BIGIP-standby
    TEMPLATE_FILE=TEMPLATE_Palo-BIGIP_CDP_BIGIP.yaml
    PARAMETER_FILE=PARAMETER_Palo-BIGIP_CDP_BIGIP-standby.json
    TEMPLATE=$(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g')
    PARAMETER=$(cat ${PARAMETER_FILE})
    
    curl -k $ORCHESTRATION/v1/${TENANT_ID}/stacks -X POST \
    -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
    -d @- <<EOL
    {
      "stack_name": "${STACK_NAME}",
      "template": "${TEMPLATE}",
      "parameters": ${PARAMETER}
    }
    EOL
    

    4. Web/DBサーバーを作成#

    (1) キーペアを作成#

    サーバーにログインするためのキーペアを作成します。

    • IaaSポータルで「コンピュート」⇒「キーペア」と選択した画面で、右上の「+」ボタンをクリックしキーペアを作成します。
    • キーペア名「Palo-BIGIP_Keypair」を入力し「次へ」をクリックし、任意の場所にダウンロードします。

    (2) Web/DBサーバーを作成#

    APIを使用してWeb/DBサーバーを作成します。
    以下の設定が自動で行われます。

    • デフォルトゲートウェイを192.168.50.1に設定
    • rootパスワードの変更
      • PARAMETER_Palo-BIGIP_CDP_WEBSERVER.json内の"rootpassword"を修正
    • /etc/ssh/sshd_configの編集
      • rootユーザのSSHログイン許可
      • パスワード認証の許可
    • yum update
    • httpdインストール

    • 設定項目(REST API)
    リクエスト
    パラメーター名
    変数例 設定値例 内容
    - $TEMPLATE_FILE "TEMPLATE_Palo-BIGIP_CDP_WEBSERVER.yaml" ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_WEBSERVER.yamlのパスを指定
    - $PARAMETER_FILE "PARAMETER_Palo-BIGIP_CDP_WEBSERVER.json" ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_WEBSERVER.jsonのパスを指定
    "stack_name" $STACK_NAME "Palo-BIGIP_CDP_webdbserver" 作成するスタック名を指定
    "template" $TEMPLATE $(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g') 変数$TEMPLATE_FILEには、ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_WEBSERVER.yamlのパスを指定
    "parameters" $PARAMETER  $(cat ${PARAMETER_FILE}) 変数PARAMETER_FILEには、ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_WEBSERVER.jsonのパスを指定
    • 実行API例
    STACK_NAME=Palo-BIGIP_CDP_webdbserver
    TEMPLATE_FILE=TEMPLATE_Palo-BIGIP_CDP_WEBSERVER.yaml
    PARAMETER_FILE=PARAMETER_Palo-BIGIP_CDP_WEBSERVER.json
    TEMPLATE=$(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g')
    PARAMETER=$(cat ${PARAMETER_FILE})
    
    curl -k $ORCHESTRATION/v1/${TENANT_ID}/stacks -X POST \
    -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
    -d @- <<EOL
    {
      "stack_name": "${STACK_NAME}",
      "template": "${TEMPLATE}",
      "parameters": ${PARAMETER}
    }
    EOL
    

    5. テストクライアントを作成#

    APIを使用してテストクライアントを作成します。
    以下の設定が自動で行われます。

    • rootパスワードの変更
      • PARAMETER_Palo-BIGIP_CDP_testclient.json内の"rootpassword"を修正
    • /etc/ssh/sshd_configの編集
      • rootユーザのSSHログイン許可
      • パスワード認証の許可
    • yum update

    • 設定項目(REST API)
    リクエスト
    パラメーター名
    変数例 設定値例 内容
    - $TEMPLATE_FILE "TEMPLATE_Palo-BIGIP_CDP_testclient.yaml" ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_testclient.yamlのパスを指定
    - $PARAMETER_FILE PARAMETER_Palo-BIGIP_CDP_testclient.json" ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_testclient.jsonのパスを指定
    "stack_name" $STACK_NAME "Palo-BIGIP_CDP_testclient" 作成するスタック名を指定
    "template" $TEMPLATE $(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g') 変数$TEMPLATE_FILEには、ダウンロードしたテンプレートファイルTEMPLATE_Palo-BIGIP_CDP_testclient.yamlのパスを指定
    "parameters" $PARAMETER  $(cat ${PARAMETER_FILE}) 変数PARAMETER_FILEには、ダウンロードしたパラメーターファイルPARAMETER_Palo-BIGIP_CDP_testclient.jsonのパスを指定
    • 実行API例
    STACK_NAME=Palo-BIGIP_CDP_testclient
    TEMPLATE_FILE=TEMPLATE_Palo-BIGIP_CDP_testclient.yaml
    PARAMETER_FILE=PARAMETER_Palo-BIGIP_CDP_testclient.json
    TEMPLATE=$(cat ${TEMPLATE_FILE} | sed -z -e 's/\n/\\n/g')
    PARAMETER=$(cat ${PARAMETER_FILE})
    
    curl -k $ORCHESTRATION/v1/${TENANT_ID}/stacks -X POST \
    -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
    -d @- <<EOL
    {
      "stack_name": "${STACK_NAME}",
      "template": "${TEMPLATE}",
      "parameters": ${PARAMETER}
    }
    EOL
    

    6. 管理用SSL-VPNを作成#

    構築したサーバーへセキュアーに接続するため、管理用のSSL-VPNを作成します。

    (1) VPNサービス作成#

    • ルーターA4にVPNサービスを設定
    パラメーター
    仮想ルーター名 management-net-router
    サブネット名 management-subnet
    VPNサービス名 Palo-BIGIP_CDP_VPNservice
    管理状態 true

    (2) SSL-VPNコネクションを作成#

    パラメーター
    SSL-VPN接続名 Palo-BIGIP_CDP_SSLVPN
    管理状態 true
    証明書 FJCloud証明書(デフォルト)
    クライアントIPプール 192.168.246.0/24

    7. Palo Alto Networks 設定#

    以下を設定します。

    • 共通設定
      • ライセンス認証
      • 初期設定・HA構成の設定
      • 脅威に関する設定
      • ネットワークインターフェイス・仮想ルーターの設定
    • その他設定
      • IPアドレス・サービスの設定
      • セキュリティプロファイルの設定
      • ポリシーの設定

    (1)共通設定#

    「Palo Alto Networksの共通設定」を参照してください。

    (2)その他設定#

    必要に応じてPAN-OS® 管理者ガイド(PDF形式)スタートガイド以降を参照してください。

    (A) IPアドレス・サービスの設定#

    ■ [Objects] > [アドレス]

    この後で使用するIPアドレスを設定します。

    名前 タイプ アドレス
    application-net IP ネットマスク 192.168.20.0/24
    bigip IP ネットマスク 192.168.30.99/32
    boundary-net IP ネットマスク 192.168.30.0/24
    DVWA-private IP ネットマスク 192.168.30.201/32
    DVWA-public IP ネットマスク 192.168.10.210/32
    testclient IP ネットマスク 192.168.10.160/32

    image


    ■ [Objects] > [アドレスグループ]

    SNATで使用するアドレスグループを設定します。

    名前 アドレス
    SNAT-group application-net
    boundary-net

    image


    ■ [Objects] > [サービス]

    この後で使用するサービスを設定します。

    名前 プロトコル 宛先ポート
    HTTP TCP 80
    HTTP_HTTPS TCP 80,443
    HTTPS TCP 443

    image

    (B) セキュリティプロファイルの設定#

    ■ [Objects] > [セキュリティプロファイル] > [アンチウイルス]

    アンチウイルス機能のセキュリティプロファイルを作成します。
    業務利用の多い各デコーダーに対し、Palo Alto Networksで事前定義されているアクションを設定します。

    名前
    Antivirus-Profile01
    デコーダー アクション Wildfire アクション
    ftp default(reset-both) default(reset-both)
    http default(reset-both) default(reset-both)
    http2 default(reset-both) default(reset-both)
    imap default(alert) default(alert)
    pop3 default(alert) default(alert)
    smb default(reset-both) default(reset-both)
    smtp default(alert) default(alert)

    image


    ■ [Objects] > [セキュリティプロファイル] > [アンチスパイウェア]

    アンチスパイウェア機能のセキュリティプロファイルを作成します。
    重大度に応じた二つのルールを設定します。

    名前
    AS-Profile01
    ルール名 重大度 アクション パケットキャプチャ
    AS-Rule01
     
    critical
    high
    default
     
    extended-capture
     
    AS-Rule02

     
    medium
    low
    informational
    default

     
    disable

     

    image


    ■ [Objects] > [セキュリティプロファイル] > [脆弱性防御]

    脆弱性防御(IPS)のセキュリティプロファイルを作成します。
    重大度に応じた五つのルールを設定します。

    名前
    IPS-Profile01
    ルール名 脅威名 CVE ホストタイプ 重大度 アクション パケットキャプチャ
    critical any any any critical drop extended-capture
    high any any any high drop extended-capture
    medium any any any medium drop disable
    informational any any any informational drop disable
    low any any any low drop disable

    image


    ■ [Objects] > [セキュリティプロファイル] > [WildFire 分析]

    WildFire 分析のセキュリティプロファイルを作成します。
    対象をすべてのファイルに設定します。

    名前
    WF-Profile01
    名前 アプリケーション ファイルタイプ 方向 分析
    ALL-files any any both public-cloud

    image


    ■ [Objects] > [セキュリティプロファイル] > [DoSプロテクション]

    フラッド型のDoS/DDoS攻撃に対するセキュリティプロファイルを作成します。
    プロファイル作成時、各しきい値は、想定するHTTPリクエスト数やシステム負荷状況などを考慮し設定してください。

    • アラームレート
    • アクティベーションレート
    • 最大レート
    • ブロック期間
    名前 場所 タイプ フラット防御
    SYNフラッド
    フラット防御
    UDPフラッド
    フラット防御
    ICMPフラッド
    フラット防御
    ICMPv6フラッド
    フラット防御
    その他のIPフラッド
    リソース保護
    セッション
    DOS_Profile01 classified チェックあり チェックあり チェックあり チェックあり チェックあり チェックあり

    image

    (C) ポリシーの設定#

    ■ [Policies] > [セキュリティ]

    セキュリティポリシーを設定します。
    untrustゾーンからtrustゾーンへの通信は、以下のみを許可します。

    • テストクライアントサーバーからのicmp/ping通信
    • HTTP/HTTPS通信

    image


    ■ [Policies] > [NAT]

    SNAT・DNATポリシーを設定します。

    • trustゾーンに配備されたサーバーからインターネットへの通信は、送信元を代表IPアドレス(192.168.10.100)に変換(SNAT)
    • untrustゾーンからDVWA-public(192.168.10.210/32)宛のHTTP/HTTPS通信は、宛先をDVWA-private(192.168.30.201/32)に変換(DNAT)
    • untrustゾーンからDVWA-public(192.168.10.210/32)宛のHTTP/HTTPSを除く通信は、宛先をbigip(192.168.30.99/32)に変換(DNAT)

    image


    ■ [Policies] > [DoSプロテクション]

    untrustゾーンからDVWA-public(192.168.10.210/32)宛の通信に対し、DoSプロテクションポリシーを設定します。

    image

    8. BIG-IP 設定#

    構築した両系のBIG-IPに対し、以下を設定します。

    • ライセンス認証
    • BIG-IP各種設定
      • ASMライセンスの有効化
      • ネットワーク・HA構成の設定
      • Load Trafficの設定
      • WAFの設定

    (1) ライセンス認証#

    FUJITSU Hybrid IT Service FJcloud-O IaaS BIG-IP スタートガイド第 5 章 BIG-IP ライセンス登録を参照してください。

    (2) BIG-IP各種設定#

    Web アプリケーションファイアウォール簡単セットアップガイド(v14.1対応)(PDF形式)を参照してください。

    本構成におけるGUIでの設定例とキャプチャを抜粋して記載します。

    構築したSSL-VPNに接続した状態で、クライアントPCのWebブラウザーより以下のIPアドレスにアクセスしてください。
    これ以降の手順では、断りがない限り両系のBIG-IPに対して設定します。

    VM IPアドレス
    BIG-IP(Active) 192.168.50.21
    BIG-IP(Standby) 192.168.50.22

    初回ログイン時のIDおよびパスワードは以下です。

    • Username: admin
    • Password: admin
    (A) ASMライセンスの有効化#

    ■ [Setup Utility] > [Resource Provisioning]

    初回ログインの場合、Setup Utilityが立ち上がります。
    Application Security(ASM)モジュールを有効にします。

    Module Provisioning
    Application Security(ASM) Nominal

    image

    (B) ネットワーク・HA構成の設定#

    ■ [Setup Utility] > [Platform]

    ホスト名・タイムゾーン・マネジメントポートを設定します。

    ・General Properties(対象:BIGIP1)

    項目1 項目2 設定値例
    Management Config IPV4 Manual
    IPV4 Config Details IP Address[/prefix]:
    Network Mask:
    Management Route:
    192.168.50.21
    255.255.255.0 /24
    192.168.50.1
    Management Config IPV6 Automatic(DHCP)
    HostName BIGIP1.local
    Host IP Address Use Management Port IP Address
    Time Zone Asia/Tokyo

    ・General Properties(対象:BIGIP2)

    項目1 項目2 設定値例
    Management Config IPV4 Manual
    IPV4 Config Details IP Address[/prefix]:
    Network Mask:
    Management Route:
    192.168.50.22
    255.255.255.0 /24
    192.168.50.1
    Management Config IPV6 Automatic(DHCP)
    HostName BIGIP2.local
    Host IP Address Use Management Port IP Address
    Time Zone Asia/Tokyo

    adminのパスワード・SSHによるアクセス方法を設定します。

    ・User Administration(対象:両系)

    項目1        項目2 設定値例
    Root Account Password: (任意のパスワードを設定)
    SSH Access Enabled
    SSH IP Allow * All Addresses

    image


    ■ [Setup Utility] > [Network] > [VLANs]

    VLAN interface1.2にIPアドレスを割り当てます。
    両系で共有するため、同じFloating IPを設定します。

    ・Internal Network Configuration(対象:BIGIP1)

    項目1 項目2 設定値例
    Self IP Address 192.168.20.11
    Netmask 255.255.255.0
    Port Lockdown Allow Default
    Floating IP Address 192.168.20.99
    Port Lockdown Allow Default

    ・Internal VLAN Configuration(対象:BIGIP1)

    項目1 項目2 設定値例
    VLAN Name internal
    VLAN Tag ID auto
    Interface VLAN interfaces 1.2
    Tagging Untagged

    ・Internal Network Configuration(対象:BIGIP2)

    項目1 項目2 設定値例
    Self IP Address 192.168.20.12
    Netmask 255.255.255.0
    Port Lockdown Allow Default
    Floating IP Address 192.168.20.99
    Port Lockdown Allow Default

    ・Internal VLAN Configuration(対象:BIGIP2)

    項目1 項目2 設定値例
    VLAN Name internal
    VLAN Tag ID auto
    Interface VLAN interfaces 1.2
    Tagging Untagged

    image.


    ■ [Setup Utility] > [Network] > [VLANs]

    VLAN interface1.1にIPアドレスを割り当てます。
    両系で共有するため、同じFloating IPを設定します。

    ・External Network Configuration(対象:BIGIP1)

    項目1 項目2 設定値例
    Self IP Address 192.168.30.21
    Netmask 255.255.255.0
    Port Lockdown Allow Default
    Floating IP Address 192.168.30.99
    Port Lockdown Allow Default

    ・External VLAN Configuration(対象:BIGIP1)

    項目1 項目2 設定値例
    VLAN Name external
    VLAN Tag ID auto
    Interface VLAN interfaces 1.1
    Tagging Untagged

    ・External Network Configuration(対象:BIGIP2)

    項目1 項目2 設定値例
    Self IP Address 192.168.30.22
    Netmask 255.255.255.0
    Port Lockdown Allow Default
    Floating IP Address 192.168.30.99
    Port Lockdown Allow Default

    ・External VLAN Configuration(対象:BIGIP2)

    項目1 項目2 設定値例
    VLAN Name external
    VLAN Tag ID auto
    Interface VLAN interfaces 1.1
    Tagging Untagged

    image


    ■ [Setup Utility] > [Network] > [VLANs]

    VLAN interface1.3に、HAとして使用するIPアドレスを割り当てます。

    ・High Availability Network Configuration(対象:BIGIP1)

    項目1 項目2 設定値例
    High Avilability VLAN Create VLAN HA
    Self IP Address 192.168.90.11
    Netmask 255.255.255.0

    ・High Availability VLAN Configuration(対象:BIGIP1)

    項目1 項目2 設定値例
    VLAN Name HA
    VLAN Tag ID auto
    Interface VLAN interfaces 1.3
    Tagging Untagged

    ・High Availability Network Configuration(対象:BIGIP2)

    項目1 項目2 設定値例
    High Avilability VLAN Create VLAN HA
    Self IP Address 192.168.90.12
    Netmask 255.255.255.0

    ・High Availability VLAN Configuration(対象:BIGIP2)

    項目1 項目2 設定値例
    VLAN Name HA
    VLAN Tag ID auto
    Interface VLAN interfaces 1.3
    Tagging Untagged

    image


    ■ [Setup Utility] > [NTP]

    共通ネットワークサービスの東日本リージョン3向けNTPサーバーを設定します。
    西日本リージョン3でのNTPサーバーは、機能説明書を参照してください。

    ・Network Time Protocol Configuration

    項目1 設定値例
    Time Server List 133.162.97.19
    133.162.97.20
    133.162.106.19
    133.162.106.20

    image


    ■ [Setup Utility] > [DNS]

    DNSサーバーを設定します。

    ・Domain Name Server Configuration

    項目1 設定値例
    DNS Lookup Server List 8.8.4.4
    8.8.8.8

    image


    ■ [Setup Utility] > [ConfigSync]

    設定値を他系と同期します。

    ・ConfigSync Configuration(対象:BIGIP1)

    項目1 設定値例
    Local Address 192.168.90.11(HA)

    ・ConfigSync Configuration(対象:BIGIP2)

    項目1 設定値例
    Local Address 192.168.90.12(HA)

    image


    ■ [Setup Utility] > [Mirroring]

    コネクション情報を同期します。

    ・Mirroring Configuration(対象:BIGIP1)

    項目1 設定値例
    Primary Local Mirror Address 192.168.90.11(HA)
    Secondary Local Mirror Address None

    ・Mirroring Configuration(対象:BIGIP2)

    項目1 設定値例
    Primary Local Mirror Address 192.168.90.12(HA)
    Secondary Local Mirror Address None

    image


    ■ [Setup Utility] > [Active/Standby Pair]

    これより後はAdvanced Device Management Configurationで設定するため、[Finished]をクリックします。

    image


    ■ [Device Management] > [Device Trust]

    HA構成を設定します。

    BIG-IP(Active)側で、BIG-IP(Standby)の情報を入力します。
    入力後、[Retrieve Device Information]をクリックします。

    ・Retrive Device Credentials(Step 1 of 3)(対象:BIGIP1)

     項目1 設定値例
    Device Type Peer
    Device IP Address 192.168.50.22
    Administrator Username admin
    Administrator Password (設定したパスワードを入力)

    image

    BIG-IP(Standby)の証明書情報を確認後、[Device Certificate Matches]をクリックします。

    image

    さらに、[Add Device]をクリックします。

    image


    ■ [Device Management] > [Devices Groups]

    BIG-IP間で設定値の同期とフェイルオーバーを可能にするため、グループ化します。

    ・General Properties

     項目1 設定値例
    Name device-group-failover
    Group Type Sync-Failover
    Description

    ・Configuration

     項目1 設定値例
    Members Includes
     /Common
     BIGIP1.local
     BIGIP2.local
    Sync Type Manual with Incremental Sync

    image


    ■ [Device Management] > [Traffic Groups]

    IPアドレスなど負荷分散に関する情報をBIG-IP間で共有するため、トラフィックグループを設定します。

    ・General Properties

     項目1 設定値例
    Name traffic-group-1
    Description
    MAC Masquerade Address

    ・Health Monitor

     項目1 設定値例
    HA Group none

    ・Failover Configuration

    項目1 設定値例
    Failover Method Failover using Preferred Device Order and then Load Aware
    Failover Order

     
    Load Aware
    BIGIP1.local
    BIGIP2.local
    HA Load Factor 1

    image


    ■ [Device Management] > [Overview]

    同期の状態が[In Sync]となることを確認します。
    これ以降、設定値はBIG-IP間で同期されます。

    image


    ■ [Network] > [Routers]

    external-net側のデフォルトゲートウェイを設定します。

    ・Properties

    項目1 設定値例
    Name external_default_gateway
    Description
    Destination 0.0.0.0
    Netmask 0.0.0.0
    Resource Use Gateway
    Gateway Address IP Address 192.168.30.100
    MTU

    image

    (C) Load Trafficの設定#

    ■ [Local Traffic] > [Nodes]

    負荷分散の対象ノードとして、Web/DBサーバーを設定します。

    ・General Properties

    項目1 設定値例
    Name Web_DB-server
    Description
    Address 192.168.20.200

    ・Configuration

    項目1 設定値例
    Health Monitors Node Default
    Ratio 1
    Connection Limit 0
    Connection Rate Limit 0

    image


    ■ [Local Traffic] > [Pools]

    負荷分散プールを設定します。
    また、作成したノード(Web_DB-server)を追加します。

    ・Configuration: Basic

    項目1 設定値例
    Name DVWA_HTTP_Pool
    Description
    Health Monitors Active
     /Common
     gateway_icmp

    ・Resources

    項目1 項目2 設定値例
    Load Balancing Method Round Robin
    Priority Group Activation Disabled
    New Members Node Name Web_DB-server
    Address/FQDN 192.168.20.200
    Service Port 80 HTTP

    image


    ■ [Local Traffic] > [Virtual Servers]

    クライアントからの通信を受ける仮想IPアドレスとして、Virtual Serverを設定します。
    HTTP用Virtual Serverとして、バーチャルサーバーIPアドレス(192.168.30.201)宛の通信を、作成したプール(DVWA_HTTP_Pool)に転送するよう設定します。

    ・General Properties

    項目1 設定値例
    Name DVWA_HTTP_VIP
    Description
    Type Standard
    Source Address Host
    0.0.0.0/0
    Destination Address/Mask Host
    192.168.30.201
    Service Port Port
    80 HTTP
    Notify Status to Virtual Address Enabled
    State Enabled

    image

    ・Configuration:Basic

    項目1 設定値例
    Protocol TCP
    Protocol Profile (Client) tcp
    Protocol Profile (Server) (Use Client Profile)
    HTTP Profile (Client) http
    HTTP Profile (Server) (Use Client Profile)
    HTTP Proxy Connect Profile None
    SSL Profile (Client) (Selected:選択なし)
    SSL Profile (Server) (Selected:選択なし)
    Service Profile None
    VLAN and Tunnel Traffic All VLANs and Tunnels
    Source Address Translation Auto Map

    image

    [Resources]をクリックし、作成したプールを適用します。

    ・Load Balancing

    項目1 設定値例
    Default Pool DVWA_HTTP_Pool
    Default Persistence Profile None
    Fallback Persistence Profile None

    image

    [Security]内の[Policies]をクリックし、違反リクエストのログを取得するよう設定します。

    ・Policy Settings

    項目1 設定値例
    Application Security Policy Disabled
    Service Policy None
    IP Intelligence Disabled
    DoS Protection Profile Disabled
    Bot Defense Profile Disabled
    Application Cloud Security Services Disabled
    Log Profile
     
    Enabled
     Selected
      /Common
      Log illegal requests

    image


    ■ [Local Traffic] > [Virtual Servers]

    HTTPS用Virtual Serverとして、バーチャルサーバーIPアドレス(192.168.30.201)宛の通信を、作成したプール(DVWA_HTTP_Pool)に転送するよう設定します。
    BIG-IPでSSLアクセラレーターを動作させるため、BIG-IPとWeb/DBサーバー間の通信は暗号化しません。
    復号化/暗号化用のSSLプロファイルは、clientsslを選択します。

    ・General Properties

    項目1 設定値例
    Name DVWA_HTTPS_VIP
    Description
    Type Standard
    Source Address Host
    0.0.0.0/0
    Destination Address/Mask Host
    192.168.30.201
    Service Port Port
    443 HTTPS
    Notify Status to Virtual Address Enabled
    State Enabled

    image

    ・Configuration:Basic

    項目1 設定値例
    Protocol TCP
    Protocol Profile (Client) tcp
    Protocol Profile (Server) (Use Client Profile)
    HTTP Profile (Client) http
    HTTP Profile (Server) (Use Client Profile)
    HTTP Proxy Connect Profile None
    SSL Profile (Client) /Common
     clientssl
    SSL Profile (Server) (Selected:選択なし)
    Service Profile None
    VLAN and Tunnel Traffic All VLANs and Tunnels
    Source Address Translation Auto Map

    image

    [Resources]をクリックし、作成したプールを適用します。

    ・Load Balancing

    項目1 設定値例
    Default Pool DVWA_HTTP_Pool

    image

    [Security]内の[Policies]をクリックし、違反リクエストのログを取得するよう設定します。

    ・Policy Settings

    項目1 設定値例
    Application Security Policy Disabled
    Service Policy None
    IP Intelligence Disabled
    DoS Protection Profile Disabled
    Bot Defense Profile Disabled
    Application Cloud Security Services Disabled
    Log Profile Enabled
     Selected
      /Common
      Log illegal requests

    image


    ■ [Local Traffic] > [Virtual Servers] > [Virtual Address List]

    バーチャルサーバーIPアドレス(192.168.30.201)に、トラフィックグループ(traffic-group-1(floating))が設定されていることを確認します。

    ・General Properties

    項目1 設定値例
    Address 192.168.30.201
    Traffic Group traffic-group-1(floating)
    State Enabled
    Auto Delete Enabled

    ・Configuration

    項目1 設定値例
    Availability Calculation When any virtual server is available
    Connection Limit 0
    ARP Enabled
    ICMP Echo Always
    Route Advertisement Disabled

    image

    (D) WAFの設定#

    ■ [Security] > [Application Security] > [Security Policies]

    HTTP用Virtual Server(DVWA_HTTP_VIP)に対し、WAFポリシーを設定します。

    ・General Settings

    項目1 設定値例
    Policy Name WAF-policy-001
    Description Rapid Deployment Policy
    Policy Type Security
    Policy Template Rapid Deployment Policy
    Virtual Server DVWA_HTTP_VIP(HTTP)

    image

    Enforce ModeBlockingに設定し、攻撃をブロックします。

    ・Learning and Blocking

    項目1 設定値例
    Enforcement Mode Blocking
    Policy Building Learning Mode Manual
    Auto-Added Signature Accuracy Medium Accuracy (also includes signatures with high accuracy)
    Signature Staging Disabled
    Enforcement Readiness Period 7 days

    image

    9. 動作確認用に、WAFのチェック条件を設定します。
    実際の環境に応じて見直してください。

    ・Advanced Settings

    項目1 設定値例
    Server Technologies

     
    Apache/NCSA HTTP Server
    MySQL
    PHP
    Policy is Case Sensitive Enabled
    Differentiate between HTTP/WS and
    HTTPS/WSS URLs
    Enabled
    Event Correlation Reporting Enabled
    Mask Credit Card Numbers in
    Request Log
    Enabled
    Maximum HTTP Header Length Any
    Maximum Cookie Header Length Any
    Allowed Response Status Codes 400,401,404,407,417,503
    Dynamic Session ID in URL Disabled
    Trigger ASM iRule Events Mode Disabled
    Trust XFF Header Disabled
    Handle Path Parameters As Parameters

    image

    シグネチャーで管理された攻撃パターンにマッチした場合はブロックするよう、すべてのシグネチャーを選択し、[Enforce]をクリックします。

    ・Attack Signatures

    項目1 設定値例
    Status Enforce

    image


    HTTPS用Virtual Server(DVWA_HTTPS_VIP)に対し、WAFポリシーを設定します。

    ・General Settings

    項目1 設定値例
    Policy Name WAF-policy-002
    Description Rapid Deployment Policy
    Policy Type Security
    Policy Template Rapid Deployment Policy
    Virtual Server DVWA_HTTPS_VIP(HTTPS)

    image

    その他の項目は、HTTP用WAFポリシー(WAF-policy-001)と同様に設定します。


    ■ [Security] > [Application Security] > [Policy Building] > [Learning and Blocking Settings]

    HTTP用WAFポリシー(WAF-policy-001)に対し、セキュリティ項目ごとのON/OFFを設定します。
    パフォーマンス低下や誤検知削減のため、以下を無効にします。

    • クレジットカード番号など、個人情報をマスキング
    • セキュリティポリシーで指定した、文字コードへの変換エラーチェック

    ・Data Guard ⇒ Violation : Information leakage detected

    項目1 設定値例
    Learn Disabled
    Alarm Disabled
    Block Disabled

    ・General Settings ⇒ Violation : Failed to convert character

    項目1 設定値例
    Alarm Disabled
    Block Disabled

    image

    HTTPS用WAFポリシー(WAF-policy-002)に対しても、同様に設定します。


    ■ [Security] > [Application Security] > [CSRF Protection]

    HTTP用WAFポリシー(WAF-policy-001)に対し、CSRF対策を有効にします。

    ・CSRF Protection

    項目1 設定値例
    CSRF Protection Enabled
    SSL Only Disabled
    Expiration Time Disabled

    ・CSRF Protection > URLs List

    URLs List(Wildcards supported)
    Method

    URL

    Required Parameters

    Enforcement Action
    Any * Ignore Verify CSRF Token

    ※実際の環境に応じて見直してください。

    image

    HTTPS用WAFポリシー(WAF-policy-002)に対しても、同様に設定します。


    ■ [Security] > [Event Logs] > [Logging Profile]

    セキュリティログとして記録するリクエストの種類を選択し、ログプロファイルを設定します。

    ・Logging Profile Properties

    項目1 設定値例
    Profile Name Log illegal and staging requests
    Description
    Application Security Enabled
    Network Firewall Disabled
    DoS Protection Disabled
    Bot Defense Disabled

    ・Application Security

    項目1 項目2 設定値例
    Configuration:Basic Storage Destination Local Storage
    Storage Filter:Basic Request Type Illegal requests, and requests that include staged attack signature or staged threat campaigns or Likely False Positive signature

    image

    9. 動作確認#

    BIG-IP(Active)にSSHにログインし、以下のコマンドで確認します。

    • pingによる疎通確認
      バーチャルサーバーIPアドレス:192.168.30.201宛にping送信します。
    # ping 192.168.30.201
    

    テストクライアントサーバーにSSHログインし、以下のコマンドで確認します。

    • pingによる疎通確認
      DstNat用IPアドレス:192.168.10.210宛にping送信します。
    # ping 192.168.10.210
    
    • httpリクエストによる疎通確認
      DstNat用IPアドレス:192.168.10.210宛にhttpリクエストを送信します。
      Web/DBサーバーの/etc/httpd/conf.d/welcome.confファイルが出力されることを確認します。
    # curl 192.168.10.210:80
    

    10. (参考)Webアプリケーションの脆弱性テスト#

    以下の環境で脆弱性をテストし、動作確認しています。

    • 攻撃者環境

      • テストクライアントサーバーを使用
    • 被害者環境

      • Web/DBサーバーを使用
      • 脆弱性のあるテスト用Webアプリケーションツール:DVWA(Damn Vulneralbe Web Application)を使用
    • 脆弱性テスト

      • DoS攻撃 → Palo Alto Networksで検知・ブロック
      • SQLインジェクション → Palo Alto Networksで検知・ブロック
      • クロスサイトリクエストフォージェリ(CSRF) → BIG-IPで検知・ブロック

    注意事項#