著者:田中麻維
大手電機メーカー系のSierに入社後、インフラエンジニアとしてLinuxサーバーの構築や保守・運用、ソフトウェアの開発業務を経験。アイティベル入社後は、IT領域の執筆などを行う。
近年のリモートワークの急速な発展により、リモートワークを実現できるVPNの需要が高まっています。これに伴い、VPNを構築する技術への需要も必然的に高まっています。VPNを構築するためにはコマンドラインでの操作が必要になる場合もあり、決して簡単なことではありません。しかし、段階的に知識を増やしていけば、VPNの構築に必要なスキルを身に付けられます。
本記事では、VPN構築の種類と構成例、VPN構築に必要な機材、VPNの構築手順を解説します。また、VPN構築後の運用についても解説しますので参考にしてください。
1. VPNとは
VPN(Virtual Private Network)とは、仮想的な専用線を構築し、暗号化や認証などの機能を使って安全な通信を実現する仕組みのことです。
暗号化によりデータの改ざんを防ぎ、認証により許可されていないアクセスを阻止することで、セキュリティ性の高い通信を実現します。また、VPNを活用することで、離れた拠点間でも端末間をプライベートなネットワークで接続できます。
VPN について、詳しくは以下の記事を参照してください。
2. VPN構築の種類と構成例
ここでは、VPN構築の種類と構成例について解説します。VPN構築の種類は大きく分けて、インターネットVPNと閉域網VPNに分類されます。VPNの種類について、詳しくは以下の記事を参照してください。
インターネットVPN
インターネットVPNは、以下の2種類があります。
- サイト間VPN
- リモートアクセスVPN
以下は、インターネットVPNの構成例です。
サイト間VPN
サイト間VPNは、特定のサイト(場所)と特定のサイト(場所)を結ぶVPNです。サイト間VPNは、各サイトにVPN機器を設置し、インターネット網内でVPNトンネルを構築します。拠点に設置されたVPN機器の下にユーザーの端末が接続されます。拠点内にいるユーザーは、VPNの存在を意識することなく、社内LANのように利用できるのが特徴です。複数の支店、オフィス間で安全な相互通信を行いたい場合に向いています。
リモートアクセスVPN
リモートアクセスVPNは、拠点に設置したVPN機器に直接、個人のPCやスマートフォンなどのVPNクライアントを接続するVPNです。拠点のVPN機器とクライアント間で個々にVPNトンネルを構築します。リモートアクセスVPNを構築するためには、拠点側のVPNとクライアント側のVPNの構築が必要となります。
リモートアクセスVPNは、クライアントの数を増やすことで柔軟にVPN接続数を増やせます。利用するクライアントの変動が見込まれる場合や、テレワークやリモートワークでの利用に向いています。
閉域網VPN
閉域網VPNは、以下の3種類があります。
- エントリーVPN
- IP-VPN
- 広域イーサネット
以下は閉域網VPNの構成例です。
閉域網VPNでは、通信事業者が提供する閉域網に構築したVPNを用いて、拠点間の接続を行います。閉域網とは、インターネットと分離されたネットワークであり、特定のユーザーのみが使用できる網です。他の回線と分離されているため、インターネットVPNよりも高いセキュリティを担保できるのが特徴です。
上記の構成の場合、本社と支社以外の外部にある従業員の端末はVPN接続できません。
エントリーVPN
エントリーVPNは、接続元からアクセスポイントまではインターネット回線を利用し、アクセスポイントから先は閉域網を用いてVPNを構築します。
IP-VPNや広域イーサネットのように完全な閉域網ではないため、IP-VPN及び広域イーサネットに比べるとコストは安くなります。
IP-VPN
IP-VPNは、通信事業者が用意した専用の閉域網を利用する方法です。レイヤー3レベルでVPNを構築するため、通信に利用できるプロトコルはIP(インターネットプロトコル)のみです。通信事業者が提供する専用線を使用するので、コストは高くなります。
IP-VPNは、極めて秘匿性の高い情報を扱う場合において、企業のニーズに合った構成であるといえます。
広域イーサネット
広域イーサネットは、イーサネットを閉域的に利用する方法です。レイヤー2レベルでVPNを構築するため、マルチプロトコル通信が可能です。LAN(ローカルエリアネットワーク)を構築する際に使用するイーサネットプロトコルを使用して、WAN(ワイドエリアネットワーク)を構築できます。具体的には、OSPF(Open Shortest Path First)、IGRP(Interior Gateway Routing Protocol)、RIP(Routing Information Protocol)などのルーティングプロトコルを使用できます。
カスタマイズ性が高く、柔軟なネットワーク設計が可能な構成です。
3. VPN構築のために必要な機材
ここでは、VPN構築のために必要な機材を解説します。
VPNサーバー
VPNサーバーは、VPNを構築するにあたって、最も中心的な役割を持つ機材です。ネットワーク上にある複数のサイトを接続し、サイト間の通信を暗号化する機能を持ちます。VPN接続を行うユーザーは、クライアントとなる端末からVPNサーバーに接続することで、インターネットや閉域網などの網を経由して、別のサイトにアクセスできます。
また、VPNサーバーを介することで、クライアントのIPアドレスはVPNサーバーのIPアドレスに置き換えられます。このため、通信を暗号化させるだけでなく、クライアントのIPアドレスを匿名化することも可能です。このように、VPNサーバーは高いセキュリティ性を保つための機能を提供します。
詳細はVPNサーバーとはの記事をご覧ください。
VPNクライアントソフトウェア
PCやスマートフォンなどのデバイス(クライアント)とサーバー間でVPN接続を確立するためにクライアントにインストールするソフトウェアです。外出先から社内ネットワークにリモートアクセスする際に利用されます。
VPNルーター
ルーターは、ネットワーク間でデータのやり取りを行うルーティングの機能を持つ機器です。VPNを構築する際には、暗号化や認証が可能なVPNルーターを用意する必要があります。
また、VPNルーターには中小企業用と大企業用の2種類があるため、用途に応じて選定しましょう。VPNルーターについて、詳しくは以下の記事を参照してください。
ファイアウォール
VPNルーターの代わりにファイアウォールを利用する場合もあります。ファイアウォールは、通信のやり取りに対してルールを設定することで、通信を許可する接続と通信を許可しない接続を制御する機能を提供します。
通信を許可しない接続を定めることで、不正なアクセスを防ぎ、安全なネットワーク通信を実現します。ファイアウォールについて、詳しくは以下の記事を参照してください。
4. 拠点側のVPNの構築手順
ここからは、リモートワークにも多く活用されているインターネットVPNのひとつ、リモートアクセスVPNに焦点を当てて構築手順を解説します。
VPNサーバーソフトウェアを使用する場合
拠点側のVPNを構築する方法は、VPNサーバーソフトウェアを使用する方法と、VPNルーターを使用する方法があります。ここでは、VPNサーバーソフトウェアを使用して、Linux(リナックス)サーバーで拠点側のVPNを構築する方法を解説します。代表的なインターネットVPNであるOpenVPNの主な設定コマンドも併せて紹介します。詳細の設定方法は公式の情報をご確認ください。
プロトコルの選定
インターネットVPNに対応しているプロトコルには、OpenVPN、IPsec、SSL-VPN、PPTPなどが存在します。
OpenVPNはオープンソースのプロトコルであり、企業や学校など広く利用されています。IPsec(Security Architecture for Internet Protocol)は、ネットワーク層で機能するプロトコルであり、暗号化や認証などの機能を備えています。
SSL-VPNはSSL(Secure Sockets Layer)を利用するプロトコルです。リモートアクセスでよく利用されています。PPTP(Point to Point Tunneling Protocol)は、古くからあるVPNプロトコルで、多くの端末に対応しているのが特徴です。ただしセキュリティ面で他のプロトコルに劣るため、最近は使われることが少なくなりました。
このように各々のプロトコルは特徴が異なります。用途に合ったプロトコルを選定しましょう。
VPNサーバーの設定
VPNサーバーを設定するためには、まずVPNサーバーのソフトウェアをLinuxにインストールします。
tar xfz openvpn-[version].tar.gz
./configure make make install
次に、設定ファイルを編集します。設定ファイルでは、VPNサーバーのネットワークアドレスとサブネットマスク、暗号化アルゴリズムなどの指定を行います。
証明書の用意
VPNサーバーが信用されたサーバーであることを証明するためには、証明書を用意する必要があります。
証明書を用意するためには、次のコマンドを実行し、CA(Certification Authority)と呼ばれる認証局を作成します。
./build-ca
次に、サーバー用の証明書と秘密鍵を生成します。
./build-key-server server
鍵交換を安全に行うため、Diffie Hellmanパラメータを設定します。
./build-dh
公式サイト:OpenVPN.JP
ファイアウォールの設定
ファイアウォールでは、VPNが使用するポートを開放する必要があります。また、VPNサーバーへの接続を許可するクライアントの設定も必要です。
このとき、VPNサーバーへの接続を許可しないIPアドレスも設定しておきます。これにより、予期せぬ接続元から接続されるリスクを低減できます。
サービスの起動
一通り設定が完了したらサービスを起動します。なお、設定内容を変更した場合は、その都度サービスを再起動する必要があります。
VPNルーターを使用する場合
VPNルーターを使用して拠点側のVPNを構築する場合は、VPN機能を搭載したルーターを用意します。VPNルーターの設定は、GUI上で行える場合もありますが、コマンドで設定するほうがより柔軟なカスタマイズが可能です。
VPNルーターの設定は、管理者権限のあるユーザーでVPNルーターにアクセスして行います。プロトコルの選定や、認証情報の設定などを行います。
VPNルーターを使用すると、VPNルーター配下のネットワークに存在するすべてのリソースにVPNを適用できます。このため、VPNサーバーソフトウェアを使用する場合に比べて、よりセキュリティ性の高いネットワークを保つことが可能です。
5. クライアント側のVPNの構築手順
ここからは、リモートアクセスVPNの場合の、クライアント側のVPNの構築手順を解説します。
クライアントソフトウェアのインストール
VPNのクライアントソフトウェアは、VPNサーバーに接続したいクライアントに個別でインストールする必要があります。インストールが完了したら、クライアントソフトウェアを起動させておきましょう。
クライアントの設定
クライアントソフトウェアで新規のVPN接続を追加し、VPNサーバーのIPアドレスの設定、VPNサーバーが存在するドメインの指定を行います。また、VPN接続に使用するプロトコルの設定や、ユーザー名やパスワードなどの認証情報の設定を行います。
証明書の用意
クライアント側の証明書は、サーバー側でクライアント証明書を作成し、クライアント証明書のCSR(Certificate Signing Request)を認証局によって署名することで用意します。CSRとは、証明書の申請のために認証局に送るリクエストのことで、リクエストが認められると正式なクライアント証明書が生成されます。以下では、OpenSSLの設定コマンド例に、証明書を用意する手順を解説します。
クライアント証明書を作成するには、次のようにコマンドを実行します。
openssl req -newkey rsa:2048 -out CSRを保存するファイル
このコマンドの-newkeyは、指定の秘密鍵を生成するオプションです。また、-outは、CSRを保存するファイルを指定するオプションです。2048ビットのRSA秘密鍵を生成して、指定したファイルにクライアント証明書のCSRを保存するコマンドという意味になります。オプションに与える値は、構築する環境に合わせて適宜指定してください。
クライアント証明書の署名を行うには、次のようにコマンドを実行します。
oopenssl x509 -req -in CSRの保存先 -signkey 認証局の秘密鍵 -out署名された証明書の保存先
このコマンドの-reqは、CSRを処理するオプションです。-inは、CSRの保存先のファイルを指定します。また、-signkeyは、CSRを署名する際に使用する認証局の秘密鍵を指定します。-outは、署名された証明書の保存先を指定します。クライアント証明書を作成する時に保存したCSRを用いて、認証局によって署名し、指定した保存先に署名されたクライアント証明書を保存するコマンドという意味になります。
VPNサーバーへ接続
設定が完了したら、クライアントからVPNサーバーへ接続します。接続時にエラーが出る、VPNサーバーへの接続がうまくいかないという場合は、ログを確認し、サーバー側の原因かクライアント側の原因か切り分けて調査を行います。
サーバー側の原因として挙げられるのは、VPNサーバーの設定ファイルの設定ミスや、VPNが使用するポートが開放されていない場合などです。クライアント側の原因として挙げられるのは、認証情報の設定ミスや、用意したクライアント証明書に問題がある場合などです。
サーバー側とクライアント側で使用するプロトコル、鍵の長さ、認証方式などが一致している必要があります。設定に差異がないか確認しましょう。
6. VPN構築後の運用
VPNは構築したら終わりではなく、構築後の運用も重要です。ここでは、VPN構築後の運用について解説します。
ネットワークの監視
VPNの構築後は、VPNサーバー及びVPNクライアントの接続の状態を監視します。通信状態は正常でも、一部のVPN接続が切断されている場合もあるため、VPNの状況も含めたすべての接続を監視する必要があります。
また、VPN上を流れるトラフィックの監視も必要です。トラフィックの監視により、通信速度といったパフォーマンスが低下している接続がないかを確認しましょう。パフォーマンスに問題があった場合、リソースの再分配を行うといった対策を行うべきです。
ログの確認
ログは、VPNサーバー及びVPNクライアントが発信するメッセージであり、VPN構築後の運用において極めて重要です。ユーザーが正常にVPNに接続した際のログだけでなく、認証に失敗した際や許可されていないユーザーからのアクセスログなど、あらゆる履歴がログで確認できます。
一見VPNが正常に動作している場合でも、外部からの不正なアクセスなどの攻撃を受けている可能性もあります。不正なログが出力されていないかを定期的に確認することも大切です。
なお、VPN機器に保存できるログの量には制限があります。古いログから順番に消えてしまうため、注意が必要です。定期的にログを確認したり、ログを保管するためのサーバーを別に用意したりして、長期的にログを保管することも検討しましょう。
定期的なセキュリティチェック
VPNの構築後は、定期的にセキュリティチェックを行う必要があります。セキュリティ上の脆弱性が見つかった場合、セキュリティ攻撃を受ける前に対策を行いましょう。
また、セキュリティパッチが公開された場合は、適宜パッチを適用し、VPNサーバー及びVPNクライアントのセキュリティ性をアップデートしましょう。
ランニングコストを意識する
VPN構築後のランニングコストも意識する必要があります。VPNは、VPNの構築に必要な機材の導入や構築費用だけでなく、運用にもコストがかかります。通信事業者の回線利用料には月々のコストが発生します。従量課金制の場合は、必要な場合のみVPNを利用するように工夫することで、コスト削減につなげられます。
7.まとめ
近年、多くの企業でリモートワークやテレワークが活用されており、今後もその傾向は続くでしょう。VPNを構築すれば、暗号化された、セキュリティ性の高い通信を実現できます。
VPN構築の種類は大きく分けて、インターネットVPNと閉域網VPNに分類されます。それぞれに特徴があるため、状況に合わせて構築方法を検討しましょう。