1: 2010-03-07 (日) 23:36:48 maruo[6] [7] | 2: 2010-03-08 (月) 01:31:25 maruo[6] [8] | ||
---|---|---|---|
Line 2: | Line 2: | ||
[[OpenVPN:http://www.openvpn.jp/]]は、インターネットやLAN上に仮想的なプライベートネットワーク(VPN)を構築するためのソフトウェアです。 | [[OpenVPN:http://www.openvpn.jp/]]は、インターネットやLAN上に仮想的なプライベートネットワーク(VPN)を構築するためのソフトウェアです。 | ||
VPNを構築することにより、インターネット上であってもデータを安全にやり取りしたり、社外から社内のサーバーにアクセスできるようにすることもできます。オープンソースで、SSL/TLSをベースにした認証機構及び通信路暗号化を用いることで、セキュアに通信路を構築することが可能です。ん~、便利。 | VPNを構築することにより、インターネット上であってもデータを安全にやり取りしたり、社外から社内のサーバーにアクセスできるようにすることもできます。オープンソースで、SSL/TLSをベースにした認証機構及び通信路暗号化を用いることで、セキュアに通信路を構築することが可能です。ん~、便利。 | ||
- | ちなみに、OpenVPNでは、SSL/TLSトンネルをサーバ/クライアント間で接続して通信します。トンネルについての解説は、[[こちら>自宅鯖計画/トンネル接続って何だべ?]]を見てくださいね♪ | + | ちなみに、OpenVPNでは、SSL/TLSトンネルをサーバ/クライアント間で接続して通信します。トンネルについての解説は、[[トンネル接続って何だべ?の記事>自宅鯖計画/トンネル接続って何だべ?]]を見てくださいね♪ |
+ | |||
+ | *OpenVPNをインストールしてみよう [#rbce4c45] | ||
+ | **サーバ側 [#yc5d946a] | ||
+ | サーバ側には24時間稼働している、Linuxサーバ君にインストールします。 | ||
+ | # emerge -vuD openvpn | ||
+ | おしまい。 | ||
+ | **クライアント側 [#v7b79b03] | ||
+ | クライアントにLinuxを使用する場合は、サーバと一緒。今回は、Windowsを使用するので、[[OpenVPN GUI for Windows 日本語版:http://www.openvpn.jp/bridging/5.html]]を使用します。インストール手順は[[こちら:http://www.openvpn.jp/guiuse.html]]でね。 | ||
+ | |||
+ | *OpenVPNを設定してみよう [#gcb1e883] | ||
+ | **サーバ側 [#aa7ab458] | ||
+ | /usr/share/doc/openvpn-XXX/examples/sample-config-files/ディレクトリに、設定ファイルのサンプルがあります。こちらを利用しましょう。 | ||
+ | サーバ側ですので、この下にあるserver.conf.bz2を、/etc/openvpn配下に、openvpn.confという名称で、解凍&コピーします。この中で、特に必要な項目を… | ||
+ | :port|openvpnで通信するポートを指定します(クライアント側と合わせる) | ||
+ | :proto|tcpか、udpかを指定します。(クライアント側と合わせる) | ||
+ | :dev|tapかtunか。tapはブリッジモードかつL2レベルインタフェース(ARPが動くってことかな…)、tunはルーティングモードかつL3モード(ARPは解決しないモードかな)です。私はtunで。(クライアント側と合わせる) | ||
+ | :ca|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ca.crtを指定します。フルパスで書くのが安心。 | ||
+ | :cert|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、server.crtを指定します。フルパスで書くのが安心。 | ||
+ | :key|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、server.keyを設定します。フルパスで書くのが安心。 | ||
+ | :dh|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、dh1024.pemを設定します。 | ||
+ | :server|サーバモードで設定する、openvpn空間でのネットワークアドレスを指定します。通信先ネットワーク内で使用しているIPとは、かぶらないIPアドレスにする。例えば、通信先のNW空間が、仮に172.21.0.0/16ならば、openvpn空間のNWは、172.22.0.0/16とかね。 | ||
+ | :push|接続してきたクライアントに自動設定するパラメータを指定する。例えばルーティングテーブル。接続してできたデバイスに対して、通信先NWのルーティング(上の例なら172.21.0.0/16向けのルーティング)を設定するとか、クライアントに参照させたいDNSサーバのアドレスとか。 | ||
+ | :tls-auth,cipher|TLSによる暗号化をプラスする場合、使用する。暗号強度が上がる。 | ||
+ | :user,group|Windowsではない場合、openvpnが動作するユーザ、グループ権限が指定できる。root以外にすれば、セキュリティは向上するよね。 | ||
+ | **クライアント側 [#l2cb0b98] | ||
+ | Windowsだと、c:\Program Files(64ビット版の場合は、c:\Program Files (x86))\OpenVPN\sample-configに、サンプル設定ファイルがあります。この中のclient.ovpnをコピーして、c:\Program Files(64ビット版の場合は、c:\Program Files (x86))\OpenVPN\configに置きます。そしてこのファイルを編集しますが…注意!Windows7や、Windows Vistaは、管理者モードでないと変更セーブされませんので…気をつけてね。私は、個人のフォルダにコピーして、変更してからconfigフォルダに管理者モードでコピーしました。 | ||
+ | :proto|tcpか、udpかを指定します。(サーバ側と合わせる) | ||
+ | :dev|tapかtunか。tapはブリッジモードかつL2レベルインタフェース(ARPが動くってことかな…)、tunはルーティングモードかつL3モード(ARPは解決しないモードかな)です。私はtunで。(サーバ側と合わせる) | ||
+ | :remote|接続先のサーバ名と、ポート(サーバ側のport項で指定した値)を指定する。 | ||
+ | :ca|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ca.crtを指定します。フルパスで書くのが安心。Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 | ||
+ | :cert|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、クライアント名.crtを指定します。フルパスで書くのが安心。Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 | ||
+ | :key|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、クライアント名.keyを設定します。フルパスで書くのが安心。 | ||
+ | Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 | ||
+ | :tls-auth,cipher|TLSによる暗号化をプラスする場合、使用する。暗号強度が上がる。 | ||
+ | *暗号鍵を作成 [#y9606253] | ||
+ | OpenVPNインストール時、大体/usr/share/openvpn等のどこかに、easy-rsaというフォルダがあります。この中に、暗号鍵作成ツールが入っております。そのフォルダ内で、ツールを実行! | ||
+ | **CA局を作成 [#naf18717] | ||
+ | # source ./vars | ||
+ | # clean-all | ||
+ | # build-ca | ||
+ | Generating a 1024 bit RSA private key | ||
+ | ............++++++ | ||
+ | ...........++++++ | ||
+ | writing new private key to 'ca.key' | ||
+ | ----- | ||
+ | You are about to be asked to enter information that will be incorporated | ||
+ | into your certificate request. | ||
+ | What you are about to enter is what is called a Distinguished Name or a DN. | ||
+ | There are quite a few fields but you can leave some blank | ||
+ | For some fields there will be a default value, | ||
+ | If you enter '.', the field will be left blank. | ||
+ | ----- | ||
+ | Country Name (2 letter code) [KG]: | ||
+ | State or Province Name (full name) [NA]: | ||
+ | Locality Name (eg, city) [BISHKEK]: | ||
+ | Organization Name (eg, company) [OpenVPN-TEST]: | ||
+ | Organizational Unit Name (eg, section) []: | ||
+ | Common Name (eg, your name or your server's hostname) []:OpenVPN-CA | ||
+ | Email Address [me@myhost.mydomain]: | ||
+ | なんでも、好きなもの、識別できるものを入れておくとよいでしょう~ | ||
+ | **サーバ暗号鍵の作成 [#t6a2d753] | ||
+ | 続いて、サーバ暗号鍵を作成します。 | ||
+ | # build-key-server server | ||
+ | CA局と同じように聞かれていきますが、識別可能な奴を入れていってくださいね。んで、「Sign the certificate?(証明書に署名しますか?) [y/n]」と「1 out of 1 certificate requests certified, commit?(1つの証明書要求がありますが、コミットしますか?) [y/n]」という2つの質問が出ますが、両方にYesと答えてやって。 | ||
+ | **クライアント暗号鍵の作成 [#vd6c624e] | ||
+ | クライアント鍵の作成は、 | ||
+ | # build-key クライアント名 | ||
+ | 暗号鍵をパスワード保護したい場合は、 | ||
+ | # build-key-pass クライアント名 | ||
+ | 同じようにいろいろ聞かれますが、同じように識別可能な奴を入れていってやって…で、これは接続したいクライアント数分、クライアント名を変更してコマンドを実施します。 | ||
+ | **Diffie hellmanパラメータ作成 [#g9b2984e] | ||
+ | # build-dh | ||
+ | 少々お待ちくださいね… | ||
+ | **鍵をコピー [#q123c922] | ||
+ | そうすると、keysサブディレクトリ配下に、以下があるはず。 | ||
+ | ca.crt | ||
+ | ca.key | ||
+ | dh1024.pem | ||
+ | クライアント名.crt | ||
+ | クライアント名.csr | ||
+ | クライアント名.key | ||
+ | server.crt | ||
+ | server.csr | ||
+ | server.key | ||
+ | で、これらのうち、ca.crt(CA証明書),クライアント名.crt,クライアント名.csr(クライアント証明書),クライアント名.key(クライアント秘密鍵)をコピーして、Windows側に持ってってあげます。くれぐれも、漏えいしたりしないように気をつけつつ… | ||
+ | *その他の設定 [#ta633b9b] | ||
+ | **ブロードバンドルータ側の設定 [#ef9f4faa] | ||
+ | 普通は、ブロードバンドルータで、ポートを閉じていると思います。ブロードバンドルータ側で、openvpnを受け付けているプロトコル、ポートを、openvpnサーバ側に向けてあげる変換テーブルを設定してあげましょう。 | ||
+ | **Linuxサーバの設定 [#j3c08a4b] | ||
+ | ***Sysctl [#bc5bca59] | ||
+ | Sysctlの、ip_forwardをONにします。 | ||
+ | # echo "1" > /proc/sys/net/ipv4/ip_forward | ||
+ | ***iptables等 [#n39f0623] | ||
+ | iptablesを指定している場合は、openvpn用のNWアドレスを通過する設定をしないといけません | ||
+ | ***各種サーバ [#r9e58f78] | ||
+ | openvpn用のNWアドレスからのリクエストを受け付けるようにしましょう | ||
+ | *接続確認 [#c07b1bf1] | ||
+ | サーバ側で、openvpnを起動してみます。 | ||
+ | # /etc/init.d/openvpn start | ||
+ | クライアント側で、openvpnクライアントを起動してみましょう。ちなみに、私はブロードバンドルータの外側から接続を試してみてます。うちのプロバイダは、DHCPでクライアントへのアドレス払い出しが5つまでOKなので♪でないと試験の意味がないからね。openvpnGUIのコンテキストメニューから、『接続』を選択。さて、うまくコネクトできるでしょうか…クライアント側でログが出ますから、確認できるでしょう…ちなみに、私は、protoをTCPにしないとだめでした。ブロードバンドルーターとかいろいろあるのかしら… | ||
+ | |||
+ | *もう一工夫 [#z3477833] | ||
+ | Windows側のVPNクライアントを見ていると、USBのアクセスキーを差し込まないとVPN接続できないようなもの、ありますよね。あれにチャレンジしてみます。 | ||
+ | |||
+ | うちのdv3500君は、SDカードスロットを持っています。うちに1GbyteのSDカードがありました。こいつを暗号化して、これにさっきのクライアント暗号化キーをぶっこんでおけば…そいつがないとVPN接続できないし、安心ですね。 | ||
+ | |||
+ | **BitLocker to Go [#j8f352de] | ||
+ | Windows7 Ultimateには、BitLockerというドライブ暗号化ツールが入っています。コントロールパネルから、BitLockerドライブ暗号化を選択します。SDカードを差し込むと、BitLocker to Goというメニューが出てきます。こいつでTPMデバイスを使用しない、パスワード認証を選択すると、SDカード差し込み時にパスワードを問い合わせてくる暗号化ドライブになります。これを選択。暗号化。 | ||
+ | |||
+ | そして、出来上がった暗号化ドライブに、暗号キーを放り込んで、クライアント側OpenVPNのコンフィグファイルに、キーのパス(SDカードドライブを含むフルパス)を記述しておきます。こーすると、アクセスの手順がこうなります。 | ||
+ | |||
+ | +SDカードスロットに暗号キーを差し込む | ||
+ | +SD暗号キーのパスワード認証(BitLocker側) | ||
+ | +OpenVPN GUIで『接続』を選択 | ||
+ | +クライアント暗号キーのパスフレーズ入力(パスフレーズ付きのクライアントキー認証) | ||
+ | +サーバと接続確立 | ||
+ | +あとはおうちで使用するのと同じように、サーバにSSHやら、共有ドライブアクセスやら、IMAP使用したりできる | ||
+ | |||
+ | うっふっふ♪こいつぁ便利な上に、SDカードとセットでないとアクセスできない。SDキーをなくしても、暗号化されている上に何のキーかわからないから、安心ってわけね。 |
(This host) = https://femt.ddo.jp