Pulse Connect Secureを使ってVPCへSSL-VPN環境を構築する

弊社IT推進室から依頼があり、リモートワーク(テレワーク)に活用できるSSL-VPN製品を試してみました。マーケットプレイスでAMI提供されており、すぐに使える状態で提供されています。
2020.04.28

こんにちはコカコーラ大好きカジです。

弊社IT推進室から依頼があり、リモートワーク(テレワーク)に活用できるSSL-VPN製品を試してみました。AWS Client VPNやSophos UTMによるSSL-VPNもありますが、Pulse Secureは、NetScreen TechnologiesやJuniper Networksへの変遷を経て、2014年にPulse Secureに変わった現在まで10年以上で提供しており、老舗ならではの、管理やセキュリティを考慮したSSL-VPNを構築可能な製品となります。

(私はNetScreen TechnologiesやJuniper Networks時代に触っていて、AWS環境に構築できることをつい最近知ったので試してみました。)

2020年4月現在、コロナウィルスの影響が濃くなる中、世界保健機関(WHO) や各国政府は、感染リスクに対する予防策として、テレワークを推奨していますが、Pulse Secureではビジネスを継続するための支援として、評価ライセンスを一定期間、無償で必要なユーザ数分ご提供しています。

既存のお客様か、そうでないにかかわらず、日本国内で働く方々を対象にご利用いただくことが可能なようです。

詳細はこちらになります。申請に必要なHardwareIDは、構築後に確認できます。

今回はAWS上での構築でご紹介しますが、AWSのみならず、VMware、KVM、Hyper-V、Azureでも利用可能です。利用したい人のニーズにあったところに導入できると思います。

Pulse Connect Secureとは

色々な機能があるますが、今回SSL-VPNによるリモートアクセスVPNに特化してご説明します。 SAML認証やActive Directoryと連携可能で、特に私が優れていると思っている機能として、2つあります。

1.ホストチェッカー

認証時に証明書、ID/パスワードのみならず、ホストチェッカー機能を持っており、以下の状態をチェックしてVPN接続を行うことが可能です。

Windows端末では、接続クライアントの以下をホストチェック可能です。

  • アンチウィルスソフト、パーソナルファイアウォールなどのインストールあるいは実行
  • OSのバージョン、パッチレベル
  • ブラウザ
  • その他(レジストリの設定)など

上記をチェックした上で、SSL-VPN接続を許可することが可能です。

2.Pulse Application Launcher

リモートアクセス端末が多いと、SSL-VPN接続用クライアントソフトウェアのインストールで手間がかかりますよね。 Windowsユーザが多い場合は、インストールしやすいように配慮されており、管理者の負担が少ないと思っています。

前提条件

  • AWSアカウントを既に所有済み
  • Pulse Connect Secure試用版での構築
  • Pulse Secureから提供されるCloudFormationで構築されるVPC上に構築
  • ネットワーク構成
    • 10.20.0.0/16 VPC CIDRアドレス
    • 10.20.1.0/24 内部用サブネット
    • 10.20.2.0/24 外部用サブネット
    • 10.20.3.0/24 管理用用サブネット
  • インスタンスタイプ t2.medium
  • 通信確認用のEC2を別途VPC内に構築します。
  • SSL-VPNに利用する証明書はLet’s Encryptの証明書を発行して利用。証明書作成部分は本記事では触れません。
  • DNS設定(Route 53)設定については省略
  • SSL-VPNクライアント接続は別のブログとします。

構成図

構築手順

AMS MarketPlaceで有効化

マネージメントコンソールログイン後に、AWS Marketplaceを開きます。

Pulse Secureで検索し、Pulse Connect Secure - BYOL 3 NICを選択します。

Continue to Subscribe をクリックします。

Fulfillment Optionで、New VPCを選択します。

Launch CloudFormationを選択します。

CloudFromationにつづきます。

CloudFormationで構築

以下のみを追記します。

  • スタック名: 任意(例:PulseSecure)
  • New VPC address space: 10.20.0.0/16
  • Internal Subnet address space: 10.20.1.0/16
  • External Subnet address space: 10.20.2.0/16
  • Management Subnet address space: 10.20.3.0/16
  • instance type: t2.medium
  • Admin User Name: pcsadmin
  • Admin Password: 任意(10文字以上、PulseSecureへGUIログイン用パスワード)
  • SSH Key Name: 任意(EC2キーペアで作成済みのものを指定)
  • Remote Address CIDR: 任意(例:x.x.x.x/32 管理操作端末のアクセス元グローバルIP)
  • PCSConfigData: 何も変更しない

簡単ですね。VPCを新規作成しないものについては別途ブログにしたいと思います。

次へを2回ほど押します。

確認画面が来たら確認し構築します。

Pulse Connect Secureの設定

Pulse Connect Secureのログイン方法 CloudFormationで構築したあと、スタックの「出力」でManagementAddressで管理者アクセス用グローバルIPアドレスを控えます。

ManagementAddress   Public IP address: x.x.x.x Private IP address: 10.20.3.x

ブラウザで以下のアドレスにアクセスします。

https://<ManagementAddress Public IP address>/admin

