Palo AltoのHA構成によるネットワークセキュリティ [東日本/西日本リージョン3向け]#

要求事項#

  • セキュリティグループよりも強固なアクセス制御をしたい
  • 許可されたアプリケーションだけを許可してポートを偽装する脅威から守りたい
  • コンプライアンス準拠のため、高度なセキュリティサービス(IPSなど)をネットワークセグメント間に挿入したい
  • ファイルに未知のマルウェアが含まれているか判定したい
  • インターネットから未知のマルウェアが内部のシステムに侵入したことを検知する
  • 検知した未知のマルウェアに対する対策を早期に適用する

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

  • Wildfire機能によるサンドボックス環境にてマルウェア判定を行う

  • マルウェア判定をシグネチャ更新で行う

構造(イメージ図)#

image

image

image

image

WildFireの概要#

クラウドベースのサンドボックス

  • 仮想サンドボックス環境でファイルを実行することで振る舞いベースでマルウェアを検知
  • ファイルのコピーをPAからクラウドサーバに送信

  • 特定されたマルウェアに対するシグネチャを自動的に生成

  • シグネチャは世界中のファイアウォールに対して配信

  • マルウェアの活動に関するフォレンジックと分析を提供

  • ターゲットとなったマシン上での動作
  • マルウェアの伝染に用いられたアプリケーション
  • マルウェアの配信に利用されているURLのリスト

image

実装サンプル#

1. 環境構築#

  • 本手順ではFJCloud-Oのスタック機能を使用してパターン構成を一括作成します。
  • IaaS APIを実行できる環境で実行してください。
  • API内の共通パラメータの対応は以下の通りです。事前に設定の上コマンドを実行してください。
変数名 説明
$ORCHESTRATION オーケストレーションサービスのエンドポイント
$TENANT_ID 作業対象のテナントID
$OS_AUTH_TOKEN 認証トークン文字列
  • コマンド実行前に下記のテンプレートファイルをダウンロードし、実行環境に展開してください。

テンプレート

仮想ネットワーク、仮想ルータ作成#

APIを使用し、仮想ネットワーク、仮想サブネット、仮想ルータを作成します。
- ※「 PARAMETER_PALOALTO-CDP-NETWORK.json 」ファイルの”fip_net”に構築環境のfip_netのIDを入力してください。

STACK_NAME=paloalto-CDP-network
TEMPLATE_FILE=TEMPLATE_PALOALTO-CDP-NETWORK.yaml
PARAMETER_FILE=PARAMETER_PALOALTO-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

Managementルータ用FW作成#

この例では以下のルールを設定します。

  • ※要件に合わせ設定内容を変更してください。
No. ファイアウォールルール名 action IPプロトコル 接続元IPアドレス 接続元使用ポート 接続先IPアドレス 接続先使用ポート
1 firewall_ingress_rule_allow_vpncider allow tcp 192.168.246.0/24※VPNのCIDER 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※VPNエンドポイント 443
3 firewall_egress_rule_allow_all allow any 192.168.50.0/24 any any any
4 firewall_rule_all_deny allow any any any any any

以下のAPIを使用し、 Managementルータ用のFWスタックを作成します。

  • ※実行前に「PARAMETER_paloalto-CDP-FW_MANAGEMENT.json」のrouter_idにmanagement-net-routerのIDを入力してください。
STACK_NAME=paloalto-CDP-management-fw
TEMPLATE_FILE=TEMPLATE_PALOALTO-CDP-FW_MANAGEMENT.yaml
PARAMETER_FILE=PARAMETER_PALOALTO-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

セキュリティグループ作成#

APIを使用し、セキュリティグループを作成します。

  • 掲載しているテンプレートでは全許可の設定を行っています。設定内容は要件に合わせ適宜変更してください。
STACK_NAME=paloalto-CDP-security-group
TEMPLATE_FILE=TEMPLATE_PALOALTO-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

Virtual portスタックの作成#

APIを使用し、Palo Altoで使用するvirtual portを作成します。

STACK_NAME=paloalto-CDP-virtual-port
TEMPLATE_FILE=TEMPLATE_PALOALTO-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

Palo Alto active仮想マシンの作成#

APIを使用し、Palo Alto active仮想マシンのスタックを作成します。
このスタックには以下のリソースが含まれます。

  • Palo Alto仮想マシンにアタッチされるポート
  • Palo Alto仮想マシンにアタッチされるボリューム
  • Palo Alto仮想マシン
