SynologyNASのOpenVPNで証明書認証出来るようにする

2018年3月22日

以前、SynologyNAS DS216JでOpenVPN環境を作るというエントリを投稿しました。

しかし、Synology VPNServerパッケージのOpenVPNは認証方法としてデフォルトでプラグイン認証(ID/PW認証)で動作するようになっています。

正直これでも特に問題なく運用可能なのですが、セキュリティ上、ID/PWが漏れると第三者にVPN接続をされる恐れがあり、少々セキュリティ上懸念があります。

よりセキュアな環境で運用するため、証明書認証を導入する事で秘密鍵での認証を出来るようにします。

以下、DS216Jで動作しているOpenVPNに証明書認証の設定を導入する方法。

認証局の設置、各証明書の作成

本来、認証局はNASに導入済みのものを使えばよいと思ってたのですが、クライアント証明書の発行に必要なライブラリ群がNASに揃っていなく、自分で揃えるのも面倒だったので、Windows GUIツールであるvpnux PKI Managerを使って認証局の設置から始めることにしました。

ここからダウンロード


適当な場所に解凍してvpnuxPKI.exeを実行
最初に「CAを構築してください」と言われるので、vpnuxPKIManagerの中に適当な作業フォルダ(misc)を作成。「CAの新規作成」を実行します。


証明書の情報入力を促されますが、ここはなんでもいいので適当に入力して「CA証明書作成」。


CA証明書が作成されます。

続いてサーバー証明書を発行します。「サーバー用秘密鍵/証明書」をクリック


名称は「server」とします


ここまできたら、作業フォルダの中身はこんな感じになってるはず
選択状態になってる「ca.crt」「dh2048.pem」「server.crt」「server.key」4つを「server」というディレクトリを作ってコピーしておきます。OpenVPNサーバーに配置するファイルです。

次は「クライアント用 秘密鍵/証明書」をクリック

接続するクライアント毎に作成することになるので、必要な分だけ、今回は個人名で指定します。


作成された、「taro.crt」「taro.key」とサーバー証明書「ca.crt」3つを「taro」というフォルダにコピーします


こんな感じになってればOK。↑は一人だけですが、接続する予定のクライアント分、追加していく感じです。

OpenVPNサーバー(NAS)にファイルを配置

さきの手順で「server」フォルダに入れたファイル群をSynology NASに転送します。

samba等で「sever」フォルダをNASにコピー。

NASにSSHログイン。root化して作業します。

NASのOpenVPN設定ファイルを編集する

/usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf

既存の証明書、鍵ファイル等をコメントして
#dh /var/packages/VPNCenter/target/etc/openvpn/keys/dh3072.pem
#ca /var/packages/VPNCenter/target/etc/openvpn/keys/ca.crt
#cert /var/packages/VPNCenter/target/etc/openvpn/keys/server.crt
#key /var/packages/VPNCenter/target/etc/openvpn/keys/server.key

今回作成したものを読み込ませます
dh /var/packages/VPNCenter/target/etc/openvpn/keys/misc/dh2048.pem
ca /var/packages/VPNCenter/target/etc/openvpn/keys/misc/ca.crt
cert /var/packages/VPNCenter/target/etc/openvpn/keys/misc/server.crt
key /var/packages/VPNCenter/target/etc/openvpn/keys/misc/server.key

client-cert-not-required、username-as-common-nameをコメントする
#client-cert-not-required
#username-as-common-name

上記2行をコメント。クライアント証明書を使わない設定を無効にします


DSMメニューに入り、「OpenVPNサーバを有効にする」のチェックをOFFにして適用、またONにして適用。設定ファイルを再読み込みさせる。

接続クライアント側の作業

VPNConfig.ovpnファイルを編集

前回から追記する部分は、
cert taro.crt
key taro.key

の二行。

crtファイルとkeyファイルを設定ファイルと同じ場所に置いておく。

もしくは、証明書と鍵ファイルを別にせず、設定ファイルにインラインで埋め込んでもいいです。

作成した設定ファイルで接続確認する。

また、証明書認証が有効になっているかどうか確認するため、クライアント証明書の記述を省いた設定ファイルを別途つくり、接続してみてエラーなるかどうか確認しておいたほうがいいでしょう。

追記:
「VPN Server」の更新を行うと、/var/packages/VPNCenter/target/etc/openvpn/配下のディレクトリが一新されてしまうようで、ココに置いた鍵ファイルが削除されてしまうようです。
パッケージセンターの設定で「VPN Server」の自動更新をOFFにするか、更新されたら再度鍵ファイルをコピーする必要があります。

PC関連ds216j

Posted by koko