4: 2010-03-14 (日) 02:15:07 maruo Attached file: TUN.jpg, Attached file: TAP.jpg |
5: 2010-03-14 (日) 22:43:03 maruo | ||
---|---|---|---|
Line 50: | Line 50: | ||
# build-dh | # build-dh | ||
少々お待ちくださいね… | 少々お待ちくださいね… | ||
+ | **TLSのHMAC認証用共有鍵作成 [#h77443fa] | ||
+ | 別に作成しなくてもよいのですが、後で述べる暗号強度を強める設定を行う場合は、共有鍵を作成します。 | ||
+ | openvpn --genkey --secret ta.key | ||
+ | |||
**鍵をコピー [#q123c922] | **鍵をコピー [#q123c922] | ||
そうすると、keysサブディレクトリ配下に、以下があるはず。 | そうすると、keysサブディレクトリ配下に、以下があるはず。 | ||
Line 61: | Line 65: | ||
server.csr | server.csr | ||
server.key | server.key | ||
- | で、これらのうち、ca.crt(CA証明書),クライアント名.crt,クライアント名.csr(クライアント証明書),クライアント名.key(クライアント秘密鍵)をコピーして、Windows側に持ってってあげます。くれぐれも、漏えいしたりしないように気をつけつつ… | + | ta.key |
- | + | で、これらのうち、ca.crt(CA証明書),クライアント名.crt,クライアント名.csr(クライアント証明書),クライアント名.key(クライアント秘密鍵),ta.key(HMAC認証用共有鍵)をコピーして、Windows側に持ってってあげます。くれぐれも、漏えいしたりしないように気をつけつつ… | |
- | *OpenVPNを設定してみよう(TUNモード) [#gcb1e883] | + | *OpenVPNを設定してみよう(共通設定) [#tffcb460] |
- | #ref(TUN.jpg,around,right) | + | OpenVPNは、TUN/TAPの2種類の設定モードがありますが、まずは共通で設定できるものからね。 |
- | TUNモードは、ルーティングモードです。VPNのネットワークは、通信する先のネットワークとは別のサブネットマスクになります。OpenVPNの設定は楽なんだけど、ルーティングの設定が難しいんだよね… | + | |
- | #clear | + | |
**サーバ側 [#aa7ab458] | **サーバ側 [#aa7ab458] | ||
/usr/share/doc/openvpn-XXX/examples/sample-config-files/ディレクトリに、設定ファイルのサンプルがあります。こちらを利用しましょう。 | /usr/share/doc/openvpn-XXX/examples/sample-config-files/ディレクトリに、設定ファイルのサンプルがあります。こちらを利用しましょう。 | ||
Line 73: | Line 74: | ||
:port|openvpnで通信するポートを指定します(クライアント側と合わせる) | :port|openvpnで通信するポートを指定します(クライアント側と合わせる) | ||
:proto|tcpか、udpかを指定します。(クライアント側と合わせる) | :proto|tcpか、udpかを指定します。(クライアント側と合わせる) | ||
- | :dev|tapかtunか。tapはブリッジモードかつL2レベルインタフェース、tunはルーティングモードかつL3モードです。ここではtunで。(クライアント側と合わせる) | ||
:ca|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ca.crtを指定します。フルパスで書くのが安心。 | :ca|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ca.crtを指定します。フルパスで書くのが安心。 | ||
:cert|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、server.crtを指定します。フルパスで書くのが安心。 | :cert|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、server.crtを指定します。フルパスで書くのが安心。 | ||
:key|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、server.keyを設定します。フルパスで書くのが安心。 | :key|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、server.keyを設定します。フルパスで書くのが安心。 | ||
:dh|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、dh1024.pemを設定します。 | :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サーバのアドレスとか。 | :push|接続してきたクライアントに自動設定するパラメータを指定する。例えばルーティングテーブル。接続してできたデバイスに対して、通信先NWのルーティング(上の例なら172.21.0.0/16向けのルーティング)を設定するとか、クライアントに参照させたいDNSサーバのアドレスとか。 | ||
- | :tls-auth,cipher|TLSによる暗号化をプラスする場合、使用する。暗号強度が上がる。 | ||
- | :user,group|Windowsではない場合、openvpnが動作するユーザ、グループ権限が指定できる。root以外にすれば、セキュリティは向上するよね。 | ||
**クライアント側 [#l2cb0b98] | **クライアント側 [#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フォルダに管理者モードでコピーしました。 | 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かを指定します。(サーバ側と合わせる) | :proto|tcpか、udpかを指定します。(サーバ側と合わせる) | ||
- | :dev|tapかtunか。tapはブリッジモードかつL2レベルインタフェース、tunはルーティングモードかつL3モードです。ここではtunで。(サーバ側と合わせる) | ||
:remote|接続先のサーバ名と、ポート(サーバ側のport項で指定した値)を指定する。 | :remote|接続先のサーバ名と、ポート(サーバ側のport項で指定した値)を指定する。 | ||
:ca|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ca.crtを指定します。フルパスで書くのが安心。Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 | :ca|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ca.crtを指定します。フルパスで書くのが安心。Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 | ||
Line 92: | Line 89: | ||
:key|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、クライアント名.keyを設定します。フルパスで書くのが安心。 | :key|[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、クライアント名.keyを設定します。フルパスで書くのが安心。 | ||
Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 | Windowsは、ファイルパスに\を使用しますが、OpenVPNは、\の指定は\\ですので、注意。 | ||
- | :tls-auth,cipher|TLSによる暗号化をプラスする場合、使用する。暗号強度が上がる。 | ||
- | |||
- | |||
- | *その他の設定 [#ta633b9b] | ||
**ブロードバンドルータ側の設定 [#ef9f4faa] | **ブロードバンドルータ側の設定 [#ef9f4faa] | ||
普通は、ブロードバンドルータで、ポートを閉じていると思います。ブロードバンドルータ側で、openvpnを受け付けているプロトコル、ポートを、openvpnサーバ側に向けてあげる変換テーブルを設定してあげましょう。 | 普通は、ブロードバンドルータで、ポートを閉じていると思います。ブロードバンドルータ側で、openvpnを受け付けているプロトコル、ポートを、openvpnサーバ側に向けてあげる変換テーブルを設定してあげましょう。 | ||
Line 102: | Line 95: | ||
Sysctlの、ip_forwardをONにします。 | Sysctlの、ip_forwardをONにします。 | ||
# echo "1" > /proc/sys/net/ipv4/ip_forward | # echo "1" > /proc/sys/net/ipv4/ip_forward | ||
+ | |||
+ | *OpenVPNを設定してみよう(TUNモード) [#gcb1e883] | ||
+ | #ref(TUN.jpg,around,right) | ||
+ | TUNモードは、ルーティングモードです。VPNのネットワークは、通信する先のネットワークとは別のサブネットマスクになります。OpenVPNの設定は楽なんだけど、ルーティングの設定が難しいんだよね… | ||
+ | #clear | ||
+ | **サーバ側 [#ubdd8bbb] | ||
+ | 先ほどのopenvpn.confの項目で、以下の項目を設定するですよ。 | ||
+ | :dev|tunを指定します。 | ||
+ | :server|サーバモードで設定する、openvpn空間でのネットワークアドレスを指定します。通信先ネットワーク内で使用しているIPとは、かぶらないIPアドレスにする。例えば、通信先のNW空間が、仮に172.21.0.0/16ならば、openvpn空間のNWは、172.22.0.0/16とかね。 | ||
+ | **クライアント側 [#ebfbd9a9] | ||
+ | 先ほどのclient.ovpnの、以下の項目を編集します。 | ||
+ | :dev|tunを指定します。 | ||
+ | |||
+ | **その他の設定 [#zecd28f8] | ||
***iptables等 [#n39f0623] | ***iptables等 [#n39f0623] | ||
iptablesを指定している場合は、openvpn用のNWアドレスを通過する設定をしないといけません | iptablesを指定している場合は、openvpn用のNWアドレスを通過する設定をしないといけません | ||
***各種サーバ [#r9e58f78] | ***各種サーバ [#r9e58f78] | ||
openvpn用のNWアドレスからのリクエストを受け付けるようにしましょう | openvpn用のNWアドレスからのリクエストを受け付けるようにしましょう | ||
+ | ***ブロードバンドルータ等 [#deab2c18] | ||
+ | 基本は、デフォルトゲートウェイにブロードバンドルータを指定している事でしょう。このデフォルトゲートウェイに、OpenVPNクライアントのアドレスはOpenVPNサーバにルーティングしてあげるルーティングテーブルを追加します。 | ||
+ | |||
+ | *OpenVPNを設定してみよう(TAPモード) [#l984cd92] | ||
+ | #ref(TAP.jpg,around,right) | ||
+ | TAPモードは、アクセス先ネットワークとクライアントが同じアドレスとなります。TAPインタフェースの設定がめんどくさいんだけど、ルーティングなんかは設定しなくていいから楽なんだよね。ただ、アクセスコントロールをしたいときは難しいですわ。 | ||
+ | |||
+ | #clear | ||
+ | **サーバ側 [#aa08ed07] | ||
+ | :dev|tap指定ね。 | ||
+ | :server-bridge|TAPの場合はこちら。ブリッジIFのアドレス、ネットマスク、クライアントに付与するアドレスの範囲を指定。 | ||
+ | **クライアント側 [#f5343d4c] | ||
+ | :dev|tap指定ね。 | ||
+ | **OpenVPNのサーバ [#c272a946] | ||
+ | ブリッジ設定を追加してやります。 | ||
+ | ***bridge-utilsのインストール [#t84c78b8] | ||
+ | emerge bridge-utils | ||
+ | ***ブリッジインタフェースを作成する [#o6c2ed73] | ||
+ | /etc/conf.d/netをこんな感じで設定。 | ||
+ | config_br0=("br0に振るIPアドレス") | ||
+ | routes_br0=( | ||
+ | "default via ゲートウェイアドレス" | ||
+ | ) | ||
+ | #eth0にはアドレス付与しない | ||
+ | config_eth0=( "null" ) | ||
+ | #tun0はTAPモードで動かす | ||
+ | tuntap_tun0="tap" | ||
+ | #tun0にはアドレス付与しない | ||
+ | config_tun0=("null") | ||
+ | #eth0とtun0をブリッジする | ||
+ | bridge_br0="eth0 tun0" | ||
+ | #net.eth0とnet.tun0を実行してからbr0を動かす | ||
+ | depend_br0() { | ||
+ | need net.eth0 net.tun0 | ||
+ | } | ||
+ | さらに、/etc/init.dに移って | ||
+ | ln -sfn net.lo net.br0 | ||
+ | ln -sfn net.lo net.tun0 | ||
+ | さらにさらに、初期設定で自動起動するように、 | ||
+ | rc-update add net.br0 default | ||
+ | |||
*接続確認 [#c07b1bf1] | *接続確認 [#c07b1bf1] | ||
サーバ側で、openvpnを起動してみます。 | サーバ側で、openvpnを起動してみます。 | ||
Line 112: | Line 160: | ||
*もう一工夫 [#z3477833] | *もう一工夫 [#z3477833] | ||
- | Windows側のVPNクライアントを見ていると、USBのアクセスキーを差し込まないとVPN接続できないようなもの、ありますよね。あれにチャレンジしてみます。 | ||
- | うちのdv3500君は、SDカードスロットを持っています。うちに1GbyteのSDカードがありました。こいつを暗号化して、これにさっきのクライアント暗号化キーをぶっこんでおけば…そいつがないとVPN接続できないし、安心ですね。 | + | **暗号化強度を上げてみる [#r6a3b622] |
+ | ***OpenVPNの設定 [#lf755405] | ||
+ | OpenVPNの設定で、以下を追加すると、暗号強度が増しますよ。 | ||
+ | :tls-auth|TLSによる暗号化をプラスする場合、使用する。暗号強度が上がる。[[ここの暗号鍵作成>Gentoo Linuxな生活/OpenVPNで悩む#y9606253]]で作成する、ta.keyを書いて、第2パラメータに0を指定。サーバで指定したら、クライアント側にも必要 | ||
+ | :cipher|暗号化アルゴリズムを指定します。サーバ、クライアントにて設定を合わせます | ||
+ | :user,group|Windowsではない場合、openvpnが動作するユーザ、グループ権限が指定できる。root以外にすれば、セキュリティは向上するよね。 | ||
+ | ***鍵長を変えてみる [#scca189d] | ||
+ | /usr/share/openvpn/easy-rsaの下に、varsというファイルがあります。こいつの | ||
+ | export KEY_SIZE=2048 | ||
+ | にすると、2048bitの鍵長になり、SSLキー自体の暗号強度が上がりますよ。デフォルトは1024bit長ね | ||
+ | |||
+ | **SSL等とポートを共有する [#x83a0432] | ||
+ | 例えば、apacheサーバ等の暗号化ポート(https:443番)を、OpenVPN用ポートと共有するってことを考えてみます。 | ||
+ | ***apache側 [#y1caed41] | ||
+ | SSL等のListenポートをずらしてやります。apacheの設定ファイルを開いて | ||
+ | #Listen 443 | ||
+ | Listen 444 | ||
+ | |||
+ | #<VirtualHost _default_:443> | ||
+ | <VirtualHost _default_:444> | ||
+ | 等ね。で、再起動 | ||
+ | |||
+ | ***OpenVPN側 [#dc29ad6e] | ||
+ | port-shareってオプションを使用します。これを行うと、httpのプロトコルを、shareしたアドレス、ポートに転送してくれます。サーバ側のopenvpn.confを開いて | ||
+ | |||
+ | port 443 | ||
+ | port-share 127.0.0.1 444 | ||
+ | |||
+ | として再起動。 | ||
+ | こうすると、127.0.0.1のポート444に転送してくれるんですよ。httpを。 | ||
**BitLocker to Go [#j8f352de] | **BitLocker to Go [#j8f352de] | ||
+ | Windows側のVPNクライアントを見ていると、USBのアクセスキーを差し込まないとVPN接続できないようなもの、ありますよね。あれにチャレンジしてみます。 | ||
+ | |||
+ | うちのdv3500君は、SDカードスロットを持っています。うちに1GbyteのSDカードがありました。こいつを暗号化して、これにさっきのクライアント暗号化キーをぶっこんでおけば…そいつがないとVPN接続できないし、安心ですね。~ | ||
Windows7 Ultimateには、BitLockerというドライブ暗号化ツールが入っています。コントロールパネルから、BitLockerドライブ暗号化を選択します。SDカードを差し込むと、BitLocker to Goというメニューが出てきます。こいつでTPMデバイスを使用しない、パスワード認証を選択すると、SDカード差し込み時にパスワードを問い合わせてくる暗号化ドライブになります。これを選択。暗号化。 | Windows7 Ultimateには、BitLockerというドライブ暗号化ツールが入っています。コントロールパネルから、BitLockerドライブ暗号化を選択します。SDカードを差し込むと、BitLocker to Goというメニューが出てきます。こいつでTPMデバイスを使用しない、パスワード認証を選択すると、SDカード差し込み時にパスワードを問い合わせてくる暗号化ドライブになります。これを選択。暗号化。 | ||
Line 126: | Line 205: | ||
+クライアント暗号キーのパスフレーズ入力(パスフレーズ付きのクライアントキー認証) | +クライアント暗号キーのパスフレーズ入力(パスフレーズ付きのクライアントキー認証) | ||
+サーバと接続確立 | +サーバと接続確立 | ||
+ | |||
+あとはおうちで使用するのと同じように、サーバにSSHやら、共有ドライブアクセスやら、IMAP使用したりできる | +あとはおうちで使用するのと同じように、サーバにSSHやら、共有ドライブアクセスやら、IMAP使用したりできる | ||
うっふっふ♪こいつぁ便利な上に、SDカードとセットでないとアクセスできない。SDキーをなくしても、暗号化されている上に何のキーかわからないから、安心ってわけね。 | うっふっふ♪こいつぁ便利な上に、SDカードとセットでないとアクセスできない。SDキーをなくしても、暗号化されている上に何のキーかわからないから、安心ってわけね。 |