OpenVPNでセキュア通信

サーバー運用がかなり厳しいので寄付をしてくれる人がいたらこちら
メインPCもボロボロになってきたので、ついにほしいものリスト公開

商用のVPN製品は多数ありますが、通常はアプライアンス機で、高価なものが多いです。
ここではフリーで且つ高性能なVPNサーバ(クライアント)を導入してみます。

HP: http://openvpn.org/

インストールにはlzoが必要なので、入っていなければ入れておいてください。

なんか公式サイトが新しくなってました。
Access Serverなるものが増えてますが、今度ためしてみますか。
2.2.0がリリースされました

インストール

cd /usr/local/src
wget http://openvpn.net/release/openvpn-2.2.0.tar.gz
tar zxvf openvpn-2.2.0.tar.gz
cd openvpn-2.2.0

./configure
make
make install
cp sample-config-files/server.conf /etc/openvpn
cp sample-scripts/openvpn.init /etc/init.d/openvpn

フォワードを有効にしていない場合は以下のとおり設定をします。
vi /etc/init.d/openvpn
#echo 1 > /proc/sys/net/ipv4/ip_forward

echo 1 > /proc/sys/net/ipv4/ip_forward

chkconfig --add openvpn

こちらのサイトを参考にして、次の要件で設定を行います。

実IPアドレス: 192.168.1.1
VPN用IPアドレス: 172.16.100.1

事前準備

cd /usr/local/src/openvpn-2.2.0
mkdir /etc/openvpn
cp -r easy-rsa/2.0 /etc/openvpn/easy-rsa

/etc/openvpn/easy-rsa/vars

#最下部を適宜修正
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"

export KEY_COUNTRY="JP"
export KEY_PROVINCE="tekitou"
export KEY_CITY="tekitou"
export KEY_ORG="momo-i"
export KEY_EMAIL=" webmaster@example.com このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください "

CA証明書・秘密鍵作成

cd /etc/openvpn/easy-rsa
./vars
./clean-all
./build-ca
#問いは全部yes/noはyesで進めて、他はエンターキーだけで進めます
cp keys/ca.crt ../

サーバー証明書・秘密鍵作成

./build-key-server server
#問いは全部yes/noはyesで進めて、他はエンターキーだけで進めます
cp keys/server.crt ../
cp keys/server.key ../

DH(Diffie Hellman)パラメータ作成

./build-dh
cp keys/dh1024.pem ../

証明書廃止リスト作成

./build-key dummy
#問いは全部yes/noはyesで進めて、他はエンターキーだけで進めます

vi openssl.cnf
#最下部の行を全てコメントアウト
[ pkcs11_section ]
engine_id = pkcs11
dynamic_path = /usr/lib/engines/engine_pkcs11.so
MODULE_PATH = $ENV::PKCS11_MODULE_PATH
PIN = $ENV::PKCS11_PIN
init = 0

#[ pkcs11_section ]
#engine_id = pkcs11
#dynamic_path = /usr/lib/engines/engine_pkcs11.so
#MODULE_PATH = $ENV::PKCS11_MODULE_PATH
#PIN = $ENV::PKCS11_PIN
#init = 0

./revoke-full dummy
cp keys/crl.pem ../

設定

openvpn --genkey --secret /etc/openvpn/ta.key

変更部分だけ抜粋
vi /etc/openvpn/server.conf

proto tcp
;proto udp

server 172.16.100.0 255.255.255.0

push "route 192.168.1.0 255.255.255.0"

tls-auth ta.key 0 # This file is secret

user nobody
group nobody

status /var/log/openvpn-status.log

log-append /var/log/openvpn.log

management localhost 7505
crl-verify crl.pem

その他スクリプトの配備

iptablesの使い方については知ってるものとしてすすめてます。

/etc/openvpn/openvpn-startup

#!/bin/bash

/etc/openvpn/openvpn-shutdown
iptables -I OUTPUT -o tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT
iptables -I INPUT -i tun+ -j ACCEPT
#vpnから全てのネットワークにアクセスさせたい場合は以下
iptables -I FORWARD -i tun+ -d 192.168.1.0/24 -j ACCEPT

chmod 755 /etc/openvpn/openvpn-startup

vi /etc/openvpn/openvpn-shutdown
#!/bin/bash