STACK_NAME=paloalto-CDP-palo-active
TEMPLATE_FILE=TEMPLATE_PALOALTO-CDP-PaloaltoSERVER.yaml
PARAMETER_FILE=PARAMETER_PALOALTO-CDP-PaloaltoSERVER-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

Palo Alto standby仮想マシンの作成#

APIを使用し、Palo Alto standby仮想マシンのスタックを作成します。
このスタックには以下のリソースが含まれます。

  • Palo Alto仮想マシンにアタッチされるポート
  • Palo Alto仮想マシンにアタッチされるボリューム
  • Palo Alto仮想マシン
STACK_NAME=paloalto-CDP-palo-standby
TEMPLATE_FILE=TEMPLATE_PALOALTO-CDP-PaloaltoSERVER.yaml
PARAMETER_FILE=PARAMETER_PALOALTO-CDP-PaloaltoSERVER-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

WEB サーバ仮想マシンの作成#

APIを使用し、WEBサーバ仮想マシンのスタックを作成します。
このスタックには以下のリソースが含まれます。

  • WEBサーバ仮想マシンにアタッチされるポート
  • WEBサーバ仮想マシンにアタッチされるボリューム
  • WEBサーバ仮想マシン

また仮想マシンに対して以下の処理が自動で実行されます。

  • デフォルトゲートウェイを192.168.50.1に設定
  • rootパスワードの変更

※掲載しているテンプレートではデフォルトで"paloalto2021"に設定されます。 ※パスワード文字列を任意の文字列変更する場合、「PARAMETER_PALOALTO-CDP-WEBSERVER.json」内の"rootpassword"に対する値を変更してください。

  • /etc/ssh/sshd_configの編集
  • rootユーザのSSHログイン許可
  • パスワード認証の許可

  • yum updateの実行

  • httpdパッケージのインストール
STACK_NAME=paloalto-CDP-webserver
TEMPLATE_FILE=TEMPLATE_PALOALTO-CDP-WEBSERVER.yaml
PARAMETER_FILE=PARAMETER_PALOALTO-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

DBサーバ仮想マシンの作成#

APIを使用し、DBサーバ仮想マシンのスタックを作成します。
このスタックには以下のリソースが含まれます。

  • DBサーバ仮想マシンにアタッチされるポート
  • DBサーバ仮想マシンにアタッチされるボリューム
  • DBサーバ仮想マシン

また仮想マシンに対して以下の処理が自動で実行されます。

  • デフォルトゲートウェイを192.168.50.1に設定
  • rootパスワードの変更

※掲載しているテンプレートではデフォルトで"paloalto2021"に設定されます。 ※パスワード文字列を任意の文字列変更する場合、「PARAMETER_PALOALTO-CDP-DBSERVER.json」内の"rootpassword"に対する値を変更してください。

  • /etc/ssh/sshd_configの編集
  • rootユーザのSSHログイン許可
  • パスワード認証の許可

  • yum updateの実行

  • postgresql13-serverパッケージのインストール
STACK_NAME=paloalto-CDP-DBserver
TEMPLATE_FILE=TEMPLATE_PALOALTO-CDP-DBSERVER.yaml
PARAMETER_FILE=PARAMETER_PALOALTO-CDP-DBSERVER.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

Ansibleサーバ仮想マシンの作成#

APIを使用し、Ansibleサーバ仮想マシンのスタックを作成します。
このスタックには以下のリソースが含まれます。

  • Ansibleサーバ仮想マシンにアタッチされるポート
  • Ansibleサーバ仮想マシンにアタッチされるボリューム
  • Ansibleサーバ仮想マシン

また仮想マシンに対して以下の処理が自動で実行されます。

  • rootパスワードの変更

※掲載しているテンプレートではデフォルトで"paloalto2021"に設定されます。 ※パスワード文字列を任意の文字列変更する場合、「PARAMETER_PALOALTO-CDP-AnsibleSERVER.json」内の"rootpassword"に対する値を変更してください。

  • /etc/ssh/sshd_configの編集
  • rootユーザのSSHログイン許可
  • パスワード認証の許可

  • yum updateの実行

  • epel-releaseリポジトリのインストール
  • ansibleパッケージのインストール
STACK_NAME=paloalto-CDP-ansibleserver
TEMPLATE_FILE=TEMPLATE_PALOALTO-CDP-AnsibleSERVER.yaml
PARAMETER_FILE=PARAMETER_PALOALTO-CDP-AnsibleSERVER.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

VPNサービスの作成#

