前項 「2.2 ユーザー認証」 では、SoftEther VPN Server が接続してきた VPN クライアントコンピュータを認証する方法について解説しました。「サーバー認証」は、逆に SoftEther VPN Server に接続しようとする VPN クライアントコンピュータ (VPN Client や、カスケード接続を行おうとする VPN Server / VPN Bridge) が、接続先の VPN Server が「本物」であるかどうかを検証する機能です。サーバー認証は通常の使用方法では必須ではないためデフォルトでは「オフ」に設定されていますが、クライアント接続設定またはカスケード接続設定ごとに有効にすることもできます。ここでは、「サーバー認証」に関する事項について解説します。enabled for each client connection setting or cascade connection setting.
2.3.1 サーバー認証の必要性
インターネットなどの公共 IP ネットワークにおける中間攻撃について
「サーバー認証」は、インターネットのような信頼できない公共ネットワークを用いて VPN Server に対して接続する際に、接続先の VPN Server が本物であるかどうかを検証する際に必要です。IP ネットワークにおいては、回線の途中にプロトコルを書き換える特殊なソフトウェアを仕掛けることによって、悪意のある第三者が本物の VPN Server に接続しているように見せかけて、実際には偽の VPN Server に接続させるようにすることが技術的に可能です。また、偽の VPN Server から、実際のユーザーが接続を意図している先の VPN Server に接続をリダイレクトすることによって、悪意のある第三者は VPN 内を流れるすべてのパケットを一旦解読して読み取り、それを再度暗号化することによって目的のホストに送信することで、ユーザーに一切気付かれることなく VPN 通信の内容を盗聴したり、書き換えたりすることが可能です。
これらの方法は「中間攻撃」、「中間者攻撃」、「リダイレクト攻撃」、「Man in the Middle Attack」または「Person in the Middle Attack」などと呼ばれる攻撃方法です。現実的には、インターネットのバックボーンを流れるトラフィック量は膨大であるため、バックボーンに対してこれらの攻撃を行うための特殊なソフトウェアをインストールすることは困難ですが、ネットワークの支流の、それほどスループットが高くない部分では、この攻撃が成功することもあります。
したがって、もし上記のような攻撃方法によって VPN 通信するデータが盗聴されたり改ざんされたりすることを未然に防ぎたい場合は、サーバー認証機能を使用してください。
証明書によるサーバー認証の仕組み
「証明書によるサーバー認証」は、「2.2 ユーザー認証」 で解説されているようなクライアント証明書認証と逆の役割で証明書を検証することによって、接続先の VPN Server の正当性を検証します。接続先の VPN Server は X.509 証明書とそれに対応した秘密鍵データを持っており、VPN Server に接続しようとする VPN クライアントコンピュータ (VPN Client や、カスケード接続を行おうとする VPN Server / VPN Bridge) は、その証明書の内容を検査することによって、接続先の VPN Server が信頼できるかどうかを評価します。この際の証明書の検証には RSA アルゴリズムが使用されるため、VPN Server は証明書に対応した秘密鍵を持っている必要があります。
これらの検証に失敗したり、サーバーが提示した証明書の有効期限が切れている場合は、接続先 VPN Server の信頼性が不十分でないと判断し、VPN 接続を中断します。
VPN Server に接続しようとする VPN クライアントコンピュータ (VPN Client や、カスケード接続を行おうとする VPN Server / VPN Bridge) が、接続先の VPN Server が提示した証明書を信頼するかどうかを判断するためには、下記の 2 種類の方法があります。
2.3.2 サーバー固有証明書認証
「サーバー固有証明書認証」は、VPN Server への接続設定ごとに、接続先の VPN Server の X.509 証明書をあらかじめ登録しておき、VPN Server への接続時に VPN Server が提示した証明書が事前に登録しておいた証明書と完全に一致した場合のみ VPN Server への接続を続行し、一致しない場合は接続を切断する認証方法です。
この方法は、接続先の VPN Server のサーバー証明書をあらかじめ持っている場合に使用することができます。また、VPN Client でサーバー証明書の確認を有効にするモードを「有効」にした状態で接続先の VPN Server に初めて接続すると、証明書の内容が画面に表示され、その証明書をサーバー固有証明書として登録するかどうかというメッセージが表示されます。ここで [はい] をユーザーが選択すると、次回から VPN Server へ接続する際のサーバー固有証明書として、初回に接続したときの証明書が検証に使用されます。
2.3.3 サーバー署名済み証明書認証
「サーバー署名済み証明書認証」は、VPN 接続を行う VPN クライアントコンピュータ側で信頼するルート証明書 (または中間証明書でも構いません) の一覧を持っておき、接続先の VPN Server が提示した証明書が信頼する証明書のいずれかによって署名されている場合に、接続先の VPN Server を信頼し接続を続行するという認証方法です。
社内にいくつかの VPN Server があり、または今後 VPN Server の数が増えると予想される場合に、各 VPN Server のサーバー証明書を会社のルート証明書によって署名しておき、それらの VPN Server に接続しようとするクライアントは、そのルート証明書を信頼する設定にしておくことによって、 VPN Server が提示する証明書がルート証明書によって署名されていれば、そのサーバーは本物であると判断することができます。