delete() {
rule_number=`iptables -L $target --line-numbers -n -v|grep tun.|awk '{print $1}'|sort -r`
for num in $rule_number
do
iptables -D $target $num
done
}

target='INPUT'
delete

target='FORWARD'
delete

target='OUTPUT'
delete

ここまでできたら起動します。

/etc/init.d/openvpn start

起動ができない場合は/var/log/openvpn.logを確認して修正しましょう
起動ができたらちゃんとIPとかが立ち上がっているかを確認します。

# ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.16.100.1 P-t-P:172.16.100.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0 KiB) TX bytes:0 (0 KiB)

iptables -nL -v
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- tun+ * 0.0.0.0/0 192.168.1.0/24
0 0 ACCEPT all -- * tun+ 0.0.0.0/0 0.0.0.0/0

クライアントソフトインストール
本家のはコマンドラインからやらないといけなく、面倒なので
直感的に使えるGUIつきのをいれます。
OpenVPN2.1_rc7からインストーラにGUIが含まれるようになったので
以下のサイトから落とす必要はなくなりました。

http://openvpn.se/

クライアント証明書・秘密鍵作成

VPNサーバ側で作ること!

cd /etc/openvpn/easy-rsa
./build-key-pass client1
適当にパスフレーズを入れて後はエンターとyで進めます。

CA証明書、クライアント証明書・秘密鍵、
TLS認証鍵設置

サーバからクライアントへ以下のファイルをもって行きます。

/etc/openvpn/ca.crt
/etc/openvpn/easy-rsa/keys/client1.crt
/etc/openvpn/easy-rsa/keys/client1.key
/etc/openvpn/ta.key
#Windows側の以下に配置
C:\Program Files\OpenVPN\config

転送には必ず暗号化されたネットワーク(scpとか)やフロッピー利用などを使用して
盗聴されないようにしましょう。

Windows端末での設定

C:\Program Files\OpenVPN\sample-config\client.ovpnを
C:\Program Files\OpenVPN\config\にコピーします。

編集する箇所

remote my-server-1 1194

remote vpn.momo-i.org 1194

cert client.crt

cert client1.crt

key client.key

key client1.key

ns-cert-type server
tls-auth ta.key 1

Windows端末からvpnサーバへ接続できるかを確認します。

タスクトレイ上にあるopenvpnguiのアイコンを右クリックして、
connectをクリック。
プロンプトが出てきたら先に設定したパスフレーズを入力
アイコンが緑になったら接続完了です。

接続がちゃんとできているかをコマンドプロンプトで確認しましょう。

c:\&gt; ipconfig /all<br>Ethernet adapter ローカル エリア接続 2:<br><br>Connection-specific DNS Suffix . :<br>Description . . . . . . . . . . . : TAP-Win32 Adapter V8<br>Physical Address. . . . . . . . . : 00-00-00-00-00-00<br>Dhcp Enabled. . . . . . . . . . . : Yes<br>Autoconfiguration Enabled . . . . : Yes<br>IP Address. . . . . . . . . . . . : 172.16.100.6<br>Subnet Mask . . . . . . . . . . . : 255.255.255.252<br>Default Gateway . . . . . . . . . :<br>DHCP Server . . . . . . . . . . . : 172.16.100.5<br>Lease Obtained. . . . . . . . . . : 200x年x月xx日 xx:xx:xx<br>Lease Expires . . . . . . . . . . : 200x年x月xx日 xx:xx:xx<br><br>c:\&gt; ping 172.16.100.1<br>Pinging 172.16.100.1 with 32 bytes of data:<br><br>Reply from 172.16.100.1: bytes=32 time=14ms TTL=64<br>Reply from 172.16.100.1: bytes=32 time=17ms TTL=64<br>Reply from 172.16.100.1: bytes=32 time=16ms TTL=64<br>Reply from 172.16.100.1: bytes=32 time=14ms TTL=64<br><br>Ping statistics for 172.16.100.1:<br>Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),<br>Approximate round trip times in milli-seconds:<br>Minimum = 14ms, Maximum = 17ms, Average = 15ms<br><br>c:\&gt; ping 192.168.1.1<br>c:\&gt; ping 192.168.1.100

暇があればその他の設定などについても確認してみます。

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
また変更しました
Fill in the blank.