この記事は Nicolas Vibert 氏のブログ AWS Transit VPC (Part 2) – with Palo Alto Networks and VMware Cloud on AWS の翻訳です。 翻訳の一覧はこちら。
このテクニカル記事では、Palo Alto Networks のファイアウォールを使用して Transit VPC を設定し、VMware Cloud on AWS に接続する方法を説明します。以下の手順は、標準的な AWS VPC にも適用できます。
また、さらに後述のコマンドを使用して、オンプレミスの Palo Alto Networks ファイアウォールから VMware Cloud on AWS や AWS VGW にルートベースの VPN を設定することもできます。
AWS ブログで公開された Next-Gen FW を VMware Cloud on AWS で実行する方法の記事 と、Transit VPC の概要についての記事 に続きます。
まずは、何をしようとしているのかをハイレベルで説明するところから始めましょう。AWS ブログで公開された記事でも説明したように、AWS VPC と VMware Cloud on AWS の SDDC 環境を次世代ファイアウォール経由で往来するトラフィックを検査したいと思います。
Transit VPC の概念がよくわからない方は、まず私の まとめ記事 を読んでみてください。
これで、Transit VPC と、(「Transit VPC」または「Hub VPC」の中の)EC2 インスタンスの上に次世代 FW を稼働させていることと、スポーク VPC を VPN トンネルを介して次世代 FW に接続していることを理解していただけたと思います。
この記事を通して、私は Palo Alto 次世代 FW を使用しますが、Cisco、CheckPoint、Juniper、Fortigate などの他の仮想ファイアウォールにも同じ原理が適用されるはずです。
VMware Cloud on AWS の文脈では、VMC SDDC は別の「スポークVPC」と見なされているだけで、次世代 FW から VMware Cloud on AWS のゲートウェイへの VPN トンネルをいくつか設定すればいいだけです。
何をしているのか、もう少し詳しく説明しましょう。
Transit VPC 内には、Palo Alto Firewall を実行している EC2 インスタンスがあります。
Transit VPC のデプロイと Spoke VPC の設定、IPSec トンネルと BGP セッションの相互接続は、公式ガイド に従えばかなり簡単でした。
右側が Spoke VPC です。数多くあっても構いません。Spoke VPC VGW(仮想ゲートウェイ)と Palo Alto FW の間には 1 つ以上の VPN が存在します。
Spoke VPC は、そのローカル CIDR ネットワークを Transit VPC にアドバタイズします。
Transit VPC は、他の Spoke から学習した他のすべてのネットワーク(VMware Cloud on AWS を含む)のデフォルトルートをアドバタイズします。
VMware Cloud on AWS の SDDC を ルートベースの VPN で Transit VPC に接続します。
VMC SDDC は管理ネットワークとコンピュートネットワークを Transit VPC にアドバタイズし、Transit VPC はこれらのネットワークを Spoke VPC にアドバタイズします。
Transit VPC と Palo Alt ファイアウォールの構築
前述のように、あなたはパロアルトがまとめた偉大なステップバイステップの デザインガイド に本当に従うべきです。これは非常に徹底していて、すべてのスクリーンショットは非常に参考になります。
最初のステップは、VPC をデプロイし(あなたはできると思われます)、そこに Internet Gateway をアタッチし、マーケットプレイスから Palo Alto インスタンスをいくつかデプロイすることです。
Internet Gateway の作成とアタッチは簡単です。
AWS Marketplace から EC2 インスタンスをデプロイするために、「Palo Alto」と検索します。
次世代 FW には、バンドル 1 と愛好家好みのバンドル 2 の 2 つのバージョンがあります。私は Bundle 1 を使用しました。
これを選択して、通常のように EC2 インスタンスをデプロイします。
Make sure that you have: ここで何をしているか確認します。
- インターネット経由でアクセスできるように、EC2 インスタンスにパブリック IP アドレスを自動で割り当てます。
- インスタンスにポート 22 とポート 443 を許可するセキュリティグループを設定し、HTTPS で SSH してユーザーインターフェースにアクセスできるようにします。
最初のステップは、「admin」の資格情報と EC2 インスタンスのデプロイ時に指定したキーを使って、EC2 インスタンスに SSH 接続します。デプロイ時に EC2 インスタンスが取得したパブリック IP へ SSH 接続します。私の場合は 54.244.218.96 でした(今はもうないので、わざわざ私のにログオンしなくてもいいですよ、邪悪なハッカー!)。
bash-3.2$ ssh -i NicoSecretKey.pem [email protected]
Last login: Fri Jul 26 18:43:29 2019 from 38.98.37.141
Then issue the following commands to set up the GUI admin password. 続いて、以下のコマンドを発行してGUIの管理者パスワードを設定します。
configure
set mgt-config users admin password
Palo Alto の GUI にアクセスする前に、設定変更をコミットしてください(“commit” コマンドを利用して)。私がお伝えしなければならないのは、かなり辛いユーザーインターフェースだということです。Palo Alto さん、もっとうまくやれますよ。
Palo Alto の設定は、CLI (以前に設定した SSH セッション上で) で行うことも、GUI で行うこともできます。私は過去に両方を組み合わせて使ったことがあります。
ここで AWS コンソールに戻り、Palo Alto 用のネットワーク インターフェースを作成する必要があります(現在、Palo Alto には管理用のインターフェースしかありませんが、データ トラフィックを流すための実際のインターフェースはありません)。これは後にイーサネット 1/1 と呼ばれるものになります。
最初にしなければならないことの一つは、インターフェースの Source/Dest Check を無効にすることです。
それから、Palo Alto インスタンスにアタッチする必要があります。
Palo Alto のユーザー インターフェースにログオンすると、イーサネット 1/1 インターフェースが表示されます(Network/Interfaces/Ethernet メニュー)。予想通り IP がピックアップされているはずです。
ここで、リモートサイトへの VPN を確立するためには、この IP もパブリック IP に NAT される必要があります。そこで、AWS にパブリック IP (Elastic IP) をリクエストし、このプライベート IP (私の場合は 172.23.42.29) と関連付ける必要があります。
AWS のコンソールに戻り、EC2 のダッシュボード(「Elastic IPs」)で、IP をリクエストして、作成したネットワークインターフェースと関連付けます。
最後に Palo Alto ファイアウォールのパブリック IP で「Customer Gateway」を設定すれば完了です。
これで Palo Alto Firewall の設定は完了です。Spoke VPC と Transit VPC を接続する場合は、Palo Altoのドキュメント のセクション 3 以降の指示に従ってください。これらの説明は非常に簡単で、私がドキュメントで行っていることを繰り返すことはほとんど意味がありません。
ここでは、Palo Alto Firewall を VMware Cloud on AWS に接続する方法を中心に説明します。
VMware Cloud on AWS と Palo Alto 間の VPN の設定
設定は GUI でも CLI でもできます。
CLI を利用したい場合は、以下のスクリプトを利用します。これは AWS で生成された自動設定テンプレートを利用していますが、私のラボでテストしたところ、VMware Cloud on AWS でも問題なく動作しました。
GUI を使いたい場合は、さらに下の画像ギャラリーで VMware Cloud on AWS の設定と一致するものを紹介します(AWS VGW で説明されている設定は VMware Cloud on AWS でも動作するので、ドキュメント を読むこともできます)。
私の GitHub Repo https://github.com/nvibert/paloalto にもスクリプトがあります。
以下の設定を SSH セッション経由で適用する必要があります。
! --------------------------------------------------------------------------------
! IPSec Tunnel #1
! --------------------------------------------------------------------------------
! #1: Internet Key Exchange (IKE) Configuration
!
! A policy is established for the supported ISAKMP encryption,
! authentication, Diffie-Hellman, lifetime, and key parameters.
! Please note, these sample configurations are for the minimum requirement of AES128, SHA1, and DH Group 2.
! You will need to modify these sample configuration files to take advantage of AES256, SHA256, or other DH groups like 2, 14-18, 22, 23, and 24.
!
configure
edit network ike crypto-profiles ike-crypto-profiles vpn-04710e5a05345d762-0
set dh-group group2
set hash sha1
set lifetime seconds 28800
set encryption aes-128-cbc
top
! Update the public IPs below as you see fit. In my environment, 3.8.43.36 is the IP address of VMware Cloud on AWS and 52.42.95.209 is the public IP of the Palo Alto EC2 instance. As you can see, I used an unbreakable password for my IPSec connection.
edit network ike gateway PAN-to-VMC
set protocol ikev1 ike-crypto-profile vpn-04710e5a05345d762-0 exchange-mode main
set protocol ikev1 dpd interval 10 retry 3 enable yes
set authentication pre-shared-key key VMware1!VMware1!
set local-address ip 52.42.95.209
set local-address interface ethernet1/1
set peer-address ip 3.8.43.36
top
#2: IPSec Configuration
!
! The IPSec transform set defines the encryption, authentication, and IPSec
! mode parameters.
!
! Please note, you may use these additionally supported IPSec parameters for encryption like AES256 and other DH groups like 2, 5, 14-18, 22, 23, and 24.
edit network ike crypto-profiles ipsec-crypto-profiles ipsec-vpn-04710e5a05345d762-0
set esp authentication sha1
set esp encryption aes-128-cbc
set dh-group group2 lifetime seconds 3600
top
! --------------------------------------------------------------------------------
! #3: Tunnel Interface Configuration
!
! A tunnel interface is configured to be the logical interface associated
! with the tunnel.
!
! Association with the IPSec security association is done through the
! "tunnel protection" command.
!
edit network interface tunnel units tunnel.3
set ip 169.254.112.118/30
set mtu 1427
top
!
! Tunnel interface needs to be associated to Zone, we are using Untrust zone as an example, please adjust according
!
set zone Untrust network layer3 tunnel.3
! Tunnel interface needs to be associated to a virtual router, we are using default as an example, please adjust accordingly
!
set virtual-router default interface tunnel.3
top
edit network tunnel ipsec ipsec-tunnel-3
set auto-key ipsec-crypto-profile ipsec-vpn-04710e5a05345d762-0
set auto-key ike-gateway PAN-to-VMC
set tunnel-interface tunnel.3
set anti-replay yes
top
! --------------------------------------------------------------------------------
! #4: Border Gateway Protocol (BGP) Configuration
!
! BGP is used within the tunnel to exchange prefixes between the
! VMC and the Palo Alto instance.
!
!
edit network virtual-router default protocol bgp
edit peer-group VMCBGP
edit peer VMC
set peer-as 65100
set connection-options keep-alive-interval 10
set connection-options hold-time 30
set enable yes
set local-address ip 169.254.112.118/30
set local-address interface tunnel.3
set peer-address ip 169.254.112.117
top
!
! Your gateway can advertise a default route 0.0.0.0/0 to AWS VPCs or VMC on AWS for which you would need to create a
! redistribution profile as follows, allow redistribution of default route and finally
! apply the redistribution profile under bgp
!
edit network virtual-router default protocol redist-profile Default_to_VPC
set filter type static
set filter destination 0.0.0.0/0
set priority 10
set action redist
top
edit network virtual-router default protocol bgp
set allow-redist-default-route yes
top
edit network virtual-router default protocol bgp redist-rules Default_to_VPC
set enable yes
set set-origin incomplete
top
代わりに GUI でやりたい場合は、下のギャラリーを見てください。上の CLI で設定した内容は、下の内容を設定します。
これは、VMware Cloud on AWS 上でトンネルを立ち上げるために設定しなければならないものです。
以下のように、トンネルと BGP セッションの両方が上がってきました。
VMware Cloud on AWS からアドバタイズされたルートを見ると、すべてのローカル ネットワーク セグメントと管理サブネット (10.2.0.0/16) が確認できます。
VMware Cloud on AWS SDDC は 2 つのルートを学習しています。
- Palo Alto インスタンスからのデフォルトルート。
- 172.32.0.0.0/16 は AWS Spoke VPC からの CIDR です。
これで Transit VPC が起動し、VMware Cloud on AWS からのトラフィックはすべて Transit VPC を経由して検査を受けられるようになりました。
最後までお読みいただきありがとうございました。