WireGuard〜OSSのVPNソフトウェア〜
コロナウイルスによるリモートワークの普及に伴い、社内ネットワークに自宅などのリモート先環境から接続することが増えているのではないでしょうか。大半が、VPNを経由し社内ネットワークに接続していると思います。しかし、OpenVPNやIPSecなどの今までのVPNサーバーの設定は、一般のユーザーには非常にハードルが高く簡単に構築することができませんでした。ここでは、OpenVPNやIPSecにかわるVPNソフトウェアのWireGuardについて紹介します。
WireGuardとは
WireGuardとは、オープンソースソフトウェアのVPNサーバソフトウェアです。Jason A. Donenfeldによって開発され、ライセンスはGPL v2で、開発言語はC、Goでかかれています。公式サイトでは、「WireGuard is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography.」とコメントがあるように、SSHのように安全性で、シンプルかつ高速であることに重点をおいて開発されています。WireGuardは、最先端かつ信頼のできる暗号方式を採用しており、Curve25519やChaCha20、Poly1305などの暗号技術が利用されています。
WireGuardの特徴
WireGuardの特徴は以下があります。
- 高速に動作する
WireGuardは、従来のVPNソフトウェアよりも効率よく通信ができるように設計されています。そのため高速に動作することが可能です。公式のベンチマーク結果では、OpenVPNやIPSecよりも高速に動作すると報告されています。
- 他のVPNソフトと比較して導入が簡単
VPNサーバの設定は、非常に難しいと言われています。特にIPSecなどは、複雑な設定を行わなければ利用することができません。その点、WireGuardは、wgコマンドを使用し、鍵を作成するなどの、いくつかの設定と秘密鍵の生成・公開鍵の交換を行うだけでセキュアな通信が完了するので、設定がとても簡単になっています。多くのディストリビューション向けのパッケージも用意されているのでパッケージのインストールすることで、様々なLinux OSで利用することが可能です。
- Linuxカーネルとの統合
WireGuardの信頼性が認められたことで、2020年3月にリリースされたLinuxカーネル5.6でカーネル内に取り込まれました。それ以前のカーネルでもカーネルモジュールとして提供されています。
- WindowsやiOS/Androidでも利用可能
WireGuardはLinux向けに開発されましたが、現在はLinux以外のクライアントにも対応しています。パソコンだけではなく、スマートフォンなどのデバイスにも対応しており、Windows/mac OS/iOS/Androidなどの一般的なOSにも対応しています。WindowsでWireGuardを利用するためには、まず公式サイトからソフトウェアをダウンロード/インストールします。iPhoneの場合は、AppStoreでクライアントアプリが配布されています。そのため、特別な機器を用意することなくVPNを使用することが可能になります。
- クライアント側の設定が簡単
WindowsやmacOSのクライアントには、WireGuardの設定をインポートする機能があります。管理者が設定したものをクライアントに配布すると、クライアントは設定を追加することでVPNの利用が可能になります。またiOS/Androidでは、設定をQRコードにして読み取ることも可能です。
WireGuardの用途
VPNには、管理GUIの開発や鍵の有効期限の管理などが必要になります。そのため、管理者だけがアクセスできるような、拠点間のVPNやクラウド環境へアクセスするVPNシステムに適しています。
クラウド環境では、特別な機器を設置できず、仮想アプライアンスを導入すると費用がかかります。その点、WireGuardは、コストを押さえて手軽に構築でき高速に動作します。クラウドでの利用には、非常に有効なソフトウェアといえます。
外部ネットワークとの接続
VPNのネットワークと会社内やクラウドのネットワークと接続する場合、基本としてルーティングによる経路制御が必要になります。しかし、ルーティングの設定は一般のユーザには敷居が高く、またiOSやAndroidでは設定が困難です。しかしWireGuardには、AllowedIPs設定という特別な機能が存在します。AllowedIPsの機能でルーティングが行えるため、OSの機能に頼る必要がありません。
構成するためのポイント
WireGuardの設定は非常にシンプルで簡単です。しかし一般的なVPNとは異なるため、理解することが難しいです。構成するためのポイントは以下になります。
サーバでもクライアントでも動作可能
厳密にはサーバ・クライアントという分け方がありません。そのため、サーバとしても、クライアントとしても動作することが可能です。運用上、特定のホストをWireGuard server、それ以外をクライアントとして設定することができます。
秘密鍵と公開鍵をお互いに交換する
VPN接続は、秘密鍵(PrivateKey)と公開鍵(PublicKey)が合致するような検証によって成り立ちます。そのためVPN接続を行う両方のホストで秘密鍵を作成し、公開鍵をお互いに交換する必要があります。接続されるサーバ側は、全てのクライアントの公開鍵を所持しておく必要があります。
IPアドレスやポート番号が必須
相手と通信するためのIPアドレスやポート番号が必要になります。WireGuardは、UDPを使うことでパフォーマンスを向上させています。そのため、指定するポート番号はUDPであり、Firewall等の許可設定もUDPで行う必要があります。さらに現状DHCPの機能をもたないためVPNでのIPアドレスをホスト毎に固定で割り当てる必要があります。
WireGuardには、サーバ側ではリッスンするUDPポートやVPN接続に利用するIPアドレス、クライアント側でも、VPN接続に利用するIPアドレスやサーバのエンドポイント(接続先IP アドレス:ポート)など項目の設定を行います。
VPNソフトウェア・製品との比較
VPNソフトウェアとして有名なものとしてOpenVPNが挙げられます。OpenVPNと比較すると、多くの記事でWireGuardの方が通信速度が高速という結論が出ています。日本国内産のVPNソフトであるSoftEther VPNと検証を行ったところ、SoftEther VPNよりも1.2倍から最高で2倍程度高速ということがわかりました。
運用上の課題
メリットが多くありますが、以下の運用上の問題があります。
- コマンドラインでの設定が必要
サーバは、コマンドラインでの設定が必要になります。クライアントへ発行する認証情報の作成や、利用の停止などの処理もすべてコマンドラインで行わなければなりません。
- 漏洩のリスクが高い
公開鍵認証の仕組みで認証を行っているため、秘密鍵(Private Key)・公開鍵(Public Key)が漏洩してしまうと、誰でも簡単にアクセスが可能になります。またクライアントに配布する設定ファイルに、鍵の情報がすべて記載されているため、漏洩のリスクが高い状態です。
WireGuardの管理ソフト「Firezone」
WireGuardは、コマンドラインでの設定が必要なことや漏洩リスクが高いという課題がありますが、OSSのVPN管理ソフトウェアのFirezoneを連携させることでこの課題を解決することができます。Firezoneは、GUIでVPNの管理を行うことができます。Firezoneは、ログイン時間を制限できるので、指定した時間が経つと自動でログアウトされ、再度認証が必要になりセキュリティ面でも安心してVPNの利用が可能です。また、2要素認証やシングルサインオンに対応しているため、認証のセキュリティを強化することができます。日本語対応してないという課題はありますが、VPN管理ソフトウェアとして十分に利用が可能です。
「Firezone〜ソフトウェアVPNのWireGuard管理ソフト〜」へ
デージーネットの取り組み
WireGuardは、運用やセキュリティ面で課題はありますが、次世代のVPNサーバとしても期待が持てるソフトウェアです。デージーネットでは、この課題も踏まえGUIソフトウェアの調査や、認証の仕組みの方法の改善などに取り組んでいます。そこで、FirezoneというVPN管理ソフトウェアをおすすめしています。Firezoneと連携させることで、安全なVPN環境の利用が可能になります。インストールやログイン方法、製品との検証に関する詳しい情報は、WireGuard調査報告書で公開しています。
「情報の一覧」
WireGuard調査報告書
Firezone〜ソフトウェアVPNのWireGuard管理ソフト〜
自宅などのリモート先から、社内ネットワークに繋ぐためのVPNソフトウェアとしてOSSのWireGuardがあります。しかし、WireGuardには、一般ユーザには使用しにくい課題があります。今回は、WireGuardの課題を解決するVPN管理ソフトウェアFirezoneを紹介します。