IaaSポータルより、以下のパラメータで管理用のVPNを作成してください。 ※以下作成例です。環境要件によりパラメータを変更してください。

パラメータ
仮想ルータ名 management-net-router
サブネット名 management-subnet
VPNサービス名 PALOALTO-CDP-VPN
管理状態 true

SSL-VPNの作成#

IaaSポータルより、以下のパラメータでSSL-VPNを作成してください。 ※以下作成例です。環境要件によりパラメータを変更してください。

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

2. Palo Alto 設定#

本パターンでは以下のパラメータを設定します。

※要件に合わせてパラメータを変更してください。

■ Device > セットアップ

管理 > 一般設定
No.

ホスト名

タイムゾーン

表示言語
1 PAVM1 Japan ja
2 PAVM2 Japan ja


サービス / NTP
VM

プライマリDNSサーバ

セカンダリDNSサーバ

プライマリNTPサーバ

セカンダリNTPサーバ
PAVM1 8.8.8.8 8.8.4.4 133.162.97.19 133.162.97.20
PAVM2 8.8.8.8 8.8.4.4 133.162.97.19 133.162.97.20


インターフェース > managemnt
VM

IPタイプ

IPアドレス

ネットマスク

デフォルトゲートウェイ
PAVM1 スタティック 192.168.50.11 255.255.255.0 192.168.50.1
PAVM2 スタティック 192.168.50.12 255.255.255.0 192.168.50.1


WildFire > 一般設定
VM

WildFire パブリッククラウド

安全なファイルのレポート

レポートのグレイウェアファイル
PAVM1 jp.wildfire.paloaltonetworks.com チェックあり チェックあり
PAVM2 jp.wildfire.paloaltonetworks.com チェックあり チェックあり

■ Device > 高可用性

全般 > セットアップ 、選択設定
VM

HA の有効化

グループID

モード

ピア HA IPアドレス

バックアップ側 ピア HA IPアドレス

デバイス優先度

プリエンティブ
PAVM1 チェックあり 1 アクティブ パッシブ 192.168.40.12 192.168.60.12 90 チェックなし
PAVM2 チェックあり 1 アクティブ パッシブ 192.168.40.11 192.168.60.11 100 チェックなし


コントロールリンク(HA1)
VM

ポート

IPv4/IPv6 アドレス

ネットマスク
PAVM1 ethernet1/4 192.168.40.11 255.255.255.0
PAVM2 ethernet1/4 192.168.40.12 255.255.255.0


コントロールリンクのバックアップ
VM

ポート

IPv4/IPv6 アドレス

ネットマスク
PAVM1 ethernet1/6 192.168.60.11 255.255.255.0
PAVM2 ethernet1/6 192.168.60.12 255.255.255.0


データリンク(HA2)
VM

ポート

IPv4/IPv6 アドレス

ネットマスク
PAVM1 ethernet1/5 192.168.40.21 255.255.255.0
PAVM2 ethernet1/5 192.168.40.22 255.255.255.0


データリンクのバックアップ
VM

ポート

IPv4/IPv6 アドレス

ネットマスク
PAVM1 ethernet1/7 192.168.60.21 255.255.255.0
PAVM2 ethernet1/7 192.168.60.22 255.255.255.0

■ Device > 管理者

admin
VM

名前

パスワード
PAVM1 admin *
PAVM2 admin *

■ Device > 応答ページ

アプリケーション ブロック ページ
VM

アクション
PAVM1 有効
PAVM2 有効

■ Device > ダイナミック更新

アンチウィルスの更新スケジュール
VM

繰り返し

分(過去 1 時間)

アクション

ピアと同期
PAVM1 毎時 30 download-and-install チェックあり
PAVM2 毎時 35 download-and-install チェックあり


アプリケーションと脅威の更新スケジュール
VM

繰り返し

分(過去 30 分間)

アクション

ピアと同期
PAVM1 30分ごと 15 download-and-install チェックあり
PAVM2 30分ごと 20 download-and-install チェックあり


WildFireの更新スケジュール
VM

Choice


アクション

ダウンロード/インストール後に HAピアとコンテンツを同期
PAVM1 15分ごと 5 download-and-install チェックあり
PAVM2 15分ごと 10 download-and-install チェックあり

■ Network > ネットワーク プロファイル > インターフェイス管理

名前 ネットワークサービス
PING PING(チェックあり)

■ Network > ゾーン

名前 タイプ インターフェイス
trust レイヤー3 ethernet1/2
ethernet1/3
untrust レイヤー3 ethernet1/1

