Windows ServerでのOpenVPNを使用したVPNの作成方法

インターネットに安全で暗号化されたアクセス方法が必要ですか?なぜWindows Server上でOpenVPNを利用しないのでしょうか?最初のVPNの設定は少し手間がかかるかもしれませんが、正しい場所に来ました!

このチュートリアルでは、無料のVPNを設定してWindows Serverから悪意のあるエンティティを排除する方法を学びます。

ネットワークを安全にする準備はできましたか?それでは、さっそく始めましょう!

前提条件

このチュートリアルは実践的なデモンストレーションです。一緒に進める場合は、次のものを準備してください:

  • A Windows Server – This tutorial uses Window Server 2019 R2.
  • A client machine to test the VPN server – This demo uses Windows 10 64 bit.
  • デスクトップにWindows Serverに接続するための「リモートデスクトップ(RDP)」またはご希望のデスクトップマネージャクライアント – このデモではデフォルトの「RDP」ウィンドウクライアントを使用します。

Windows ServerにOpenVPNをインストールする

OpenVPNはさまざまなオペレーティングシステムで動作しますが、OSのインストールには含まれていません。このチュートリアルでは、サーバにOpenVPNをインストールすることから始めましょう。

1. お気に入りのブラウザを開き、OpenVPNのダウンロードページに移動します。サーバーにWindows 64-bit MSI インストーラパッケージをダウンロードし、インストーラを実行します。

Downloading the Windows 64-bit MSI installer package

2. 次に、インストーラウィザードの最初のページでカスタマイズをクリックします。 カスタマイズオプションを選択することで、VPNサーバーに追加のアイテムをインストールすることができます。

Customizing the OpenVPN installer

3. カスタムインストールページで、OpenVPNサービスのドロップダウンメニューをクリックし、ローカルハードドライブにインストールされますと選択します。このオプションは、OpenVPNサービスをシステムにインストールし、システム起動時にOpenVPNサービスを有効にします。

Enabling the OpenVPN Service

4. 今度は、下にスクロールし、OpenSSLユーティリティのドロップダウンメニューをクリックし、ローカルハードドライブにインストールされますオプションを選択します。このオプションにより、OpenVPNサービスに必要なOpenSSLライブラリと開発ヘッダが利用可能になり、一部の暗号化機能に必要です。

今すぐインストールをクリックして、サーバーにOpenVPNをインストールします。

Enabling the OpenSSL Utilities and installing OpenVPN

5. インストールが完了したら、閉じるをクリックします。

Closing the Customization Installation Wizard

サーバーとクライアントのための証明書とキーの生成

サーバーにOpenVPNがインストールされましたが、サーバーとクライアントの接続をどのように保護しますか?サーバーとクライアントのための証明書とキーを生成します。

証明書とキーは、サーバーとクライアント間の暗号化された接続を提供するために使用されます。証明書を生成すると、固有の公開鍵と秘密鍵が取得されます。

1. 管理者としてコマンドプロンプトを開きます。一部のOpenVPNコマンドは、実行するために昇格した権限が必要です。

Opening your Command Prompt as an administrator

2. 次に、以下のコマンドを実行してeasy-rsaシェルを起動します。easy-rsaシェルは、証明書、キー、および設定の管理に使用されます。

EasyRSAは、このチュートリアルの残りの部分での主要なコマンドラインインターフェースとなります。

cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
Accessing the EasyRSA shell

3. 以下の./easyrsa clean-allコマンドを実行して、既存のキーと設定をクリアします。このコマンドにより、クリーンな設定で開始できます。

./easyrsa clean-all 
Clearing Existing Keys and Configurations

4. 今度は、./easyrsa init-pkiコマンドを実行して、公開鍵基盤(PKI)を初期化し、証明書とキーのための新しいディレクトリ構造を作成します。

公開鍵基盤(PKI)は、サーバーとクライアントが使用するための公開鍵と秘密鍵を作成および管理するためのフレームワークです。

