書類
OpenVPNで使用できる認証方法

OpenVPNで使用できる認証方法

2024-11-22 openvpn で は 、 いく つ か の 認証 方法 is 利用 が 利用 でき ます 。 how to で も 一通り 説明 さ れ て い ます が 、 やや 難しい の で 、 少し まとめる て み たい と 思う ます 。 OpenVPNで使用できる認証方法は、ざっくり言うと以下の4つ

Related articles

The Best Way to Get YouTube Premium Cheaper via India VPNルータの詳細解説|最も分かりやすい2024年マニュアル ChromeにおすすめのVPN 5選│安全で使いやすい!2024年 ホームルータ Speed Wi-Fi HOME 5G L11 で他社SIMを試す VPC内部で多段ネットワークを構成している場合のVPN設定 信頼と実績のリモートアクセス MagicConnect(マジックコネクト)|NTTテクノクロス 日本の自宅ルーターに簡単にVPNを設定する方法|中国出張者向け

openvpn で は 、 いく つ か の 認証 方法 is 利用 が 利用 でき ます 。 how to で も 一通り 説明 さ れ て い ます が 、 やや 難しい の で 、 少し まとめる て み たい と 思う ます 。

OpenVPNで使用できる認証方法は、ざっくり言うと以下の4つです。

  1. 静的 鍵 ( static Key )
  2. 証明書認証
  3. ID / パスワード 認証 ( プラグイン 認証 )
  4. 二 要素 認証 ( PKCS # 12 )

静的 鍵 ( static Key )

サーバーとクライアントで同じファイル(静的鍵ファイル)を保持しておいて、その両者が一致することで接続を許可する仕組みになります。ある意味では、このファイルがパスワードの役割を果たしているとも言えます。さらに、この静的鍵ファイルはデータを暗号化する際の鍵としても使用されます。

利点

とにかくセットアップが簡単なことです。サーバー側で鍵を生成し、それをクライアントにコピーしておくだけで使えます。OpenVPN設定ファイルもいくつかの基本的な設定だけでつなぐことができます。

いかに設定が簡単なのかはこちらのページでもお分かりいただけるでしょう。

欠点

最大の難点は1対1の接続しかできないことです。拡張性はゼロと言っていいでしょう。

また、セキュリティ面のリスクとして、PFSが保たれていないことが挙げられます。実際にこれが問題になるかどうかは別として、理論上は弱点とされます。

証明書認証

OpenVPNではスタンダードと言ってもいい方法です。認証機関を自前で設置(easy-rsaなどを使用)し、証明書と秘密鍵で認証する方法で、サーバーごと、クライアントごとに個別の秘密鍵、証明書を生成します。

利点

手間はかかりますが、拡張性、安全 性が高く、バランスの取れた方法と言えるでしょう。さらに、秘密鍵にパスワードを付加すれば、万が一秘密鍵が流出してもVPNに接続されることを防止することもできます。

欠点

証明 書 認証 の 欠点 is こと は 、 管理 者 の 負担 が とにかく 大きい こと です 。

まず、手始めに認証機関のセットアップが必要なことが挙げられます。これは手順さえ理解すればそれほど面倒なことではありません(個人的には、OpenVPNのパッケージにeasy-rsaが含まれなくなったのはさらに面倒になった気がしますが…)。

次に、サーバーごと、クライアントごとに、秘密鍵、証明書を生成、管理する必要があります。証明書には有効期限もあるため、期限が切れる頃には更新処理も必要です。サーバー数やクライアント数が多い場合には、これはかなり頭の痛い問題になります。

さらに 、 「 証明 書 認証 と いう 概念 is かけ は 、 ユーザー に とっ て わかる にくい 」 と いう 事実 is かけ が 管理 者 の 負担 に 拍車 を かけ ます 。 「 ファイル で 認証 する 」 と いう の は 一般 の ユーザー に とっ て は 非常 に 分かる にくい もの です 。 VPN の 規模 が 大きい 場合 、 セットアップ 中 の ユーザー から の 問い合わせ や 、 「 秘密 鍵 や 証明 書 を 紛失 し て しまっ た 」 と いう 連絡 に 追う れる 可能 性 も あり ます ( いくら 「 大切 な ファイル です よ ! 」 と 念押し し て も 、 消す れ ちゃっ たり する ん です . ) 。 その 際 の 証明 書 の 再 発行 、 失効 手続き など も 管理 者 に とっ て は 手間 の かかる 作業 です 。

ID / パスワード 認証 ( プラグイン 認証 )

OpenVPNでは、認証処理をプラグインとして実装する機能があります。このプラグインで利用されるのがIDとパスワードによる認証です。ユーザーが接続時にID/パスワードを入力し、両者が正しかった場合にVPN接続が開始されることになります。

OpenVPN から は ID と パスワード を プラグイン に 渡す 、 プラグイン 側 で その データ を もと に 認証 処理 を 行う ます 。 プラグイン の 作成 is 容易 も 比較 的 容易 です 。

ID / パスワード 認証の基本的な設定については

こちら

を、ユーザーデータベースにsqliteを利用した認証プラグインのサンプルについては

こちら

の記事も参照してください。

利点

ユーザー に とっ て わかる やすい こと 、 証明 書 など の ファイル 管理 が 不要 な こと など は 、 管理 者 に とっ て 大きな メリット です 。

また、認証処理自体はプラグイン方式になっているため、さまざまな認証方法(独自のユーザー情報データベースからの検索や、LDAP認証、ワンタイムパスワードによる認証など)を柔軟に使用できるというメリットもあります。

欠点

手軽であることの裏返しとして、セキュリティ面での安全 性は証明書認証にはかないません。ID/パスワードが流出すれば、第三者がVPNに接続できてしまうというリスクが伴います。

また、認証プラグインの導入が必要になります。セットアップは初回導入時だけとはいえ、やや手間がかかるのは避けられません。LDAPを認証に使うopenvpn-auth-ldapなどが公開されていますが、使用できるプラットフォームが限定されていたりと、手軽に使える認証プラグインがまだあまり存在していないというのも事実です。

二 要素 認証 ( PKCS # 12 )

PKCS # 12 の 機構 を 利用 し て 、 セキュリティ トークン など を 使う た 二 要素 認証 に も 対応 でき ます 。

利点

きちんとセットアップされ、想定通り使用されている限りは、安全 性の高さはトップクラスと言えます。

欠点

とにかく、セットアップが非常に難しいのが最大の問題です。ユーザーに配布するセキュリティトークンの導入などに伴うコストも他の認証方式にはない問題です。

まとめ

というわけで、ざっとまとめるとこんな感じでしょうか。

方式 安全 性 拡張性 設定/管理の容易性
静的鍵 ★★☆☆☆ ★ ☆ ☆ ☆ ☆ ★ ★ ★ ★ ★
証明書認証 ★ ★ ★ ★ ☆ ★ ★ ★ ★ ★ ★★★☆☆
ID / パスワード 認証 ★★★☆☆ ★ ★ ★ ★ ★ ★ ★ ★ ★ ☆
二 要素 認証 ( PKCS # 12 ) ★ ★ ★ ★ ★ ★ ★ ★ ★ ☆ ★ ☆ ☆ ☆ ☆

で は 、 どれ を 選択 す べき か …

まず前提としておかなければいけないのが、1つのOpenVPNサーバーインスタンス内で認証方法(証明書認証とプラグイン認証など)を混在させることはできない、ということです。「このユーザーはID / パスワード 認証で、このユーザーは証明書認証」というようなことはできません(証明書認証+ID / パスワード 認証を「併用」することはできますが、認証方法は全ユーザー共通になります)。

さて、これを前提に、認証方法をどうするか、という点を考えましょう。

ユーザー数が少ない場合、安全 性を特に重要視する場合は、証明書認証が第一候補になります。認証用プラグインも不要ですので、追加のソフトウェアもインストールせずにすぐに使えます。ユーザー数がある程度多くなってくると判断に迷うところですが、流用したいユーザーデータベースなどが存在していないのであれば、安全 性の面からは証明書認証から検討するのが望ましいと思います。初回の導入はちょっと面倒でもいいから、今後の管理の手間を削減したい、ということであればID / パスワード 認証が有力でしょう。

既にActive Directoryなどで大規模なユーザーデータベースが存在している場合は、ID / パスワード 認証を使って既存のデータベースを参照するのが最善でしょう。もしセキュリティをさらに高めたければ、データベース内のパスワードをそのまま使わず、そのパスワードをベースにしたワンタイムパスワードを使うという方法もあります(時刻ベースのワンタイムパスワード(TOTP)の仕組みについてはこちらを参照してください)。