SynologyNASのOpenVPNで証明書認証出来るようにする
以前、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化して作業します。
1 2 3 4 5 6 7 8 |
# 証明書ファイルが保存してある場所に移動 root@DS216J:~# cd /var/packages/VPNCenter/target/etc/openvpn/keys/ # 「server」フォルダを「keys」下にコピー root@DS216J:/var/packages/VPNCenter/target/etc/openvpn/keys# cp -r /volume2/homes/ユーザ名/server/ ./ # 「misc」に名前変更しとく root@DS216J:/var/packages/VPNCenter/target/etc/openvpn/keys# mv server misc # サーバーの設定ファイルを編集する root@DS216J:/var/packages/VPNCenter/target/etc/openvpn/keys# vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf |
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ファイルを設定ファイルと同じ場所に置いておく。
もしくは、証明書と鍵ファイルを別にせず、設定ファイルにインラインで埋め込んでもいいです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<ca> -----BEGIN CERTIFICATE----- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY -----END CERTIFICATE----- </cert> <key> -----BEGIN RSA PRIVATE KEY----- ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ -----END RSA PRIVATE KEY----- </key> |
作成した設定ファイルで接続確認する。
また、証明書認証が有効になっているかどうか確認するため、クライアント証明書の記述を省いた設定ファイルを別途つくり、接続してみてエラーなるかどうか確認しておいたほうがいいでしょう。
追記:
「VPN Server」の更新を行うと、/var/packages/VPNCenter/target/etc/openvpn/配下のディレクトリが一新されてしまうようで、ココに置いた鍵ファイルが削除されてしまうようです。
パッケージセンターの設定で「VPN Server」の自動更新をOFFにするか、更新されたら再度鍵ファイルをコピーする必要があります。
最近のコメント