OpenVPN Access ServerでGoogle Authenticatorを使って多要素認証(MFA認証)でSSL VPN接続してみた

2016.10.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちわ。いつか複葉機でアウドムラに着艦してみたいガノタ市田です。
今回は、以前ご紹介したOpenVPN Access Server のMFA認証によるVPN接続をご紹介します。

概要

OpenVPN Access Server(以後、OpenVPN-ASと表記)は、デフォルトでGoogle Authenticator による2段階認証を利用することができます。
今回は、その2段階認証の導入と実際の接続確認までを行ってみたいと思います。

手順

  • OpenVPN-ASの管理画面で設定を有効化
  • スマホなどに対応アプリケーションのインストール
  • Google Authenticator設定
  • Mac(OSX)で接続確認
  • Windowsで接続確認
  • iPhoneで接続確認

それでは早速見ていきたいと思います。

OpenVPN-ASの管理画面で設定を有効化

OpenVPN-ASのAdmin用管理画面にログインして「Client Settings」 をクリックして設定画面を開きます。
「Configure Google Authenticator support」の「Require that users ・・・」 となっている箇所のチェックを入れます。

clientsettings-googleauth

チェックを入れたら画面下部の「Save Settings」 をクリックします。

設定保存

次の画面で「Update Running Server」 をクリックして設定を反映します。

設定反映

OpenVPN-AS側の設定は以上になります。簡単ですね。

スマホに2段階認証アプリのインストール

今回は、iPhoneに対応アプリケーションをインストールしました。

Google Authenticator - App Store

GoogleAuthenticator

普通のiphoneアプリのインストールと変わりませんのでインストール方法については、割愛します。

Google Authenticator設定

次は2段階認証の認証情報を設定していきます。

まずは、OpenVPN-ASのクライアント用の管理画面にログインします。 先程と同様、ログインURLはhttps://[OpenVPN-ASのElasticIP]:10443です。

ユーザ名とパスワードを入力した後、プルダウンから「Login」 を選択してログインします。

cmuser-login

するとQRコードが表示されているので、iPhoneでGoogle Authenticatorのアプリを起動してQRコードを読み取ります。

before-mfa-regist

アプリを起動したら「+」 ボタンをクリックします。

MFA1

次の画面で「バーコードをスキャン」 をクリックします。

MFA2

QRコードをアプリで読み取れたら下記のようにOpenVPN-ASサーバの情報が登録されます。

MFA3

これで登録が完了しました。
登録が完了したら先程のQRコードの一番下にある「I scanned the QR code」 をクリックしておきます。ブラウザ側の操作は以上になります。

scannedqr

MacでVPN接続してみる

OpenVPNクライアント(OpenVPN Connect)のインストール

次に、Mac OS XにVPNクライアントツールのインストールをします。
Google Authenticatorの2段階認証を簡単に利用するため、今回は「OpenVPN Connect」 というクライアントアプリをインストールして接続してみます。

まずは、クライアント用の管理画面にログインします。 以前のエントリの内容でOpenVPN-ASを作成している場合は、ログインURLはhttps://[OpenVPN-ASのElasticIP]:10443です。

ユーザ名とパスワードを入力した後、プルダウンから「Login」 を選択してログインします。

cmuser-login

ログインしたら、Mac OS X用のクライアントアプリをダウンロードします。

appdownload

dmgファイルをダウンロードしてインストールしていきます。

openvpn-dmg

ダブルクリックすると下記のようなファイルが現れます。

openvpn-pkg

このファイルを下記のように開いてインストールを行います。

openvpn-warning-2

次のような警告が出ますが、そのまま「開く」 をクリックします。

openvpn-warning-3

インストーラが起動するので「続ける」 をクリックします。

openvpn-conn-1

「Continue」 をクリックします。

openvpn-conn-2

「Agree」 をクリックします。

openvpn-agress

「インストール」 をクリックします。

openvpn-conn-install

待ちます。

openvpn-install-tochu

インストールが完了したらウィンドウを閉じます。

openvpn-conn-done

これで準備が整いました。

MacでVPN接続してみる

それでは、アプリを起動してバーからConnect を選択して接続を行います。

launch-openvpn-client-mac

接続するサーバとしてポート番号まで含めて[OpenVPN-ASのElastic IP]:10443の形で指定します。
2度ほど確認のダイアログが出ますが、全てYesをクリックして進めてください。

vpnconnect

接続するユーザ名とパスワードを入力します。

user-pass

次は2段階認証の肝です。
スマホのGoogle Authenticatorで表示されている数字を入力します。

googleauth

接続できたらバーのアイコンが緑色になります。

connected

この状態でブラウザでプラベート環境のサーバのWebページにアクセスすると、プライベートIPでページを表示できました。

privateweb

WindowsでVPN接続してみる

WindowsがクライアントでもMacの場合と同様になります。
試しにWindows8.1で試してみます。

OpenVPNクライアント(OpenVPN Connect)のインストール

Macの時と同様にクライアント用の管理画面にアクセスします。
ログインURLはhttps://[OpenVPN-ASのElasticIP]:10443ですね。

cmuser-login

同じユーザcm-user1を使っていますが、既に2段階認証が有効になっているので認証コードの入力を求められます。

windowsconn

ログインできたらWindows用のインストーラをダウンロードします。

winopenvpnapp

インストーラをダブルクリック

msiwclick

「はい」をクリック

winyes

待ちます。

wininstabar

WindowsでVPN接続

インストールできたらデスクトップ上のショートカットから起動します。

shorcut

起動したらタスクバーからconnect をクリックします。

winvpnconn

起動したら次のように[OpenVPN-ASのElastic IP]:ポート番号という形で接続先を指定します。

specport.png

スマホのGoogle Authenticatorで表示されている数字を入力します。

Windows Google Authenticator

接続ができたらアイコンが緑色になります。

winconnok

この状態でプライベートIPでWebサーバにアクセスしてページが見えればOKです。

winweb

iPhoneでVPN接続してみる

最後はiPhoneで接続してみたいと思います。ちなみにiOS10.0.1です。

OpenVPNクライアント(OpenVPN Connect)のインストール

ブラウザでOpenVPN-ASのクライアント用画面にログインします。
ログインURLはhttps://[OpenVPN-ASのElasticIP]:10443でした。

iphone1

次にGoogle Authenticatorの認証コードを入力します。

iphone1

iOS用のリンクをクリックします。

iphone1

App Storeに飛ぶので、そこからアプリをインストールします。

iphone1

iPhoneでVPN接続

インストールが完了したらもう一度、OpenVPN-ASの画面にアクセスします。
そこから接続する端末用の.ovpnファイルをダウンロードします。

iphone1

OpenVPNで開くをクリックします。

iphone1

次の画面で緑色の+ボタン をクリックします。

iphone1

パスワードとGoogle Authenticatorの認証コードを入力して、コネクションをOnにします。

iphone1

Yesをクリックします。

iphone1

下記の表示になれば接続完了です。

iphone1

そのままプライベートIPで下記のようなページが表示されればOKです。

iphone1

最後に

Android端末だけ手元になかったので未検証ですが、よく使われるOS、デバイスからの接続ができることを確認できました。
2段階認証でも特に問題なく、設定も簡単なので是非ご活用ください。

以上になります。