OpenVPNの完全ポータブル化に挑戦してみました!
|
以前に(といっても2-3ヶ月前ですが)OpenVPNをリモートアクセス用のSSL-VPNとして利用するために、User-IDとPasswordだけでの認証処理(つまりクライアント証明書を利用しないオプションです)をまずVBScriptで簡単に書いてみました。実際にテストしてみるとやはりクライアント側をUser-ID/Passwordだけで認証させるというのは手軽で便利です。
しかし、これだけではいまいちなので、Portable Appsに移植されたOpenVPN Portable(なんとOpenVPN-GUIも付属しています!)をダウンロードして、ポータブル化することにしました。作業用ディレクトリはオリジナルのものとはちょっと異なっていますが、クライアント側の設定は何の問題もなくできました。ただし、TAPデバイスを起動時および終了時に作成・削除するかどうかを問い合わせるので、これはやめるようにしたほうが便利です。 以上のようにクライアントソフトウェアは全てすんなりとポータブルにできました。例えばこれらをUSBメモリに格納して持ち運ぶことも可能です。 というわけで、クライアント側の移植は簡単にできてしまいましたが、サーバ側はちょいとてこずりました。それはOpenVPN Portableではデフォルトディレクトリの設定がいまいちはっきりしないのと、スクリプトを呼び出すときにパス名などが絶対パス名でないとうまくいかない(それにUNCのサポートがされていないのでネットワーク経由の共有ディレクトリなどは利用できない)からです。しかもまずいことに、どうもスペースはパス名としては考慮されていないようで、「Program Files」以下のディレクトリにあるとParseで失敗してしまいます。 いろいろと試してみましたが、どうもうまくいかないので現在のところ、固定的なディレクトリ(C:\など)を用意して、そこにスクリプトファイル、パスワードデータベースなどを保管することで回避しています。 ついでといっては何ですが、VBScriptだとソースコードも丸見え(セキュリティの専門家としてはいかがなものか?)なので、HSP3.2/HSPCL(CGI用に便利です!)での処理ルーチンを書きました。 また、この際セキュリティ上の問題があるとかいう環境変数経由での情報受け渡しではなくて、ファイル経由にしてみました。このテンポラリファイルの格納場所も今は固定的なディレクトリ上においています。 下記がこの状態でのアクセスログです。デバッグコードの出力もログに残っています。 -------------- Mon Aug 16 03:16:05 2010 OpenVPN 2.1.1 i686-pc-mingw32 [SSL] [LZO2] [PKCS11] built on Dec 11 2009 Mon Aug 16 03:16:05 2010 MANAGEMENT: TCP Socket listening on 127.0.0.1:1194 Mon Aug 16 03:16:17 2010 TCPv4_SERVER link local: [undef] Mon Aug 16 03:16:17 2010 TCPv4_SERVER link remote: 192.168.0.2:1633 Mon Aug 16 03:16:17 2010 192.168.0.2:1633 TLS: Initial packet from 192.168.0.2:1633, sid=5391b7eb 9751da64 '\\Mki-dell\f\OpenVPNPortable\Data\config' 上記の現在のディレクトリで CMD.EXE を開始しました。 UNC パスはサポートされません。Windows ディレクトリを既定で使用します。 [Console HSP Test] User-ID, Password found Mon Aug 16 03:16:18 2010 192.168.0.2:1633 TLS: Username/Password authentication succeeded for username 'mkuwata' Mon Aug 16 03:16:18 2010 192.168.0.2:1633 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Mon Aug 16 03:16:18 2010 192.168.0.2:1633 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Mon Aug 16 03:16:18 2010 192.168.0.2:1633 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Mon Aug 16 03:16:18 2010 192.168.0.2:1633 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Mon Aug 16 03:16:19 2010 192.168.0.2:1633 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA Mon Aug 16 03:16:19 2010 192.168.0.2:1633 [] Peer Connection Initiated with 192.168.0.2:1633 Mon Aug 16 03:16:21 2010 192.168.0.2:1633 PUSH: Received control message: 'PUSH_REQUEST' Mon Aug 16 03:16:21 2010 192.168.0.2:1633 SENT CONTROL [UNDEF]: 'PUSH_REPLY,route-gateway 192.168.201.1,ping 10,ping-restart 120,ifconfig 192.168.201.2 255.255.255.0' (status=1) Mon Aug 16 03:16:45 2010 192.168.0.2:1642 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Mon Aug 16 03:16:45 2010 192.168.0.2:1642 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Mon Aug 16 03:16:45 2010 192.168.0.2:1642 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA Mon Aug 16 03:16:45 2010 192.168.0.2:1642 [] Peer Connection Initiated with 192.168.0.2:1642 Mon Aug 16 03:16:47 2010 192.168.0.2:1642 PUSH: Received control message: 'PUSH_REQUEST' Mon Aug 16 03:16:47 2010 192.168.0.2:1642 SENT CONTROL [UNDEF]: 'PUSH_REPLY,route-gateway 192.168.201.1,ping 10,ping-restart 120,ifconfig 192.168.201.2 255.255.255.0' (status=1) Mon Aug 16 03:16:50 2010 192.168.0.2:1642 MULTI: Learn: 00:ff:79:9e:86:06 -> 192.168.0.2:1642 ------------ う〜ん、なんかいまいち不完全燃焼気味ですが、まあとりあえずクライアントもサーバも完全ポータブル化できた(?)ということで、よしとしましょう。ここまでのソフトウェアをすべてUSBメモリなどに入れておけば、外出先などでも簡単に利用できますが、やはりコンフィグレーションファイルぐらいはGUIで編集したいですね。。。。。 (^o^) |
「ソフトウェアとプログラミング」書庫の記事一覧
-
2010/11/3(水) 午後 2:01
-
2009/9/29(火) 午前 11:04
-
2009/9/22(火) 午後 5:41
-
2009/9/22(火) 午後 2:54
-
2009/9/2(水) 午後 6:34