■ Network > 仮想ルータ

名前 インターフェイス
default

 
ethernet1/1
ethernet1/2
ethernet1/3
スタティックルート
名前

宛先

インタフェース

タイプ

default_route 0.0.0.0/0 ethernet1/1 ip-address 192.168.10.1/32

■ Network > インターフェイス

インターフェイス インターフェイス タイプ 管理プロファイル IPアドレス 仮想ルータ セキュリティゾーン
ethernet1/1 Layer3 PING 192.168.10.100/24 default untrust
ethernet1/2 Layer3 PING 192.168.20.100/24 default trust
ethernet1/3 Layer3 PING 192.168.30.100/24 default trust
ethernet1/4 HA none none
ethernet1/5 HA none none
ethernet1/6 HA none none
ethernet1/7 HA none none

■ Objects > アドレス

名前 タイプ アドレス
DB_Server1 IP ネットマスク 192.168.30.200/32
DMZ IP ネットマスク 192.168.20.0/24
Internal IP ネットマスク 192.168.30.0/24
Web_Server1 IP ネットマスク 192.168.20.200/32

■ Objects > サービス

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

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

名前
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 > セキュリティプロファイル > WildFire 分析

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

■ Policies > セキュリティ

No.
 
名前
 
タグ
 
タイプ
 
送信元
ゾーン

アドレス

ユーザ

HIP プロファイル
宛先
ゾーン

アドレス
アプリケーション
 
サービス
 
アクション
 
プロファイル
 
オプション
 
1
 
DNS
 
none
 
universal
 
trust
 
any
 
any
 
any
 
untrust
 
any
 
dns
 
application-default
 
Allow
 
Antivirus-Profile01
WF-Profile01
セッション終了時にログ
 
2
 
NTP
 
none
 
universal
 
trust
 
any
 
any
 
any
 
untrust
 
any
 
ntp
 
application-default
 
Allow
 
Antivirus-Profile01
WF-Profile01
セッション終了時にログ
 
3
 
intranet to any icmp ping
 
none
 
universal
 
trust
 
DB_Server1
Web_Server1
any
 
any
 
untrust
 
any
 
icmp
ping
application-default
 
Allow
 
Antivirus-Profile01
WF-Profile01
セッション終了時にログ
 
4
 
SQL_Webserv to Dbserv
 
none
 
universal
 
trust
 
Web_Server1
 
any
 
any
 
trust
 
DB_Server1
 
postgres
 
application-default
 
Allow
 
Antivirus-Profile01
WF-Profile01
セッション終了時にログ
 
5 SSH_Webserv to Dbserv none universal trust Web_Server1 any any trust DB_Server1 ssh any Deny none セッション終了時にログ
6
 
allow outbound web
 
none
 
universal
 
trust
 
any
 
any
 
any
 
untrust
 
any
 
any
 
HTTP
HTTPS
Allow
 
Antivirus-Profile01
WF-Profile01
セッション終了時にログ
 
7 internet to intranet none universal untrust any any any trust any any any Deny none セッション終了時にログ
8 intranet to internet none universal trust any any any untrust any any any Deny none セッション終了時にログ

■ Policies > NAT

No.
 
名前
 
タグ
 
元のパケット
送信元ゾーン

宛先ゾーン

宛先インターフェイス

送信元アドレス

宛先アドレス

サービス
変換済みパケット
送信元変換

宛先変換
1

 
NAT-intra

 
none

 
trust

 
untrust

 
ethernet1/1

 
DMZ
Internal
 
any

 
any

 
dynamic-ip-and-port
ethernet1/1
192.168.10.100/24
なし

 

3. Ansibleによる Palo Alto 設定#

  1. Palo Alto設定で記載した設定の一部はAnsibleによる設定可能です。

Ansibleについて

概要 - Redhat社が開発するオープンソースの構成管理ツール。 - ITインフラにかかわる様々な作業を自動化。 - エージェントレス、接続にはSSH接続が必須 - モジュールを利用することで様々なプロダクトに対応 - Palo Alto networks のmoduleは以下にて公開

https://paloaltonetworks.github.io/pan-os-ansible/

  • 冪(べき)等性を担保
  • Ansibleにおける処理
  • PlaybookというYAML形式のファイルを実行
  • 今回使用したバージョン
  • ansible 2.9.23
  • Python 3.6.8

  • 前提

  • 必要なモジュールインストール
  • 以下をansibleサーバーで実行します。
