インフラエンジニア向けPaloalto Networks VM-Series for AWSを使ってみる
こんにちはコカコーラ好きのカジです。
今回は、私の昔から注目している次世代ファイアーウォールであるPaloalto Networks VM-SeriesがAWS上で利用できるため試してみました。 数点ハマりどころがあったので、紹介しています。
Paloalto Networks VM-Series for AWSとは
Paloalto Networks VM-Series for AWSとは、簡単に言うとファイアーウォール製品です。
Paloalto Networksの製品を知ったのは、6年前にここのホームページを見て知りましたが、ユーザ識別機能がとてもすごいと驚きました。
こんな人のためにブログを書いてみました。
- Paloaltoのファイアーウォールを触ってみたいが、身近にVMware vSphere(ESXi)やXenServerなどのハイパーバイザーが無く、検証してみたい
- オンプレミスで同じファイアーウォールを利用していて、クラウドでも同じものを利用したいという方に参考になれば幸いです。
- あまりお金をかけず、検証するため、以下の内容で実施しました。
注意点
- ライセンスは、AWS Marketplaceの15日間の試用版ライセンスでテストします。
- 通信試験用のEC2サーバは12ヶ月の無料枠で作成できます。
- Paloaltoは有料枠のEC2サーバ上に作成する必要があります。
ライセンスについて
- ライセンス持ち込み型(BYOL):希望のモデルとサブスクリプションに応じたライセンスを購入します。
- 従量課金型ライセンス :利用されるサブスクリプションにより2種類のバンドル版をAWS Marketplaceにご用意しています。
-
バンドル1:脅威防御
- バンドル2:脅威防御、WildFire、URL フィルタリング (PAN-DB)、GlobalProtect
両方ともVM-300、プレミアムサポートあり
構成図
eth1=Paloalto上ではeth1/1、eth2=Paloalto上ではeth1/2となります。
構築手順
VPCの構築は「VPC Wizard」でPrivate,Public+NATインスタンスのVPCを作成し、NATインスタンスを削除します。
AWS Marketplace から Launchします。 今回はBundle1を選択し、15日間試用期間で検証を行いました。
m3.xlargeを選択します。
作ったVPCと、Public側のサブネットを指定し、自動割り当てパブリックIPの有効化と、EBS最適化インスタンス(EBS-optimized instance)を指定します。
Paloalto管理用のセキュリティグループは最低でも SSH, and HTTPS 今回は SSH, ICMP, HTTP, and HTTPSを有効にし、作成します。
追加セキュリティグループ
その他のセキュリティグループとして、2つ作成します。 Public サブネット用インターフェイスのセキュリティグループ:外部からファィアーウォールへの通信に必要な通信 今回の場合はPaloaltoの外部側インターフェイスeth1/1に利用します。 TCP:22 TCP:80 で作成しました。
Private サブネット用インターフェイスのセキュリティグループ:Private サブネットのEC2からファィアーウォールへの通信に必要な通信 今回の場合はPaloaltoの外部側インターフェイスeth1/2に利用します。 TCP:22 TCP:80 で作成しました。
追加インターフェイスの作成と割り当て
図のeth1/1とeth1/2用のENIを作成します。 それぞれ、IPアドレスを指定して作成します。10.0.x.10に指定します。 さきほどのセキュリティグループを割り当てます。
作成したENIを2つともPaloaltoのEC2インスタンスへ割り当てます。
Public Subnet側のENIインターフェイスにElastc IPを割り当てます。 ついでに管理用のIPアドレスにもElastic IPを割り当てた方が便利かもしれません。
「送信元/送信先の変更チェック(Source/Dest Check)を無効化
ネットワーク製品でおきまりの「送信元/送信先の変更チェック(Source/Dest Check)を無効化 さきほど作成したENIを2つとも実施します。
ルートテーブルの修正
VPCのルートテーブルを変更し、Private Subnetのルートテーブルを修正します。 ルーティング先を削除したNATインスタンスから、作成したPaloaltoのPrivate Subnetのインターフェイスへ変更します。
Paloaltoの初期設定
Paloaltoの管理GUIのパスワード変更
sshでログインして、管理GUIのパスワードを設定します。 パスワード設定できると管理コンソールでアクセスできるはずです。
% ssh -i <ec2キーペア.pem> admin@<管理用インターフェイスのPublic IP/Elastic IP> Welcome admin. admin@PA-VM> admin@PA-VM> configure Entering configuration mode [edit] #管理GUIのパスワードを修正 admin@PA-VM# set mgt-config users admin password Enter password : <パスワードを入力> Confirm password : <パスワードを入力> [edit] #設定を保存 admin@PA-VM# commit ..99%.....100% Configuration committed successfully [edit] # ログアウト admin@PA-VM# exit admin@PA-VM> exit Connection to xxx.xxx.xxx.xxx closed.
管理GUIにアクセスしインターフェイス設定
https://<管理用インターフェイスのPublic IP/Elastic IP>
Network > Interfaces > Ethernetで、アタッチしたネットワークインターフェイスを設定します。 この設定していないとLink Upせず、ハマりました。
ethernet1/1 > 設定 > 仮想ルーター : default
ethernet1/1 > 設定 > セキュリティゾーン : 新規ゾーン > Untrust
同じように以下の設定も行います。
ethernet1/2 > 設定 > 仮想ルーター : default
ethernet1/2 > 設定 > セキュリティゾーン : 新規ゾーン > Trust
右上のCommitで保存します。(このコミットをよく忘れてしまい、ハマりますので注意ください。) リンク状態が緑に変化します。
リモートメンテナンス用のNATポリシー設定
プライベートサブネットのEC2サーバをメンテナンスするためにNATポリシーを設定します。 Policies > NAT で設定します。
Desitination NATの設定
Source NATの設定
通信制御用のセキュリティポリシーの設定
Webサーバへのメンテナンス用アクセス許可ルール
名前:AllowManagement 以下の図の流れで作成します。
WebサーバへのWebアクセス用許可ルール
同じように作成します。
- 名前:AllowWebAccess
- 送信元ゾーン:Untrust
- 送信元アドレス:any
- 宛先ゾーン:Trust
- 宛先アドレス:any
- アプリケーション:web-browsing
作成したら、右上のCommitで保存・設定反映を忘れないで行いましょう。
完了後の通信確認
Paloalto FirewallでNATされるため、Elastic IPアドレスを設定してないWebサーバへアクセスできるようになります。 通信できない場合は、Webサーバ側に設定したのSecurity GroupでSSHが空いていることを確認しましょう。
% ssh -i <ec2のキーペアー> ec2-user@ The authenticity of host 'xxx.xxx.152.24 (xxx.xxx.152.24)' can't be established. RSA key fingerprint is 40:d3:e1:b2:f5:da:60:8b:81:6b:25:d4:cc:41:fd:0f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'xxx.xxx.152.24' (RSA) to the list of known hosts. __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/ [ec2-user@ip-10-0-1-237 ~]$ [ec2-user@ip-10-0-1-237 ~]$
WebサーバのEC2でApacheを起動し通信可能なことを確認 ``` % curl -v http:// * Rebuilt URL to: http://xxx.xxx.152.24/ * Trying xxx.xxx.152.24... * Connected to xxx.xxx.152.24 (xxx.xxx.152.24) port 80 (#0)
GET / HTTP/1.1 Host: xxx.xxx.152.24 User-Agent: curl/7.43.0 Accept: /
< HTTP/1.1 403 Forbidden < Date: Sun, 20 Sep 2015 07:10:09 GMT < Server: Apache/2.2.31 (Amazon) < Accept-Ranges: bytes < Content-Length: 3839 < Connection: close < Content-Type: text/html; charset=UTF-8 <