« ついつい | メイン | OpenVPN »

2013年05月01日

MyCloudNas

QNAPのNASを導入して,通常のWindows用の共有ストレージとして運用を開始したんだけど,いろいろ機能を弄ってみよう,という状態だったわけですが.
NASを個人で使っている方々はおそらく誰もが思うであろう,外部から自宅のNASにアクセスしたい,という欲求を満たそう,という話です.

QNAPのNASには,MyCloudNasサービスというものが搭載されています.
これ,簡単に言うと,DDNSへの登録や,IPアドレスの更新,ルータの設定なんかを簡単に行ってくれる仕組みです.
これを使い,ISPより動的に割り当てられるIPアドレスをDDNSへ自動登録,更新し,外部から名前を使ったアクセスを行うことができるみたい.
この設定自体は,NAS管理画面のメニューから,ウィザードに沿って設定するだけで完了します.
ルータの設定もUPnP対応しているルータであれば自動でやってくれます.
さて,これで外部ネットワークからNASの名前解決ができるようになりました.

次にVPNを導入します.
仕事でユーザとして使うことはよく有りますが,サーバ側を管理したことはないので,どんなものだろう,と思っていたんですが,サービス自体は既にQNAP側に搭載されており,有効化&VPNユーザの追加をするだけでした.
ただ,VPNサーバとしてPPTPとOpenVPNの2種類が搭載されていたので,これは要選択です.
両方とも動作させる,という選択もあるんだとは思いますが,ちまきはよりセキュリティレベルの高そうなOpenVPNを選択しました.

課題があるとするとiOSデバイスからのOpenVPN接続は,標準でサポートされていない,という点.
ただし,ここも既に手が有り,AppStoreでiOS用OpenVPNクライアントが配布されていました.
ただ,このiOS用クライアントでは証明書と鍵による認証のみサポートされているようなので,この部分だけは注意が必要です.

さて,じゃぁ試してみよう,ということで,OpenVPNの公式ドキュメントを参考にiPhone5に証明書,鍵を追加しようとしました.
ここで,証明書や鍵がないことに気がつきましたが,QNAPのOpenVPNサービスの設定画面から「設定ファイルのダウンロード」ができることを思い出し,早速ダウンロードしました.
が,ここには設定ファイルと認証局の証明書(ca.crt)しか含まれておらず,クライアント側の証明書と鍵がありません.
OpenVPNでは,サーバ側,クライアント側共に証明書と鍵が必要で,クライアント側では,認証局自体の証明書と,自身(クライアント)の証明書を接続の際に必要としているはずです.
おかしいなー,と思いながら調べていると,どうやら証明書と鍵は(クライアントごとに)発行しないとダメな模様.

あちこち調べると,先達は自分でおれおれ認証局(自前のローカル認証局)を作成して,そこで証明書と鍵を必要なだけ発行している模様.
ここで考えた選択肢としては2つ.
1つは,QNAP上に認証局を作成する方法.
2つめは,手近なマシン上に認証局を作る方法.
QNAP上でやるのが一番楽かなーなんて思ったんですが,よく考えるとトラブルやアップデートなどでQNAP上の認証局は消滅する可能性が有り,その度に各デバイスの証明書を作り直す事になるため,これはやめました.
それ以外にも宅内LANに接続できない環境では証明書を発行できない,というのも気になった,という点も.
セキュリティ,という観点からいうと,証明局は宅内LANにあった方が望ましいとは思いますが,ここは利便性をとる形です.

てことで,手近なマシン上に証明局を構築することにしましたが,こちらはVMware Workstation上で動作するUbuntu12.04上に構築することにしました.
Windows上に構築してもよかったんだけど,VMの方がバックアップなんかがしやすく,使い勝手がいいとの判断です.
Windows上にいろいろソフトウェアを導入する手間もないしね!

てことで,Ubuntu12.04で作業します.
まずOpenVPNを未導入の環境の場合,OpenVPNの導入からです.

$ sudo aptitude install openvpn

これでOpenVPNが導入されるので,証明局他の作成環境を作りました.
ちなみに,途中でroot権限なんかが必要らしいので,

$ sudo -s

しています.
さて,適当に作業ディレクトリを作成してから作業開始です.

# mkdir OpenVPN_Keys
# cd OpenVPN_Keys
# cp -R usr/share/doc/openvpn/examples/easy-rsa/2.0/* .

これで認証局作成環境がコピーできたので,

# emacs vars

で設定ファイルを修正します.
修正箇所は下記.

export KEY_SIZE=2048
export KEY_COUNTRY="JP"
export KEY_PROVINCE="都道府県"
export KEY_CITY="市区町村"
export KEY_ORG="適当"
export KEY_EMAIL="適当"

KEY_SIZEは,この方が安全そうだったから,という程度です(笑)
これで初期設定ができたので,早速証明局を作ります.

# source vars
# ./clean-all
# ./build-ca

いくつか質問をされますが,varsも設定済なので,適当にEnterしていきます.
これが終わると,

認証局証明書:./keys/ca.crt
認証局秘密鍵:./keys/ca.key

が作成されます.
続いてサーバ証明書(QNAP用)も作成します.

# ./build-key-server [サーバ名]

こっちも適当に質問に答えていくと,

サーバ証明書:./keys/[サーバ名].crt
サーバ秘密鍵:./keys/[サーバ名].key

が作成されました.
続いて,Diffie Hellman(DH)パラメータの生成をします.

# ./build-dh

とすると,

DHパラメータ:./keys/dh2048.pem

が生成されます.
そして最後にクライアント用の証明書と鍵を作成します.

# ./build-key-pass [クライアント名]

とすると,

クライアント証明書:./keys/[クライアント名].crt
クライアント秘密鍵:./keys/[クライアント名].key

が生成されます.
ちまきは,ノート,iPhone5,いつの間にか買っていたiPad mini用に3つ証明書を作成しました.

あとは,これらをサーバ(QNAP)側,クライアント側に導入して動かす,という状態.
初回は結構手間がかかるのね(汗)

投稿者 chimaki : 2013年05月01日 23:17

トラックバック

このエントリーのトラックバックURL:
http://blog.projectmd.com/cgi-bin/mt/mt-tb.cgi/698

このリストは、次のエントリーを参照しています: MyCloudNas:

» OpenVPN from ちまちまでぃず.
さて,前回はQNAPでOpenVPNを使うために自前の証明局を作って証明書と鍵を... [続きを読む]

トラックバック時刻: 2013年05月03日 02:26