KNOWLEDGE - COLUMN ナレッジ - コラム

【エバンジェリスト・ボイス】パフォーマンスとセキュリティに満足するリモートアクセス ~Cloudflare Access~

サイバー・セキュリティ・ソリューション(CSS)部
エバンジェリスト 内山 史一     IMG_9334_385x404

こんにちは。サイバー・セキュリティ・ソリューション部エバンジェリストの内山です。

前回 【エバンジェリスト・ボイス】柔軟な働き方を支える、エンドポイントセキュリティとは  にて、テレワークのような柔軟な働き方を実現するための一要素として、最近のエンドポイントセキュリティ( NGAV+EDR )をご紹介しました。
今回は、テレワーク環境にはなくてはならない リモートアクセス をテーマに取り上げようと思います。
リモートアクセスの方式には幾つかありますが、本社やデータセンターに配置した VPN 機器を経由し、社内リソースにアクセスする方式が主流ではないかと思っています。
この VPN 機器を経由したリモートアクセスには幾つか課題があるのはご存知でしょうか。

リモートアクセス VPN は今の時代にマッチしているのだろうか
クラウドの積極的な活用、そしてモバイル端末を活用したテレワークが浸透しつつあります。
特に新型コロナウイルスの対応により、平日の業務を自宅で行うことが推奨されるようになりました。
これにより、リモートアクセス VPN の利用ユーザー数が増加し、情報システム担当者にとって、パフォーマンスやユーザーエクスペリエンスの面で頭を悩ます事態が生じることもあろうかと思います。
ここで、リモートアクセス VPN の課題を整理してみましょう。

図1_1242x698

1 :リモートアクセス VPN の課題

リモートアクセス VPN には、大きく分けて 「パフォーマンス」 「セキュリティ」 「複雑さとコスト」 に課題があります。

【パフォーマンス面の課題】
例えば、リモートユーザーがクラウドにアクセスするトラフィックは、 VPN 機器を経由して本社もしくはデータセンター内のセキュリティスタックで検査された後にインターネットへルーティングされ、クラウドから同様のルートを経てリモートユーザーに戻ってきます。
クラウドへのアクセスルートが遠回りしてしまっていると言えますが、このようなネットワークトラフィックの非効率性と、増加するリモートユーザーによって、レイテンシ(遅延)が発生しやすい状況にあると考えられます。

【セキュリティ面の課題】
VPNによってリモートユーザーまで企業ネットワークが延伸されました。
VPN経由で内部ネットワークに接続されたリモートユーザーは、自身の権限において自由に社内リソースにアクセスできる便利な環境です。
でも、マルウェア( WannaCry 等)に感染した PC VPN 経由で内部ネットワークに接続した場合、この便利な環境は一変してラテラルムーブメント(水平展開)が可能な環境になってしまいます。
リモートユーザーの増加と相まって、攻撃者にとってはアタックサーフェス(攻撃対象可能な領域)が拡大している状況にあると言えます。

また、少し横道に逸れてしまいますが、国内において VPN 機器の脆弱性を狙った攻撃通信が観測されていること [1][2] 、新型コロナウイルス対策を受けて、攻撃者が組織の脆弱性を探る動きが活発化される懸念がありますので、今一度、自組織の対策状況 [3] を見直してみるべきでしょう。

【複雑さとコストの課題】
リモートユーザーの接続規模やレイテンシによっては、 VPN 機器の負荷分散や故障対策を考慮した構成にする必要がでてきますので、ネットワーク構成の複雑さとコストや管理リソースの増大が見込まれます。
また、 VPN 機器は導入して終わりではなく、前述のような脆弱性を解消するアップデート対応といった保守メンテナンス作業をなくすことができず管理負荷がかかります。

前述のような課題を解消することが、クラウドの積極的な活用をより促し、働く環境の柔軟性の維持・拡張につながっていくことでしょう。
個人の考えではありますが、パフォーマンスやセキュリティ、そしてユーザーエクスペリエンスの面で、リモートアクセス VPN は今の時代にそぐわない部分があり、そこが今後ますます無視できなくなると考えています。

