この記事は 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 環境を次世代ファイアウォール経由で往来するトラフィックを検査したいと思います。

Palo Alt Networks のファイアウォールを備えた Transit VPC と VMware Cloud on AWS Palo Alt Networks のファイアウォールを備えた Transit VPC と VMware Cloud on AWS

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 の全体アーキテクチャ Transit VPC の全体アーキテクチャ

何をしているのか、もう少し詳しく説明しましょう。

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 の作成とアタッチは簡単です。

作成された IGW を VPC にアタッチ 作成された IGW を VPC にアタッチ

Target に IGW を持つ Transit VPC のルートテーブル Target に IGW を持つ Transit VPC のルートテーブル

AWS Marketplace から EC2 インスタンスをデプロイするために、「Palo Alto」と検索します。

AWS Marketplace AWS Marketplace

次世代 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 を経由して検査を受けられるようになりました。

最後までお読みいただきありがとうございました。