====== 60 CentOS OpenVPN ====== ===== ①OpenVPNインストール ===== ==== 1.yumでインストール ==== [[01_linux:01_net:11_yum_rpmforgeレポジトリ追加|]]を行ってから # yum install --enablerepo=rpmforge openvpn # rpm -qa | grep openvpn openvpn-2.2.2-1.el5.rf ==== 2.OpenVPNの設定ファイルをコピーしておく ==== # cp /usr/share/doc/openvpn-*/sample-config-files/server.conf /etc/openvpn/ ==== 3.ログローテーション設定 ==== # vi /etc/logrotate.d/openvpn /var/log/openvpn.log { missingok notifempty sharedscripts postrotate /etc/rc.d/init.d/openvpn restart 2>&1 > /dev/null || true endscript } ==== 4.起動スクリプト修正 ==== FORWARD設定行のコメントアウトを外してforward許可しておく # vi /etc/rc.d/init.d/openvpn echo 1 > /proc/sys/net/ipv4/ip_forward ==== 5.自動起動ON ==== # chkconfig openvpn on ===== ②証明書、鍵の作成 ===== ==== 1.CA証明書、秘密鍵作成 ==== # cd /etc/openvpn/ # cp -r /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/ easy-rsa # cd easy-rsa # vi vars export KEY_COUNTRY="JP" export KEY_PROVINCE="ToKyo" export KEY_CITY="Shibuya-ku" export KEY_ORG="hoge" export KEY_EMAIL="admin@hoge.hoge" #export KEY_EMAIL=mail@host.domain ← 行頭に#を追加してコメントアウト #export KEY_CN=changeme ← 行頭に#を追加してコメントアウト #export KEY_NAME=changeme ← 行頭に#を追加してコメントアウト #export KEY_OU=changeme ← 行頭に#を追加してコメントアウト #export PKCS11_MODULE_PATH=changeme ← 行頭に#を追加してコメントアウト #export PKCS11_PIN=1234 ← 行頭に#を追加してコメントアウト 証明書/鍵作成用環境変数設定ファイル内容をシステムに反映 # source vars 証明書/鍵作成先ディレクトリ初期化※OpenVPNインストール後最初の1回のみ # ./clean-all # sh build-ca ← CA証明書・秘密鍵作成 CA証明書コピー # cp keys/ca.crt /etc/openvpn/ ==== 2.サーバ証明書・秘密鍵作成 ==== # sh build-key-server server # cp keys/server.crt /etc/openvpn/ # cp keys/server.key /etc/openvpn/ ==== 3.DH(Diffie Hellman)パラメータ作成 ==== # sh build-dh ==== 4.TLS認証鍵用意 ==== # openvpn --genkey --secret /etc/openvpn/ta.key ==== 5.クライアント証明書・秘密鍵作成 ==== ※クライアント名は一意であること=既に作成済のクライアント名と重複しないこと # cd /etc/openvpn/easy-rsa/ # source vars === パスフレーズ認証あり証明書 === # sh build-key-pass client1 === パスフレーズ認証なし証明書 === # sh build-key client1 === 作成された証明書、鍵の場所 === * クライアント証明書(/etc/openvpn/easy-rsa/keys/client1.crt) * クライアント秘密鍵(/etc/openvpn/easy-rsa/keys/client1.key) ==== 6.証明書廃止リスト作成 ==== # sh build-key dmy # sh revoke-full dmy # cp keys/crl.pem /etc/openvpn/ # chown openvpn:openvpn /etc/openvpn/crl.pem ※最後のchownをしておかないと、下記のエラーになる CRL: cannot read: crl.pen: No such file or directory (errno=2) ===== VPNクライアントの削除 ===== === 1.クライアント証明書廃止 ==== client1のクライアント証明書廃止 # cd /etc/openvpn/easy-rsa/ # source vars # sh revoke-full client1 # /bin/cp keys/crl.pem /etc/openvpn/ ← 証明書廃止リストを所定のディレクトリへ上書きコピー === 2.接続中クライアントの強制切断 === # telnet localhost 7505 ← OpenVPN管理インタフェース起動 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. >INFO:OpenVPN Management Interface Version 1 -- type 'help' for more info status ← VPN接続状況確認 OpenVPN CLIENT LIST Updated,Mon Mar 10 16:16:53 2014 Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since client1,210.172.143.2:62974,888323,892928,Sun Mar 9 04:03:54 2014 ROUTING TABLE Virtual Address,Common Name,Real Address,Last Ref 10.8.0.6,client1,210.172.143.2:62974,Mon Mar 10 15:53:00 2014 GLOBAL STATS Max bcast/mcast queue length,0 END kill client1 ← client1強制切断 SUCCESS: common name 'client1' found, 1 client(s) killed status ← VPN接続状況確認 OpenVPN CLIENT LIST Updated,Tue Nov 28 19:29:05 2006 Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since ROUTING TABLE Virtual Address,Common Name,Real Address,Last Ref GLOBAL STATS Max bcast/mcast queue length,0 END exit ← OpenVPN管理インタフェース終了 Connection closed by foreign host. == 執行した証明書の復旧 == [[http://server-setting.info/centos/openvpn-revoke-client.html#openvpn_4]]