シンプルにパフォーマンスとセキュリティを実現する一つの解
では、どうすれば良いのでしょうか。
このパフォーマンスとセキュリティを実現する一つの解があります。
今回、ご紹介するのは Cloudflare Access [4] というソリューションです。
Cloudflare はご存知の方もいらっしゃると思いますが、コンテンツデリバリネットワークや DDoS 攻撃対策等のインターネットセキュリティサービス、そして DNS サービス (1.1.1.1) [5] を提供する企業です。
フリーミアムモデルの提供サービスが特徴的ですね。
さて、 Cloudflare Access ですが、一言で言えばオンプレミスや IaaS の社内リソースに対し、 VPN を利用せずにどこからでも安全なアクセスを実現するソリューションです。
昨今、「ゼロトラストセキュリティ」というキーワードが脚光を浴びていますが、この Cloudflare Access は企業や組織の「ゼロトラストセキュリティ」を実現するための一つの手段になりうるものです。

図2_1241x698

2 VPN に代わり社内リソースにアクセスするアプローチ

では、図 3 をもとに Cloudflare Access の仕組みを見ていきましょう。
図3_1244x699

3 Cloudflare Access の仕組み

1.リクエスト
リモートユーザーが Cloudflare Access で保護された社内リソースの URL へブラウザでアクセスします。クライアント PC にはエージェントは不要です。(後述の RDP 接続にはエージェントが必要)

2.IDプロバイダー認証
リモートユーザーが選択した ID プロバイダーで認証します。自分のメールアドレス宛に One-Time Pin を発行する OTP 認証も選択することができます。

3.識別と認可
認証が成功すると、 ID プロバイダーはアクセストークンを発行し Cloudflare へ共有します。 Cloudflare は、アクセストークンを使用しユーザー情報(メールアドレス、名前など)を取得します。次に Cloudflare Access は、ポリシーを適用しリモートユーザーのリクエストを許可するか判定します。

4.リクエストの中継
リクエストが許可されると、 Cloudflare Access はリバースプロキシとして社内リソースにリクエストをリダイレクトします。リモートユーザーのリクエストが社内リソースへ到達します。

ここでリモートアクセス VPN の課題がどのように解消されているか、 Cloudflare Access のメリットを以下のとおり整理してみました。

【パフォーマンスの向上】
Cloudflare を経由したダイレクトなアクセスになりシンプルなネットワークが実現
Cloudflare の分散ネットワークとインテリジェントなルーティングにより、ユーザーのパフォーマンスが向上

【セキュリティの強化】
・ユーザーが社内ネットワークに接続することなく、社内リソースへアクセス
・ラテラルムーブメントによる他の社内リソースへのアクセスを排除
・ポリシー制御により許可されたユーザーだけが社内リソースへアクセス
・社内リソースを Cloudflare Access の背後に配置し攻撃者から隠蔽
・複雑なネットワークセグメンテーションを必要とせず、社内リソース単位のセグメンテーションが可能

【複雑さとコストの解消】
・リモートアクセス VPN の代用とすることで VPN 機器のコストを削減
VPN 機器の利用を必要最小限に縮小し、オンプレミスの管理コストを抑制

ポイントは自組織で所有・管理する VPN 機器やインバウンドのセキュリティスタックの機能を、スケールする CLoudflare の分散ネットワーク基盤に任せることによって、コストを削減しつつパフォーマンスやセキュリティの向上を図ることにあります。

如何でしょうか。 Cloudflare Access がリモートアクセス VPN の代替手段になりうることがご理解いただけたかと思います。

社内リソースへシンプルに、そしてスマートにアクセスしてみる
それでは、 Cludflare Access を使って社内リースへ如何に簡単にアクセスできるか見ていきましょう。
シンプルかつスマートをイメージしてもらうには Web アプリケーションへのリモートアクセスが最適なのですが、本稿では社内ネットワークにある Windows ホストへの RDP 接続を例に挙げて紹介します。

