OpenVPN
 サーバの構築
 サーバの起動
 GWのNAT設定
 リモートアクセス

 OpenVPNサーバの構築
 ・PKIの構築
CA(認証局)の証明書の生成
CA秘密鍵の生成
OpenVPNサーバとクライアントの証明書の生成
OpenVPNサーバとクライアントの秘密鍵の生成
CAの証明書と秘密鍵を生成(OpenVPN添付のスクリプトを使用)
スクリプト
openvpn-2.x.x/easy-rsa/ (PKG)
easy-rsa ディレクトリ (ソース展開トップdir)
「easy-rsa」ディレクトリを「/etc/openvpn」へコピー
easy-rsa/vars ファイル(証明書と秘密鍵生成時の使用項目)を編集
export KEY_CONTRY=JP
export KEY_PROVINCE=TOKYO
export KEY_CITY=<市町村名>
export KEY_ORG=<団体名>
export KEY_EMAIL=<メール>
証明書と秘密鍵生成
# ../vars
# ./clean-all
# ./build-ca
生成確認
easy-rsa/keys/ca.crt
easy-rsa/keys/ca.key
サーバの設定ファイルで指定されたディレクトリへ格納
OpenVPNサーバの証明書と秘密鍵を生成(OpenVPN添付のスクリプトを使用)
# ./build-key-server
build-key-server スクリプトを実行、パラメータ有り
Common Name は、「server」
Sign the certificate? は、「y」
1 out of 1 certificate requests certified. commit? は、「y」
生成確認
easy-rsa/keys/server.crt
easy-rsa/keys/server.key
サーバの設定ファイルで指定されたディレクトリへ格納
Diffie-Hellmanパラメータの生成
# ./build-dh
easy-rsa/vars ファイルのDiffie-Hellmanパラメータの強度はデフォルト(1024ビット)
easy-rsa/keys/dh1024.pem
easy-rsa/keys/server.csr は、CAへの申請書、CA署名の証明書が出来ると削除可
 ・openvpn/server.confの設定
ファイル作成
server項目の設定
port 1194 待ち受けポート
port 1194 待ち受けポート
proto udp 使用プロトコル
dev tun 使用デバイス
ca easy-rsa/keys/ca.crt CA証明書の所在
cert easy-rsa/keys/server.crt サーバ証明書の所在
key easy-rsa/keys/server.key サーバ秘密鍵の所在
dh easy-rsa/keys/dh1024.pem Diffie-Hellmanパラメータの所在
server 10.8.0.0 255.255.255.0 使用する仮想IP
ifconfig-pool-persist ipp.txt クライアントとIP
push "route 192.168.1.1 255.255.255.0" クライアントのアクセス可
keepalive 10 120 pingを10秒間隔、120秒NG
comp-lzo lzo圧縮有効
persist-key 再起動時、秘密鍵の再読込みせず
persist-tun 再起動時、tunデバイス再Openせず
status openvpn-status.log 現在の接続状況
verb 3 ログの詳細度
 ・IPフォワーディング(カーネルパラメータ)の設定
何らかの用途で事前に設定されている場合は不要
デフォルトで有効にする場合
rc.localへの組込みや、sysctl.conf の設定など
 ・OpenVPNサーバがGW上で動作している場合は、FWを通過させる
 ・# iptables -A FORWARD -I tun+ -j ACCEPT
tunデバイス(OpenVPNサーバ)からのパケットをFWを通過させる

 OpenVPNサーバの起動
 ・OpenVPNサーバの手動起動
 ・# cd /etc/openvpn/
 ・# openvpn /etc/openvpn server.conf

TAN/TAP device tun0 opend

initialozation Sequence Complated
 ・OpenVPNサーバの自動起動
RPM PKG の場合、initscript が設定

 GW(ルータ)のNATの設定
 ・# iptables -t nat -A PREROUTING -p udp -d <G-IP> --dport 1194 -j DNAT --to-destination <L-IP>:1194
待ち受け口
UDP 1194番
クライアント側でも使用

 リモートアクセスVPN
 ・OpenVPNクライアントをOpenVPNサーバへ接続
社員に対する証明書と秘密鍵を生成(OpenVPN添付のスクリプトを使用)
証明書と秘密鍵を生成スクリプト
build-req 署名リクエストと秘密鍵の生成
build-req-pass 署名リクエストと秘密鍵の生成
build-key 証明書と秘密鍵の生成
build-key-pass 証明書と秘密鍵の生成
sign-req 署名リクエストからCA署名済み証明書のの生成
社員に対する証明書と秘密鍵を生成
Windows用のスクリプトが無い場合
OpenVPNサーバで、build-req-pass スクリプト実行
(サーバがWindowsの場合、build-req スクリプト実行)
# ../vars
# ./build-req-pass employees
パスフレーズ入力
Common Name は、「employees」
署名済み証明書と秘密鍵を生成
OpenVPNサーバの管理者は、安全な経路でユーザへ送付
ユーザは、C:\Program Files\OpenVPN\config\ へ格納
Windows以外のクライアントの場合
クライアントで、build-req-pass スクリプト実行
# ../vars
# ./build-req-pass employees
署名リクエスト(employees.csr)と秘密鍵作成
署名リクエストから署名済み証明書の作成を、OpenVPNサーバの管理者へ依頼
メールなどで送付
OpenVPNサーバの管理者
署名リクエストを、easy-rsa/keys/ ディレクトリへ格納
# cd /etc/openvpn/easy-rsa/
# ../vars
# ./build-req-pass employees
OpenVPNサーバの管理者は、安全な経路でユーザへ送付
ユーザは、easy-rsa/keys/ ディレクトリへ格納
OpenVPNクライアントの設定    「/etc/openvpn/client.conf」
client
dev tun 使用デバイス
proto udp 使用プロトコル
remote 172.16.9.26 1194 サーバのG-IPとポート
resolv-retry infinite 名前解決を無制限に
nobind 固定ポートを使用しない
persist-key 再起動時、秘密鍵の再読込みせず
persist-tun 再起動時、tunデバイス再Openせず
ca easy-rsa/keys/ca.crt CA証明書の所在
cert easy-rsa/keys/employees.crt クライアント証明書の所在
key easy-rsa/keys/employees.key クライアント秘密鍵の所在
comp-lzo lzo圧縮有効
verb 3 ログの詳細度
Windows
C:\Program Files\OpenVPN\config\client.ovpn
ディレクトリの区切り文字「\\」
ファイル名は、ダブルクォテーションで、くくる
OpenVPNサーバの設定
アクセス制御を行わない場合、そのまま使用
OpenVPNクライアントの起動
Windows
GUIアイコン右クリック、Connect
停止、Desconnect
Linux 手動
# cd /etc/openvpn/
# openvpn  /etc/openvpn/ client.conf
 ・OpenVPNクライアント別にアクセス制御
クライアント証明書の Common Name を判断、証明書別に固有の設定可