最近のコメント

    OpenVPNのインストール

    最近、複数サーバーを管理していると、WinSCPとかでいちいち接続するのが億劫。 ファイルの取得・更新をSamba経由で行いたくなってきたのでVPN接続可能に。

    CentOS6.4 に OpenVPN2.3.2 をインストールする際に、easy-rsa というディレクトリがなくはまった為、手順をメモ。

    Yumでインストールで、リポジトリは epel を使用。レポジトリ追加は下記を参照。 http://www.tooyama.org/yum-addrepo-epel.html

    <インストール>

    yum -y install openvpn yum -y install easy-rsa  ← これがわからずはまった・・・

    <マスタCA証明書、鍵の生成>

    cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/

    cp -ai /usr/share/easy-rsa/2.0 /etc/openvpn/easy-rsa

    cd /etc/openvpn/easy-rsa

    <証明書の情報を編集>

    vi vars

    export KEY_COUNTRY=”JP”

    export KEY_PROVINCE=”Saitama”

    export KEY_CITY=”Tokorozawa”

    export KEY_ORG=”tkn.jp”

    export KEY_EMAIL=”xxxx@tkn.jp”

    #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

    <証明書作成 http://lab.planetleaf.com/openvpn/ より転記>

    # 環境変数設定

    . ./vars

    # keysディレクトリ初期化

    ./clean-all

    # CA(認証局)作成 (ca.crt ca.key) 問い合わせは設定済みなので全てenter

    ./build-ca

    # dh(Diffie Hellman)キー生成 (dh1024.pem)

    ./build-dh

    # サーバーキー生成 (server.crt server.csr server.key)

    # パスワードは空で問い合わせはyes

    ./build-key-server server

    # tls-authで使用する共有静的鍵の生成 (ta.key)

    openvpn –genkey –secret ta.key

    # crl-verifyを設定するための初期CRL(廃止証明書リスト)ファイルの生成

    # CRLファイルは運用中に修正可能だが、ヌルファイルを使用する事が出来ないため

    # ダミー証明を作成、廃止して初期ファイルを作成する。

    # 空パス、応答はyes ./build-key dmy ./revoke-full dmy

    # revoke-full実行後に出てくる”error 23 at~”は廃止された事の証明

    # (使えないのでエラーになっている)

    <証明書ファイルをコピー>

    cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/

    cp /etc/openvpn/easy-rsa/keys/server.crt /etc/openvpn/

    cp /etc/openvpn/easy-rsa/keys/server.key /etc/openvpn/

    cp /etc/openvpn/easy-rsa/keys/dh1024.pem /etc/openvpn/

    cp /etc/openvpn/easy-rsa/keys/crl.pem /etc/openvpn/

    cp /etc/openvpn/easy-rsa/ta.key /etc/openvpn/ chown nobody:nobody /etc/openvpn/crl.pem

    ./build-key tkn mkdir -p ~/crt-temp cp ca.crt ~/crt-temp/

    cp tkn.crt ~/crt-temp/

    cp tkn.key ~/crt-temp/

    cp ta.key ~/crt-temp/

    <ネットワーク設定>

    #openVpn

    vi /etc/sysconfig/iptables

    # 下記を「-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited 」の直前に追加

    -A RH-Firewall-1-INPUT -m state –state NEW -m udp -p udp –dport 1194 -j ACCEPT

    <起動スクリプト設定>

    vi /etc/openvpn/server.conf ← OpenVPN設定ファイル編集

    —-

    dev tun ← VPNインタフェースとしてTUNを指定(デフォルト)

    server 10.8.0.0 255.255.255.0 ← VPNクライアント割当てアドレス範囲として10.8.0.0/24を指定(デフォルト)

    ;push “route 192.168.10.0 255.255.255.0”

    ;push “route 192.168.20.0 255.255.255.0”

    push “route 192.168.1.0 255.255.255.0″ ← 追加(LAN(例:192.168.1.0/24)へのルートをVPNサーバー経由にする)

    tls-auth ta.key 0 # This file is secret ← 行頭の;を削除してコメント解除(TLS認証有効化)

    user nobody ← 行頭の;を削除してコメント解除(OpenVPN実行権限を下げる)

    group nobody ← 行頭の;を削除してコメント解除(OpenVPN実行権限を下げる)

    log-append /var/log/openvpn.log ← 行頭の;を削除してコメント解除(ログを/var/log/openvpn.logに記録する)

    management localhost 7505 ← 最終行へ追加(管理インタフェースの有効化※後述)

    crl-verify crl.pem ← 最終行へ追加(証明書廃止リストの有効化)

    <VPNインタフェース用ファイアウォール自動設定>

    vi /etc/openvpn/openvpn-startup ← OpenVPN起動時実行スクリプト新規作成

    ——————————–

    #!/bin/bash

    # VPNインタフェースiptablesルール削除スクリプト実行※必須

    /etc/openvpn/openvpn-shutdown

    # VPNサーバーからの送信を許可※必須

    iptables -I OUTPUT -o tun+ -j ACCEPT iptables -I FORWARD -o tun+ -j ACCEPT

    # VPNクライアントからVPNサーバーへのアクセスを許可する場合

    iptables -I INPUT -i tun+ -j ACCEPT

    # VPNクライアントからLANへのアクセスを許可する場合(任意)

    # (例としてVPNクライアントから192.168.1.0/24へのアクセスを許可する場合)

    # ※192.168.1.0/24側のファイアウォール等でVPNクライアント(10.8.0.0/24)からのアクセスを許可すること

    #iptables -I FORWARD -i tun+ -d 192.168.1.0/24 -j ACCEPT

    # VPNクライアントからLAN内特定マシンのみへのアクセスを許可する場合(任意)

    # (例としてVPNクライアントから192.168.1.3へのアクセスを許可する場合)

    # ※192.168.1.3側のファイアウォール等でVPNクライアント(10.8.0.0/24)からのアクセスを許可すること

    #iptables -I FORWARD -i tun+ -d 192.168.1.3 -j ACCEPT

    ——————————–

    chmod +x /etc/openvpn/openvpn-startup ← OpenVPN起動時実行スクリプトへ実行権限付加

    <VPNインタフェース用ファイアウォール自動設定解除>

    vi /etc/openvpn/openvpn-shutdown ← OpenVPN停止時実行スクリプト新規作成

    ——————————–

    #!/bin/bash

    # VPNインタフェース(tun+)用iptablesルール削除関数
    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 }

    # VPNインタフェース(tun+)用iptables受信ルール削除
    target=’INPUT’ delete

    # VPNインタフェース(tun+)用iptables転送ルール削除
    target=’FORWARD’ delete

    # VPNインタフェース(tun+)用iptables送信ルール削除
    target=’OUTPUT’ delete

    ——————————–

    chmod +x /etc/openvpn/openvpn-shutdown ← OpenVPN停止時実行スクリプトへ実行権限付加

    <OpenVPNログローテーション設定>

    vi /etc/logrotate.d/openvpn ← OpenVPNログローテーション設定ファイル新規作成

    ——————————–

    /var/log/openvpn.log
    {
    missingok notifempty sharedscripts postrotate /etc/rc.d/init.d/openvpn restart 2>&1 > /dev/null || true endscript
    }

    ——————————–

    <OpenVPN起動(サーバー側)>

    # OpenVPN起動

    vi /etc/rc.d/init.d/openvpn ← OpenVPN起動スクリプト編集

    ——————————–

    echo 1 > /proc/sys/net/ipv4/ip_forward ← 行頭の#を削除してコメント解除(パケット転送有効化) ——————————–

    /etc/rc.d/init.d/openvpn start ← OpenVPN起動

    openvpn を起動中: [ OK ]

    chkconfig openvpn on ← OpenVPN自動起動設定

    <Windowsクライアント側設定>

    # ダウンロード http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.2-I001-x86_64.exe

    C:\Program Files\OpenVPN\sample-config\client.ovpn を下記にコピー

    C:\Program Files\OpenVPN\config\client.ovpn

    # 設定ファイルを編集

    C:\Program Files\OpenVPN\config\client.ovpn

    remote 133.242.165.31 1194

    cert tkn.crt

    key tkn.key

    ns-cert-type server

    tls-auth ta.key 1

    <CA証明書、クライアント証明書・秘密鍵、TLS認証鍵設置 ※クライアント側作業>

    サーバー側からCA証明書(/etc/openvpn/ca.crt)、クライアント証明書(/etc/openvpn/easy-rsa/keys/tkn.crt)、クライアント秘密鍵(/etc/openvpn/easy-rsa/keys/tkn.key)、TLS認証鍵(/etc/openvpn/ta.key)をクライアント側へ持ち込み、設定ファイル格納フォルダ(C:\Program Files\OpenVPN\config)へ格納する。

    ※CA証明書、クライアント証明書、クライアント秘密鍵、TLS認証鍵をクライアント側へ持ち込む際は、フロッピーディスク、USBメモリ等の可搬媒体経由または、SCPやSFTP等の暗号化されたネットワーク経由等の安全な経路で持ち込むこと

    クライアントを実行し、タスクトレイのアイコンをクリックし接続

    尚、WindowsのOpenVPNクライアントのアイコンが黄色から先に進まず、ログに何も書かれていない場合、openvpn.exeをタスクマネージャから削除し、再度起動したところ正常に動いたことがあったので、一応メモ。

    以上

    Comments are closed.