まず、必要なものは Cloudflare のアカウントとドメインです。
ドメインは新規で取得するか、既存ドメインを Cloudflare DNS に権限移譲します。
本稿ではドメインを Cloudflare DNS に権限移譲しサイト登録が終わっていること、ならびに Argo Smart Routing [6] が有効化されている前提でお話しを進めていきます。

それでは、 Cloudflare のダッシュボードにログインします。
4 のダッシュボードは英語表示ですが、日本語表示もありますので英語に不慣れな方にも安心です。
図4_1862x814

4 Cloudflare ダッシュボード

ダッシュボード上部の [Access] をクリックし、 Windows ホストにリモートアクセスするためのポリシーを作成します。
図5_1123x778

5 Access Policy の作成

5 では [Outside office] Group Everyone を許可にしていますが、 e-mail IP レンジ等で制御することも可能です。

次に、リモートアクセス先の Windows ホストにて、 Cloudflare のサイトから Cloudflared をダウンロードします。 [7]
Cloudflaredは、この Windows ホストが Argo Tunnel を使って Cloudflare ネットワークにセキュアに接続するためのサービス(またはデーモン)です。
Argo Tunnel は、 Windows ホストとの通信を暗号化し、外部の攻撃から安全に保護するためのトンネルです。
図6_1062x411

6 :ダウンロードした cloudflared.exe

Windowsホストにて、以下コマンドを実行し Argo Tunnel を起動します。
図7_1094x198

7 Argo Tunnel の起動

ブラウザが立ち上がってきますので、 Cloudflare にログインします。
ブラウザが自動で立ち上らない場合、図 7 のコマンドラインにある URL をブラウザにコピーして起動します。
Cloudflareにログイン後、 Argo Tunnel を接続するドメインを選択します。
図8_1413x474

8 Argo Tunnel に接続するドメインの選択

[Authorize] をクリックし、 Argo Tunnel の接続承認を行います。
図9_1271x281

9 Argo Tunnel の接続承認

リモートサクセス先の Windows ホストに Argo Tunnel の証明書がダウンロードされますので、 C:\Users\ ユーザー名 \.cloudflared に格納します。
図10_1371x586

10 Argo Tunnel の証明書

都度、 Argo Tunnel を起動するのも手間ですので、 Cloudflared の自動起動を行います。
以下コマンドを実行し、 Cloudflared のサービスをインストールします。
図11_1069x69

11 Cloudflared のインストール

以下コマンドを実行し、インストールしたサービスを起動します。
図12_862x28

12 Cloudflared のサービス起動

サービスの自動起動が終わりましたので、以下コマンドで Argo Tunnel を起動します。
今回は Windows ホストへ RDP 接続しますので、 RDP の標準ポート 3389 を指定します。
RDP ポートを変更している場合、変更したポートをコマンドで指定します。)
図13_1199x647

13 Argo Tunnel の起動

複数の冗長化されたトンネルが Cloudflare ネットワークに接続されました。

さて、ここからはリモートアクセスするクライアント PC の準備です。
まずは、リモートアクセス先の Windows ホストと同様、 Cloudflare のサイトから Cloudflared をダウンロードします。
以下コマンドを実行し、 Cloudflare に接続します。
コマンドでは localhost:2020 と指定していますが、ポートは任意のもので構いません。
図14_1322x90

14 Argo Tunnel Cloudflare ネットワークへの接続

コマンドを実行すると、クライアント PC localhost で指定したポート 2020 listen 状態になります。

それでは、いよいよ Windows ホストに RDP 接続します。
リモートデスクトップを起動し、クライアント PC localhost のポート 2020 を指定し [ 接続 ] をクリックすると、リモートアクセス先の 3389 へポートフォワードされます。
図15_672x479

15 RDP 接続

ブラウザが起動し、 ID プロバイダーの選択画面が表示されます。
今回は One-Time Pin の認証を選択します。
One-Time Pin 発行先に自分の email を指定し、 [Send me a code →]をクリックします。
図16_572x667

16 ID プロバイダーの選択

