Palo Alto Networks VM SeriesとBIG-IP ASMによるセキュアーなWebアプリケーションの公開#
本構成はFJcloud-O 東日本/西日本リージョン3向けとなります。
本ページは、2021年11月時点の参考情報です。
公開中のテンプレートには、以下のイメージが含まれます。
- BIG-IP ASM 1G
- PAN VM50 BUNDLE2
- CentOS 7.9 64bit (English) 01
恐れ入りますが、最新版のBIG-IP・Palo Alto Networks VM Series・Linuxイメージをご使用の上、構築してください。
要求事項#
公開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提供サービスを参照してください。
構造(イメージ図)#
構成図#
本ガイド記載のテンプレートで構築した設定値を、括弧内に示しています。
- インターネット環境に見立てた内部ネットワークA1上のテストクライアントから、Web/DBサーバーに接続します。
- 不正アクセスが遮断されることを検証するため、WebとDBで1台のサーバー構成としています。実際の構築では、適切な構成をご検討ください。
ネットワーク論理構成図#
Palo Alto Networks#
- 内部ネットワーク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#
- BIG-IPがバーチャルサーバーIPアドレス:192.168.30.201宛のHTTP/HTTPS通信を受け取ると、負荷分散対象のWeb/DBサーバー:192.168.20.200に転送
実装サンプル#
1. ネットワーク関連リソースを作成#
以下のテンプレートファイルをダウンロードし、API実行環境に展開してください。
Note
本ガイドで使用する各テンプレートファイルは、設定ファイル(yaml形式)とパラメーターファイル(json形式)で構成され、相互に依存関係が存在します。
IaaSポータル「テンプレート」⇒「スタック一覧」画面から、スタックを作成できません。
以下の記載例に従い、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サービスを設定
- 作成手順は初期構築ガイド VPNサービスを作成 を参照
- 以下の設定値例を参照
パラメーター | 値 |
---|---|
仮想ルーター名 | management-net-router |
サブネット名 | management-subnet |
VPNサービス名 | Palo-BIGIP_CDP_VPNservice |
管理状態 | true |
(2) SSL-VPNコネクションを作成#
- SSL-VPNコネクションを作成
- 作成手順は初期構築ガイド 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 |
■ [Objects] > [アドレスグループ]
SNATで使用するアドレスグループを設定します。
名前 | アドレス |
---|---|
SNAT-group | application-net boundary-net |
■ [Objects] > [サービス]
この後で使用するサービスを設定します。
名前 | プロトコル | 宛先ポート |
---|---|---|
HTTP | TCP | 80 |
HTTP_HTTPS | TCP | 80,443 |
HTTPS | TCP | 443 |
(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) |
■ [Objects] > [セキュリティプロファイル] > [アンチスパイウェア]
アンチスパイウェア機能のセキュリティプロファイルを作成します。
重大度に応じた二つのルールを設定します。
名前 |
---|
AS-Profile01 |
ルール名 | 重大度 | アクション | パケットキャプチャ |
---|---|---|---|
AS-Rule01 |
critical high |
default |
extended-capture |
AS-Rule02 |
medium low informational |
default |
disable |
■ [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 |
■ [Objects] > [セキュリティプロファイル] > [WildFire 分析]
WildFire 分析のセキュリティプロファイルを作成します。
対象をすべてのファイルに設定します。
名前 |
---|
WF-Profile01 |
名前 | アプリケーション | ファイルタイプ | 方向 | 分析 |
---|---|---|---|---|
ALL-files | any | any | both | public-cloud |
■ [Objects] > [セキュリティプロファイル] > [DoSプロテクション]
フラッド型のDoS/DDoS攻撃に対するセキュリティプロファイルを作成します。
プロファイル作成時、各しきい値は、想定するHTTPリクエスト数やシステム負荷状況などを考慮し設定してください。
- アラームレート
- アクティベーションレート
- 最大レート
- ブロック期間
名前 | 場所 | タイプ | フラット防御 SYNフラッド |
フラット防御 UDPフラッド |
フラット防御 ICMPフラッド |
フラット防御 ICMPv6フラッド |
フラット防御 その他のIPフラッド |
リソース保護 セッション |
---|---|---|---|---|---|---|---|---|
DOS_Profile01 | classified | チェックあり | チェックあり | チェックあり | チェックあり | チェックあり | チェックあり |
(C) ポリシーの設定#
■ [Policies] > [セキュリティ]
セキュリティポリシーを設定します。
untrustゾーンからtrustゾーンへの通信は、以下のみを許可します。
- テストクライアントサーバーからのicmp/ping通信
- HTTP/HTTPS通信
■ [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)
■ [Policies] > [DoSプロテクション]
untrustゾーンからDVWA-public(192.168.10.210/32)宛の通信に対し、DoSプロテクションポリシーを設定します。
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 |
(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 |
■ [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 |
.
■ [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 |
■ [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 |
■ [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 |
■ [Setup Utility] > [DNS]
DNSサーバーを設定します。
・Domain Name Server Configuration
項目1 | 設定値例 |
---|---|
DNS Lookup Server List | 8.8.4.4 8.8.8.8 |
■ [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) |
■ [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 |
■ [Setup Utility] > [Active/Standby Pair]
これより後はAdvanced Device Management Configurationで設定するため、[Finished]をクリックします。
■ [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 | (設定したパスワードを入力) |
BIG-IP(Standby)の証明書情報を確認後、[Device Certificate Matches]をクリックします。
さらに、[Add Device]をクリックします。
■ [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 |
■ [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 |
■ [Device Management] > [Overview]
同期の状態が[In Sync]となることを確認します。
これ以降、設定値はBIG-IP間で同期されます。
■ [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 |
(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 |
■ [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 |
■ [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 |
・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 |
[Resources]をクリックし、作成したプールを適用します。
・Load Balancing
項目1 | 設定値例 |
---|---|
Default Pool | DVWA_HTTP_Pool |
Default Persistence Profile | None |
Fallback Persistence Profile | None |
[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 |
■ [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 |
・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 |
[Resources]をクリックし、作成したプールを適用します。
・Load Balancing
項目1 | 設定値例 |
---|---|
Default Pool | DVWA_HTTP_Pool |
[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 |
■ [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 |
(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) |
Enforce Mode
をBlocking
に設定し、攻撃をブロックします。
・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 |
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 |
シグネチャーで管理された攻撃パターンにマッチした場合はブロックするよう、すべてのシグネチャーを選択し、[Enforce]をクリックします。
・Attack Signatures
項目1 | 設定値例 |
---|---|
Status | Enforce |
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) |
その他の項目は、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 |
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 |
※実際の環境に応じて見直してください。
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 |
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で検知・ブロック
注意事項#
- 本パターンは、2021年11月時点のFJcloud-O 東日本/西日本リージョン3で動作検証をしています。
- 本パターンにおけるPalo Alto Networks・BIG-IPの設定や、冗長方式のパラメーターなどはあくまでも一例です。
実際に利用される場合、ご使用の環境に適したパラメーターや方式を採用ください。 - Palo Alto Networks、BIG-IPの設定にあたっては、必要に応じて以下を参照してください。
FUJITSU Hybrid IT Service FJcloud-O IaaS Palo Alto Networks スタートガイド(PDF形式)
FUJITSU Hybrid IT Service FJcloud-O IaaS BIG-IP スタートガイド(PDF形式)