./easyrsa init-pki 

はいと入力してEnterキーを押して、既存のキーを破棄し、新しいPKIを作成することを確認してください。以下に示します。

Initializing the Public Key Infrastructure (PKI)

5. 以下のコマンドを実行して、証明機関(CA)を作成します(build-ca)。CAはサーバーとクライアントに証明書を発行し、証明書に署名し、証明書を失効させるなどの役割を担います。

パスワードを入力する必要がないように、nopassオプションを使用しています。クライアントに証明書とキーをコピーするたびにパスワードを入力する必要はありません。./easyrsa build-ca nopass

./easyrsa build-ca nopass

VPNを設定する際には、証明機関(CA)によって署名されたサーバーおよびクライアントの証明書を生成する必要があります。

Creating the Certificate Authority (CA)

6. 以下のコマンドを実行して、サーバーの証明書とキー(build-server-full)を作成します。このコマンドはOpenVPNサーバーの証明書とキーを作成し、CAで署名し、ファイルをkeysサブディレクトリに配置します。

./easyrsa build-server-full server nopass
Building the Server Certificate and Key

7. 次に、以下のコマンドを実行してDiffie-Hellmanパラメータgen-dh)を生成し、easyrsaシェルを終了します。

Diffie-Hellmanは、二つのユーザーが安全でない接続上で暗号鍵を交換するためのプロトコルです。Diffie-Hellmanを使用することで、暗号化キーが盗まれてもVPNが安全に保たれるようになります。

./easyrsa gen-dh
Generating the Diffie-Hellman Parameters

これで、OpenVPNサービスに必要なすべてのSSL/TLSキーファイルが以下の表にリストされています。

Folder Path Content
C:\Program Files\OpenVPN\easy-rsa\pki CA file, DH file, and other OpenSSL-related files like a config file.
C:\Program Files\OpenVPN\easy-rsa\pki\private Include the private key files of CA, Server, and Client certificates.
C:\Program Files\OpenVPN\easy-rsa\pki\issued Contains issued server and client certificates.

8. 最後に、ファイルエクスプローラーを開き、以下にリストされているファイルをC:\Program Files\OpenVPN\config-autoフォルダとC:\Program Files\OpenVPN\easy-rsa\pki\privateフォルダにコピーします。

C:\Program Files\OpenVPN\easy-rsa\pki\ca.cert
C:\Program Files\OpenVPN\easy-rsa\pki\dh.pem
C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.cert
C:\Program Files\OpenVPN\easy-rsa\pki\private\server.key

Windowsファイアウォールのルールを設定する

OpenVPNサーバーの設定が完了したら、次はサービスにアクセスできるようにする必要があります。Windowsファイアウォールを設定してOpenVPNトラフィックを許可する必要があります。

1. 以下のnetshコマンドを実行して、Windowsファイアウォールを通過するトラフィックを許可します。

  • Windowsファイアウォール(firewall)を構成するために、ルール名OpenVPNadd rule name="OpenVPN")を追加します。
  • このルールを使用して、すべてのローカルIPアドレス(localip=any)と外部デバイス(remoteip=any)が通信できるようにします。
  • サーバーが開くポート(localport=1194 remoteport=0-65535)と使用するプロトコルの種類(protocol=UDP)を指定します。
netsh advfirewall firewall add rule name="OpenVPN" dir=in localport=1194 remoteport=0-65535 protocol=UDP action=allow remoteip=any localip=any
Configuring your Windows Firewall Rules

2. 好きなテキストエディタでC:\Program Files\OpenVPN\config-auto\server.ovpnファイルを開き、以下のように内容をプレビューします。

.ovpnファイルは、OpenVPNの設定ファイルです。暗号化や認証キーなど、OpenVPNがVPNに接続するために必要なすべての情報が含まれています。このチュートリアルでは、VPNサーバーとの接続を設定するために、.ovpnファイルが必要です。

Edit your C:\Program Files\OpenVPN\config-auto\server.ovpn file.