なお、既存の ID プロバイダーを活用し、 CLoudflare ネットワークで認証を行うこともできます。
Google、 G Suite Facebook Okta Onelogin AzureAD 等、主要 ID プロバイダーをサポートしています。

即座に One-Time Pin が発行され、メールで送られてきますので、メールにある One-Time Pin をコピーして、認証画面に貼り付けて [Sign in] をクリックします。
図17_521x716

17 ID プロバイダーの認証

ブラウザが起動し、 One-Time Pin による認証が成功したことを示す画面が表示されます。
このブラウザ画面自体は閉じてもリモートアクセス先の Windows ホストの認証に影響はありません。
図18_1797x647

18 :認証成功の通知

上記ブラウザ画面の表示と同時に、リモートアクセス先の Windows ホストから認証を求められるので、資格情報を入力し認証を行います。
図19_679x545

19 :リモートホストの資格情報入力

リモートアクセス先の Windows ホストに RDP 接続ができました。
リモートデスクトップ起動後、体感的に全くストレスを感じることなく、高速かつ安全に Windows ホストにアクセスすることができました。
図20_1920x1080

20 :リモートホストのデスクトップ

一般ユーザーが社内リソースへ RDP 接続することは殆どないかもしれませんが、実運用では一般ユーザーがクライアント PC でコマンドを実行しなくても済むようにショートカット化するといった工夫が必要でしょう。

本稿では RDP 接続を例にご紹介しましたが、 Cloudflare Access 経由で社内 Web アプリケーションにアクセスする際が、最も利便性とユーザーエクスペリエンスの高いアクセスを実感できると思います。
社内 Web アプリケーションの場合、クライアント PC Cloudflared をインストールする必要がなく、ブラウザのみで高速かつ安全なアクセスができます。
図21_1696x828

21 Access App Launch

ちなみに、このようなAccess App Launch もあり、これをブラウザの bookmark に登録しておくことで、ブラウザからスマートに社内 Web アプリケーションにアクセスすることもでき、とても便利です。

他にも、 SMB 経由でのファイル共有、 SSH や任意のプロトコルでも社内リソースへ安全にアクセスすることができます。

本質的な課題を解決する手段として
昨今の情勢でテレワークのリモートユーザーが多くなり、リモートアクセス VPN 経由による社内リソース(オンプレミス、仮想インフラ、クラウド)へのアクセスに不満を感じる方も多くいらっしゃるでしょう。
本稿では、 Cloudflare Access を紹介しましたが、これはあくまでも一つの手段です。
リモートアクセスを通じて実現したい目的に対し、本質的な課題を解決する手段としてソリューションを選択して頂きたいと思います。
そのソリューションとして、本稿でご案内した Cloudflare Access を選択し、パフォーマンスとセキュリティの良さを実感いただけると幸いです。

それでは、次のエントリーでお会いしましょう!

------------
脚注および参考情報
[1] JPCERT/CC:複数の SSL VPN 製品の脆弱性に関する注意喚起

[2] JPCERT/CC: Pulse Connect Secure の脆弱性を狙った攻撃事案

[3] Cybersecurity and Infrastructure Security Agency: Enterprise VPN Security

[4] Cloudflare: Cloudflare Access

[5] Cloudflare: 1.1.1.1

[6] Argo Smart Routing

   Cloudflare のプライベートネットワークを使用し、混雑の回避と信頼性の高いパスでルーティングをすることにより、ネットワーク配信の高速化を図る

[7] Cloudflare: cloudflared のバイナリ・パッケージの格納先


当サイトの内容、テキスト、画像等の転載・転記・使用する場合は問い合わせよりご連絡下さい。

エバンジェリストによるコラムやセミナー情報、
IDグループからのお知らせなどをメルマガでお届けしています。

メルマガ登録ボタン

内山 史一

株式会社インフォメーション・ディベロプメント 先端技術部 エバンジェリスト

この執筆者の記事一覧

関連するナレッジ・コラム

地味に見えて優秀!マネージドプレフィックスリストでアドレス管理を効率化

DockerでJupyterLabの環境を作ろう

残された攻撃の痕跡を追え! ~Post-Exploitationで起きていること~