Webブラウザを起動し、ログイン用URLにアクセスします。「セキュリティ証明書が信頼できない」というメッセージがでますが「続ける」をクリックします。さきほど設定した管理者用のユーザーとパスワードを入力してログインします。

SSL-VPN(Pulse Connect Secure)のクライアント用接続設定

以後は、上記でログインしたPulse Connect Secureの管理者ページでの設定となります。 これから設定する各内容について以下となります。

設定項目 設定名 備考
User Roles RemoteUserRole 役割
Resource Policies IPPool 10.242.10.1-10.242.10.254 リモートアクセス時の払い出しIPアドレス
Auth.Servers LocalAuth ローカル認証用のサーバ作成
User kazuki SSL-VPNリモートアクセスのユーザ作成
User Realms Remote_Realm 認証サーバとロールの関連付け
Signing In 認証サーバとロールの関連付け

User Role作成

Users > User Roles に移動します。 New Role をクリックします。

名前(Name)を入力し利用する機能(Access features)のVPN Tunneling のチェックをオンにして Saveします。

Resource Policies作成

Users > Resource Policies > VPN Tunneling > Connection Profiles に移動 New Profile...をクリックします。

名前(Name)にIPPool 割り当てる IP アドレスを入力します。Name を ConnectionProfiles_IPv4Pool、「IPv4 address pool」に10.242.10.1-10.242.10.254にします。

そのほかは変更せず、Save Changesをクリックします。

Auth.Servers作成

Authentication > Auth. Servers に移動します。 New(Select server type)からLocal Authenticationを選び、New Serverをクリックします。

名前(Name)、必要に応じてオプションを設定し、Saveします

Authentication > Auth. Servers > LocalAuth > Users のタブができるのでクリックします

New...をクリックし、ユーザ作成します。 ユーザ名(Username)、パスワード(Password)および確認パスワードを入力し、Saveをクリック

Realmの作成

Users > User Realms に移動

New Authentication Realm をクリックし、名前(Name)をRemote_Realmを入力して LocalAuth を選択しSaveをクリック

Users > User Realms > Realms_Remote > Role Mapping が表示されます。

マッピングルールを作成します。New Rule...をクリック

名前にRemote_Realm_RemoteUserRole_Mappings

kazuki に一致した場合にロール(RemoteUserRole)を割り当てるように設定します。

ルールを満たした場合に割り当てるロールとして、RemoteUserRoleをAddしてSaveします。

ユーザログイン用のSign-Inページ作成

Authentication > Signing In > Sign-in Pages に移動します

New Page...をクリック

名前(Name)、リモートユーザのログイン画面に表示させたいメッセージを入力

Name を 「Employee Sign-In Page」 Welcome message に「### Remote User Only ###」とSaveします

Authentication > Signing In > Sign-in Policies に移動します

New URL...をクリック

Sign-in URLに「*/cm-sign/」と入力し

作成した Remote_Realms を選択し、Addをクリックし追加します。

サインインページが作成されたことを確認

サーバ証明書設定

System > Configuration > Certificates > Device Certificate

用意したSSLサーバ証明書をアップロードします。 PEM形式の場合は2個目の証明書ファイルとキーファイルが別アップロードとなります。

インターフェイス指定先の設定画面をキャプチャー忘れましたが、結果画面でどこのインターフェイスに適用されたか確認できます。

VPC内のサーバとの通信許可のため、Security Group変更

セキュリティグループのPulseSecure-PCS-IntSGにVPCのCIDRアドレスからのインバウンド通信許可して、VPC内インスタンスとSSL-VPNクライアントと接続できるようにVPC10.20.0.0/16からのインバウンド通信を許可します。

DNS設定

Pulse Connect Secureのユーザ向け接続先についてCloudFormationで構築したあと、スタックの「出力」の管理者アクセス用グローバルIPアドレスをDNSのAレコードを設定します。Route 53を利用すると簡単だと思います。

ExternalAddress Public IP address: y.y.y.y Private IP address: 10.20.2.x

DNS設定(Route53)例

y.y.y.y Aレコード vpn.kajihiroyuki.example.jp

ユーザ向け接続先URL例 以下のようになります。

https://vpn.kajihiroyuki.example.jp/cm-sign/

ブラウザで接続すると簡単にSSL-VPN接続できるのですが、長くなったのでWindowsのVPNクライアントの接続部分について別ブログを書きます。

参考元

Pulse Connect Secure Virtual Appliance on Amazon Web Services Deployment Guide Release 9.0R1

感想

(数年ぶりにPulse Connect Secureを触ったので、手間取ったのは内緒です。) Pulse Secureを利用している会社様で、AWS上に構築することで導入しやすくなると思います。また設定画面を見たところ、以前触れていたところより機能が増えていて驚きました。 設定箇所が多いですが、その分、いろいろな制御が可能です。追々別なブログで機能紹介を書いていきたいと思います。WindowsのVPNクライアントの接続部分について追加のブログを書きましたら、こちらにリンクを追記掲載します。 今回の構成をベースに、応用としてAWSとオンプレ間がDirect Connectで接続済みですと、Pulse Connect Secure経由でオンプレへの通信も可能と思います。