最後に、以下のコマンドを実行してOpenVPNサービスを再起動し、変更を適用します。

net stop openvpnservice
net start openvpnservice
Restarting your OpenVPN service

クライアントの設定

OpenVPNでは、VPNに接続する任意のマシンをクライアントと呼びます。このデモでは、Windows 10を使用してサーバーに接続します。

1. 「サーバーにOpenVPNをインストールする」****セクションで行ったように、クライアントにOpenVPNをインストールします。

2. サーバーから以下のファイルをクライアントのC:\Program Files\OpenVPN\configフォルダにコピーします。

C:\Program Files\OpenVPN\easy-rsa\pki\ca.cert
C:\Program Files\OpenVPN\easy-rsa\pki\issued\client.crt
C:\Program Files\OpenVPN\easy-rsa\pki\issued\client.key

3. 最後に、C:\Program Files\OpenVPN\config\client.ovpnファイルを開き、以下の内容でファイルを埋めます。 YOUR_OPENVPN_IPを実際のWindows ServerのIPアドレスに置き換えてください。

# クライアントはアカウント名ですが、お好きな名前を選択できます
client
# dev tunは、イーサネット接続を使用する必要があるVPN接続の種類です。
dev tun
# このVPN接続で使用されるプロトコル(UDP)
proto udp
# OpenVPNサーバーのIPアドレスを設定します。
# 1194はOpenVPNサーバーのポートです。
remote YOUR_OPENVPN_IP 1194
# ドメイン名が見つからない場合に解決します
# エラーメッセージに「ドメインが見つかりません」と表示されないようにします。
resolv-retry infinite
# VPN IDが切断されたときにインターネットを切断するために、"nobind"の値を"sea"に変更します。
# 次回接続時に暗号化キーが保存されます
nobind
# OpenVPNサーバーに接続する際に使用されます。
# VPN接続は、次回使用する際に保存されます。
persist-key
# VPNサーバーがクライアント(あなた)を識別するために使用する証明書
persist-tun
# VPNサーバーからダウンロードできます。
# 証明書の名前
ca ca.crt
# 暗号化キーの名前
cert client01.crt
# LZOデータ圧縮は、データブロックを送信する前にデータを圧縮します
key client01.key
# データが小さく、より高速になるはずです。
# 出力の詳細レベルを最大に設定します。
comp-lzo
# 接続から最大限の情報を取得できるようになります。
# この機能は、接続のデバッグに便利です。
#
verb 3

クライアントのVPN接続をテストする

サーバーとクライアントのインストールと設定が完了したら、それらの間の接続が正常に機能するかどうかをテストする時です。

Windows 10のクライアントで、OpenVPN GUIを実行します。

Running the OpenVPN GUI

通知領域のOpenVPNステータスアイコン(鍵のアイコンを持つモニター)を右クリックし、接続を選択してクライアントをVPNに接続します。

クライアントが接続されると、OpenVPNステータスアイコンが緑色に変わり、以下のようなvpn is now connectedの通知が表示されます。

Connecting to your VPN

二重チェックとして、割り当てられたIPアドレス(10.8.0.2)を使用してVPNサーバーにpingを送信できます。

ping [10.8.0.2](<http://10.8.0.2/>)

以下の出力は、VPNが意図した通りに機能していることを確認しています。

pinging to your VPN server

結論

このチュートリアルでは、Windows ServerにOpenVPNをインストールするための適切な手順を学びました。また、OpenVPNサーバーとクライアントをOpenVPN設定ファイル(.ovpn)を使用して構成する方法も学びました。現時点では、安全にウェブを閲覧するためにインターネット接続を保護するために使用できる、完全に機能するVPNサービスを持っています。

今、この新たな知識を使って、AWS VPC VPN Gatewayを使用してAmazon AWS VPCへのVPN接続を拡張するのはどうでしょうか?

Source:
https://adamtheautomator.com/openvpn-on-window/