ansible-galaxy collection install paloaltonetworks.panos
  • 実行するモジュールで別途必要なモジュールをインストールします。 ※今回のパターンで実行に必要なモジュールのみ記載しております。各モジュールで必要な要件をご確認ください。

pip3 install pandevice
pip3 install pan-python

pip3 install pan-os-python
paloalto設定とansible実行の対応一覧
PaloAlto設定

ansible設定 

備考

実行するyamlファイル
■ Device > セットアップ 、管理 > 一般設定 01_setup.yaml
■ サービス NTP, DNS 03_configure.yaml
■ インターフェース > managemnt ×
■ WildFire > 一般設定 ×
■ Device > 高可用性 デバイスプラオリティの設定は、GUIで実施 02_configureHA.yaml
■ Device > 管理者 ×
■ Device > 応答ページ ×
■ Device > ダイナミック更新 ×
■ Network > ネットワーク プロファイル > インターフェイス管理 03_configure.yaml
■ Network > ゾーン 03_configure.yaml
■ Network > 仮想ルータ 03_configure.yaml
■ Network > インターフェイス 03_configure.yaml
■ Objects > アドレス 03_configure.yaml
■ Objects > サービス 03_configure.yaml
■ Objects > セキュリティプロファイル > アンチウィルス ×
■ Objects > セキュリティプロファイル > WildFire 分析 ×
■ Policies > セキュリティ 03_configure.yaml
■ Policies > NAT 03_configure.yaml

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

Ansibleテンプレートファイル

Ansbileの概要、ファイル構造の説明は下記をご参照ください。 https://doc.cloud.global.fujitsu.com/lib/iaas/jp/cdp/bigip-web-ha/#3-ansible

(3) Ansibleの実行に関する補足

Ansible設定ファイル構造

  • 本デザインパターンにおけるAnsible設定ファイル構造を以下表に記載
  • ディレクトリ構造
    • /etc/ansible/roles/inventory
  • 共通設定

    • /etc/ansible/roles/inventory
    • hostsファイル ※PAVM1、PAVM2のアクセス情報
    • /etc/ansible/roles/inventory/group_vars
    • paloalto.yaml ※PAVM1、PAVM2に設定する共通パラメータ
    • /etc/ansible/roles/inventory/host_vars
    • PAVM1、PAVM2それぞれ固有のパラメータ
    • paloalto01.yaml(PAVM1の固有パラメータ)
    • paloalto02.yaml(PAVM2の固有パラメータ)
  • 01_setup.yamlの実行

インベントリファイル(制御したいホストを定義するファイル)としてhostsファイルを指定し、この中の"ansible_ssh_pass"の値を修正することで初期パスワードを設定可能

  • hostsファイルでは、以下の制御対象ホストとグループを定義

PAVM1 ホスト名:"paloalto01"

PAVM2 ホスト名:"paloalto02"

上記2ホストが所属するグループ名:"palolato" 同ファイル内13行目に"[]"と記載し定義

  • 各設定パラメータはhost_vars/paloalto01.yaml ,host_vars/paloalto02.yaml,group_vars/palolato.yamlファイルの対応箇所を修正

実行例:

[root@ansible-server inventory]#ansible-playbook -i hosts 01_setup.yaml
  • 02_configureHA.yamlの実行例
[root@ansible-server inventory]#ansible-playbook -i hosts 02_configureHA.yaml
  • 03_configure.yamlの実行例

bash [root@ansible-server inventory]#ansible-playbook -i hosts 03_configure.yaml

メリット・効果#

Palo Altoの活用 - 許可されたアプリケーションだけを許可してポートを偽装する脅威から保護 - インターネットから未知のマルウェアが内部のシステムに侵入したことを検知 - 検知した未知のマルウェアに対する対策を早期に適用

Ansibleを活用したPalo Alto構築 - 環境(テスト・本番)が変わっても同じ内容で構築可能 - 構築が自動化されているため、設定ミス防止

注意事項#

  • Ansibleのバージョン
  • 本パターンは、ansible 2.9.23、python 3.6.8にて動作確認済です。

  • Palo Altoのansibleモジュール

  • 本デザインパターンに必要なモジュールのみ記載しております。

  • Ansibleのファイル記載方法、実行

  • 詳細はAnsibleのドキュメントを参照お願いします。

  • Palo Altoの設定

  • 本パターンにおける設定は設定例です
    • 冗長方式のパラメータ、アプリケーション制御などは一例です。
    • 実際に利用される場合、適したパラメータ、方式にて導入をお願いします。