10.11 SecureNAT 機能を用いた権限不要のリモートアクセス - SoftEther VPN プロジェクト

10.11 SecureNAT 機能を用いた権限不要のリモートアクセス

    SoftEther VPN Server および SoftEther VPN Bridge に搭載されている「SecureNAT」機能を使用すると、従来はシステム管理者権限が必ず必要であったような「リモートアクセス」について、管理者権限を使用することなく同等の機能を実現することができるようになりました。ここでは、「SecureNAT 機能」を用いることによって、LAN に対して遠隔地からリモートアクセスする方法について解説します。

    10.11.1 SecureNAT 機能の活用による便利な利用方法

    SecureNAT 機能について

    「SecureNAT 機能」とは、「3.7.1 SecureNAT とは」 で解説されているように、ユーザーモードで動作する TCP/IP スタックと仮想 NAT 機能・仮想 DHCP サーバー機能によって構成されています。特に、仮想 NAT 経由で IP アクセスをする際に、自動的にその通信内容を、ユーザーレベルで動作させることができる Socket API を用いて目的のホストに中継する、技術的に非常に高度かつ興味深い機能 があります。

    従来技術ではリモートアクセスすることができないような厳しいセキュリティ環境の LAN へのリモートアクセス

    10.4 一般的なリモートアクセス VPN の構築」 で解説したような方法で、遠隔地から既存の LAN に対してリモートアクセスができるようにするために VPN Server を設置する場合は、そのリモートアクセスしたい先の既存の LAN 上に、VPN Server をインストールすると共に、その VPN Server をインターネット側から見える場所に設置し、かつ VPN Server の「ローカルブリッジ接続」機能を用いて仮想 HUB とローカルの LAN との間を接続する必要がありました。このような設定を行うことで、リモートからその既存の LAN に対してリモートアクセスすることが可能になりますが、設定・構築においてはシステム管理者 (ネットワーク管理者) の権限を使用しなければならないところが、以下のように 2 箇所あります。

    1. VPN Server の「ローカルブリッジ接続」機能を用いて、仮想 HUB とローカルの LAN との間をブリッジ接続するためには、VPN Server をインストールするコンピュータのシステム権限、またはシステム管理者権限としてサービスモードまたはユーザーモードとして vpnserver プロセスを動作させなければなりません。
    2. VPN Server に対してインターネット側からアクセス可能にするためには、インターネットに接続されている「グローバル IP アドレス」を 1 つ使用するか、または NAT やファイアウォールなどの設定を変更して、インターネット側から VPN Server に対する「ポート転送」を行う必要がありますが、これらの設定を行うためにはネットワーク管理者の権限が必要です。

    これらの問題があるために、たとえば自分が管理している装置を設置している LAN に対して、リモートから VPN 接続して、その LAN 上の自分が管理している装置に遠隔アクセスして安全かつ楽に管理を行いたいというような場合でも、その接続先ネットワークにおけるシステム管理者やネットワーク管理者としての権限を使用することができない場合は、VPN Server を用いた通常の方法でのリモートアクセス VPN サーバーの設置は行えません。

    10.11.2 SecureNAT 機能を使用した驚くほど簡単で安全な権限不要のリモートアクセス

    しかし「SecureNAT 機能」を用いると、以下のような条件を全て満たす LAN 環境に対して、リモートから簡単にその LAN に対してリモートアクセスすることができるようになります。なお、SecureNAT 機能に関する詳細は 「3.7 仮想 NAT および仮想 DHCP サーバー」 を参照してください。

    リモートアクセスしたい先の LAN 上に、システム管理者権限では使用することができないが、一般ユーザー権限としてログオンすることができる Windows / Linux / FreeBSD / Solaris または Mac OS X の安定して稼動しているコンピュータが 1 台ある。

    その LAN に対して外部からリモートアクセスすることに関しては、ネットワーク管理者およびシステム管理者に事前に説明し、承諾を得ている。

    上記のような環境をすべて満たしている場合、LAN 全体がプライベート IP アドレスの中にあり、インターネットに対しては NAT / ファイアウォールまたはプロキシサーバーを経由してアクセスしなければならないような、通常は外部からその LAN へのリモートアクセスをすることが不可能であると思えるようなネットワークに対しても、SoftEther VPN 固有の革新的な技術である SecureNAT 機能を適切に使用することによって外部から自由かつ安全にリモートアクセスすることができるうよになります。

    10.11.3 具体的な構成例

    ネットワーク構成例

    ここで解説するリモートアクセスの方法について分かりやすくするため、以下の図のようなネットワーク構成例について解説します。

    10-11-1.png

    ネットワーク構成

    まず、ファイアウォールや NAT などで保護されているため、インターネット側からのアクセスが一切不可能なセキュリティが高いネットワークがあり、そのネットワークの IP アドレスは 「192.168.1.0/24」であるとします。ただし、その LAN からはファイアウォールや NAT、プロキシサーバーなどを経由してインターネット上の Web サイトを閲覧することができるものとします。また、そのネットワーク内のコンピュータである「192.168.1.1」というコンピュータには Linux がインストールされており (Windows や Solaris など、VPN Bridgeが動作する他のオペレーティングシステムでも構いません)、root 権限は持っていないが一般ユーザーとしてログインして使用することが許可されているものとします。また、「192.168.1.10」に保守しなければならないレーザープリンタが接続されているものとします。

    次に、会社内や自宅などの固定 IP アドレスを利用することができる場所に事前に VPN Server をインストールしたコンピュータを 1 台設置しており、適切なライセンスキーがすでに登録済みであると仮定します。なお、この VPN Server に対しては、インターネットからは、たとえば 「130.158.6.51」という IP アドレスでアクセス可能であると仮定します。

    目標

    上記のネットワーク構成例において SecureNAT を適切に活用することによって実現したい目標は、次のとおりであるとします。

    • 通常、インターネット側からのアクセスがすべて遮断されている「192.168.1.0/24」のネットワーク内に設置した「192.168.1.10」のレーザープリンタに対して、外部 (インターネット) 側からリモート接続して遠隔保守を行うことができるようにする。
    • 「192.168.1.0/24」の管理担当者には事情を正確に説明し、事前に承諾を得ているが、費用が 掛かるなどの問題によってファイアウォールなどの設定の変更は困難であるので、ファイアウォールなどの設定変更は行いたくない。

    次に、SecureNAT 機能を活用して、これらの目標を達成して 192.168.1.10 のレーザープリンタを、リモートから保守することができるようにする方法について具体的に解説します。

    事前の準備

    「130.158.6.51」という IP アドレスで動作しているインターネット上の VPN Server は、事前に自社や自宅などで構築し設定しておいた VPN Server コンピュータです。この VPN Server に「仮想 HUB」を作成し (デフォルトの仮想 HUB である "DEFAULT" でも問題ありません)、その仮想 HUB に後から VPN Bridge で接続するために「ユーザー」を作成しておきます (たとえば "test" というユーザーをパスワード認証モードで作成したと仮定します)。VPN Server の設定方法については、「第3章 SoftEther VPN Server マニュアル」 を参照してください。

    10.11.4 リモートアクセス先 LAN での VPN Bridge の起動

    VPN Bridge の設置と起動

    まず、少なくとも 1 度は、リモートアクセス先の LAN (つまり今回の例で保守対象のレーザープリンタである「192.168.1.10」が所属している LAN) に 、物理的にアクセスすることができる場所に足を運び、初期設定を行う必要があります。

    ここで行う必要があるのは、その LAN に接続されている「192.168.1.1」という IP アドレスの Linux コンピュータに、一般ユーザーとしてログインし、SoftEther VPN Bridge をインストールすることです。

    VPN Bridge は、VPN Server に接続する目的であれば無償で使用することができるソフトウェアです。VPN Bridge の Linux 用のインストール用 tar.gz を「192.168.1.1」のコンピュータ上で展開し、通常の VPN Bridge をインストールする際と同様に、「vpnbridge」という実行可能ファイルを生成します (詳しくは 「9.3.3 必要なソフトウェアおよびライブラリの確認」、「9.3.4 パッケージの解凍」 および 「9.3.5 実行可能ファイルの生成」 を参照してください)。

    今回は 「192.168.1.1」のコンピュータでは、一般ユーザー権限しか所有していないことを仮定していますので、VPN Bridge はユーザーモードで起動する必要があります。具体的には、以下のように vpnbridge に対して、直接「start」オプションを付けて実行します。詳しい設定方法については 「5.2.2 ユーザーモード」 を参照してください。

    $ ./vpnbridge start 
     

    これにより、「192.168.1.1」のコンピュータ上では VPN Bridge が起動することになります。なお、Windows 版の VPN Bridge については start オプションではなく「/usermode」オプションを使用して起動します。

    VPN Bridge の初期設定の開始

    次に、「VPN サーバー管理マネージャ」、またはコマンドライン管理ユーティリティ「vpncmd」を用いて、その VPN Bridge の設定を行います。ここでは LAN 上に別に Windows 端末がある場合を仮定して、Windows から VPN サーバ管理マネージャを用いた設定方法について解説しますが、ない場合は vpncmd を使用して UNIX 系端末から同様の操作を行うこともできます。vpncmd の使用方法については 「第6章 コマンドライン管理ユーティリティマニュアル」 を参照してください。

    まず、「VPN サーバー管理マネージャ」を起動してください。

    10-11-2.png

    VPN サーバー管理マネージャ

    次に、[新しい接続設定] ボタンをクリックすると表示される [新しい接続設定の作成] 画面で、[ホスト名] に先ほど VPN Bridge を動作させたコンピュータの IP アドレスである「192.168.1.1」を入力します。そして [OK] をクリックします。

    10-11-3.png

    VPN Bridge への接続設定の作成

    新しく作成された接続設定をダブルクリックすると、VPN Bridge への管理接続が行われ、管理画面が表示されます。なお、最初に VPN Bridge に接続した場合はここで「管理パスワードを設定しますか?」というメッセージが表示されますので、初期パスワードを設定してください。

    10-11-4.png

    VPN Bridge へ接続完了

    SecureNAT 機能の有効化

    SoftEther VPN Bridge の管理画面で [仮想 HUB の管理] ボタンをクリックすると、[仮想 HUB の管理 - BRIDGE] ウインドウが表示されます。

     

    10-11-5.png

    仮想 HUB の管理画面

    ここで、[仮想 NAT および仮想 DHCP サーバー機能] ボタンをクリックします。すると、[仮想 NAT および仮想 DHCP 機能 (SecureNAT) の設定] 画面が表示されます。この画面の注意書きをよくお読みいただいた後、 [SecureNAT 機能を有効にする] ボタンをクリックします。

    10-11-6.png

    SecureNAT 機能の有効化

    その後 [閉じる] ボタンをクリックします。すると、[仮想 HUB の管理 - BRIDGE] ウインドウに戻ります。

    インターネット上の VPN Server へのカスケード接続の設定

    次に [カスケード接続の管理] ボタンをクリックして、[新規作成] ボタンをクリックします。すると、以下のような [新しい接続設定のプロパティ] ウインドウが表示されます。

    10-11-7.png

    インターネット上の VPN Server へのカスケード接続の設定

    [新しい接続設定のプロパティ] ウインドウでは、以下のように必要項目を入力します。

    • [接続設定名] 項目
      たとえば "ブリッジ" などの任意の名称を指定します。
    • [ホスト名] 項目
      事前にインターネット上に設置しておいた VPN Server コンピュータの IP アドレス (この例の場合は「130.158.6.51」) と入力します
    • [ポート番号] 項目
      事前にインターネット上に設置しておいた VPN Server コンピュータのリスナーポートのうちの 1 つを指定します。多くのファイアウォールやプロキシサーバーを経由したい場合は、443 番を使用することを推奨します。
    • [仮想 HUB 名] 項目
      事前にインターネット上に設置しておいた VPN Server に作成してある仮想 HUB 名を指定します。
    • 経由するプロキシサーバーに関する項目
      「192.168.1.0/24」のネットワークからインターネットにアクセスする際に、HTTP プロキシサーバーまたは SOCKS プロキシサーバーを経由しなければならない場合には、経由するプロキシサーバーに関する情報を設定します (「4.4.1 適切な接続方法の選択」 を参照)。
    • [認証の種類]
      事前にインターネット上に設置しておいた VPN Server の仮想 HUB に登録してあるユーザー (この例では "test" ユーザー) の認証方法を指定します。通常は "標準パスワード認証" を使用すれば良いでしょう。
    • [ユーザー名]
      VPN Server の仮想 HUB に登録されているユーザーのユーザー名 (この例では "test" ユーザー) を正確に入力します。
    • [パスワード]
      VPN Server の仮想 HUB に登録されているそのユーザーのユーザー認証に必要なパスワード (事前登録しておいたもの) を正確に入力します。

    すべての項目を正しく入力したら、[OK] ボタンをクリックします。すると、[BRIDGE 上のカスケード接続] ウインドウに戻ります。また、カスケード接続一覧に、現在作成した新しい接続設定が増えています。

    インターネット上の VPN Server へのカスケード接続の開始

    次に、先ほど作成した新しい接続設定をクリックして [オンライン] ボタンをクリックしてください。しばらくして接続設定の状態が [オンライン (接続済み)] になった場合は、インターネット上に事前に用意しておいた VPN Server の仮想 HUB への接続に成功しています。もし何らかのエラーが発生した場合は、表示されるエラーの内容を参考にしながら問題を解決してください 。

    すべての設定が完了しカスケード接続が接続状態になったら、VPN サーバー管理マネージャを終了します。

    この状態で、リモートアクセス先の LAN (192.168.1.0/24) における必要な設定は、すべて完了していることになります。

    10.11.5 リモートアクセスの実施

    ここまでの設定が完了していれば、インターネット上のどこにいても、先ほど設定した VPN Bridge が動作しているコンピュータを経由して、192.168.1.0/24 のネットワークとの通信を行うことが可能です。

    インターネットに接続されているコンピュータに VPN Client をインストールし、VPN Client から VPN Server (例では「130.158.6.51」) の仮想 HUB に接続すると、その仮想 HUB には 先ほど設定した VPN Bridge (192.168.1.1) によって動作している SecureNAT の仮想 NAT 機能と仮想 DHCP サーバー機能が、同一セグメントとして接続しています。

    したがって、この仮想 HUB に接続した VPN Client の仮想 LAN カードは、自動的に「192.168.30.0/24」の仮想 HUB 内部でのみ通用するプライベート IP アドレスの割り当てを仮想 DHCP サーバーから受け取ると共に、デフォルトゲートウェイが SecureNAT の仮想ホストに自動的に設定されます。これにより、VPN Bridge で動作している SecureNAT 機能を経由して、その VPN Bridge が動作しているコンピュータが所属しているネットワークに対して TCP/IP パケットを送受信することが可能になります。

    図10-11-8 SecureNAT 経由でのリモートアクセスの実現

    VPN Client が VPN Server に接続し、VPN Bridge 上で動作している SecureNAT 機能による IP アドレスの割り当てが完了したことを確認したら、目標であった「192.168.1.10」のレーザープリンタに接続し、まるでリモートアクセス先の LAN に直接コンピュータを接続しているのと同様の、自由な通信ができることを確認してください。この通信はすべて VPN Bridge 内で動作している仮想 NAT 機能を経由して、ユーザーモード TCP/IP スタックが自動的にすべてのアクセスをストリーム化し、Socket API を使用してユーザーモード権限だけで物理的なネットワーク上のホストと通信した結果を受け取っているのです。

    なお、VPN クライアントコンピュータにおいて、VPN Bridge が提供する仮想 NAT 側がデフォルトゲートウェイになっているため、リモートアクセスのための VPN に接続している状態でインターネットへアクセスすると、直接インターネットに対して通信を行わずに、リモートアクセス先の LAN を経由したものになってしまう場合がありますのでご注意ください (特にリモートアクセス先の LAN が他社の LAN である場合は、インターネットとの間の通信内容を第三者に読み取られたり、改ざんされたりする可能性が高くなります)。

    10-11-9.png

    SecureNAT 経由でのインターネットへのアクセス時のパケットの流れ

    10.11.6 SecureNAT 機能使用時のセキュリティについて

    今回の例のような形で、SecureNAT 機能と VPN Bridge を組み合わせて使用したリモートアクセスは、以下のような点において非常に安全です。

    • SecureNAT 機能は、内部でユーザーモード TCP/IP スタックを持つなど非常に複雑な処理を行っていますが、これらの処理はすべてユーザー権限で実行することが可能です。したがって、今回の例のように VPN Bridge を一般ユーザー権限で起動しておくことにより、システム権限で起動する場合と比べて、もし VPN Bridge や SecureNAT 機能のプログラムコードにバッファオーバーランなどの不具合などがあった場合でも、そのユーザーの権限で実行することができる処理しか実行できないため、SecureNAT を実行しているシステム全体の完全性が保護されます。
    • 今回の例のように SecureNAT を有効にした VPN Bridge と、VPN Server を組み合わせた形態のリモートアクセス VPN を構築する場合でも、SoftEther VPN プロトコルが流れるすべての部分ではデフォルトで SSL による暗号化が行われるため、インターネット上を流しても第三者がその通信内容を解読したり改ざんしたりすることはほぼ不可能です。なお、より安全を期すためには VPN Server にカスケードする際に「サーバー証明書認証」(詳しくは 「3.4.12 カスケード接続におけるサーバー認証」 を参照) を使用してください。
    • 今回の例では、リモートアクセス先のネットワークのファイアウォールや NAT などの設定を一切変更することなく、リモートアクセスを実現することができました。一般的にファイアウォールや NAT などの設定を変更して特定のポートのみ通過させるような設定作業は、コストが掛かる上にセキュリティ上のリスクが発生するため、やむを得ない場合を除いては推奨されません。今回のようにネットワーク管理者やシステム管理者から承諾を得ることができたが、コストやセキュリティ上の問題から 、ファイアウォールや NAT などの設定を変更することが困難な場合は、SecureNAT と VPN Bridge を活用した簡易的なリモートアクセスの構築は、非常に有益な方法です。
    • SecureNAT を経由したすべての通信は、SecureNAT を動作させている VPN Bridge (または VPN Server) の仮想 HUB のセキュリティログに確実に記録されます。

    10.11.7 SecureNAT 機能の濫用時の危険性の説明

    上記で解説したように、SecureNAT 機能と VPN Bridge および VPN Server を組み合わせることにより、インターネットに何らかの形でアクセスすることができる LAN であれば、事前に適切なソフトウェアを起動しておくことにより、いつでもインターネット側からリモートアクセスすることが可能であることがわかります。特に SecureNAT 機能を使用した仮想 HUB 側から物理的なネットワーク側への通信の仕組みは従来の技術では困難であったものであり、SoftEther VPN が実用上初めて可能にした画期的な技術です。

    ただし、SecureNAT 機能は使用方法を誤ると、大きなセキュリティホールとなる可能性がありますので、その使用にあたっては十分ご注意ください。特に今回のネットワーク構成例で説明しているように、VPN 技術を用いてリモートアクセスする際は、そのアクセスにかかわるネットワークやシステムの管理者に対して事前に詳細を説明した上で承諾を得てください。また、SecureNAT 機能の動作原理や具体的な使用方法についての知識、その他 TCP/IP や NAT などに関する知識をお持ちでない場合は、絶対に SecureNAT 機能を使用しないでください。

    セキュリティ上の問題が発生する危険性がありますので、SecureNAT 機能を、特に下記のような用途には絶対に使用しないでください。

    • ネットワーク管理者から許可を得る前に、一般ユーザー権限で勝手に特定の LAN を外部からリモートアクセス可能にするような使用方法。
    • 他人が管理するコンピュータ (特に会社・大学やインターネットカフェ、官公庁、空港などの公共の場所にあるコンピュータなど) に、事前の許可を得ることなく SecureNAT 機能を有効にした VPN Bridge をインストール・設定してきておいて、後で自宅などからそのコンピュータを経由してインターネットにアクセスすることによって、そのコンピュータを踏み台などに使用するような使用方法。
    • 社内ネットワークに外部から後で侵入することを目的に、SecureNAT 機能を有効にした VPN Bridge をインストール・設定するような、悪質かつ違法性の高い使用方法。
    • その他、ネットワーク管理者やシステム管理者など、コンピュータやネットワークの管理権限を有する者による事前の許可を得ない使用。

    なお上記のような使用方法は、法律に違反する可能性があります。

    10-11-10.png

    禁止されている SecureNAT の使用方法