Linux活用レシピ > AWS活用 > OpenVPNでAWSに接続

RHEL7のOpenVPNを使ってAWSに接続


クライアント準備

    サーバーのサービス設定が完了しましたので、以下のネットワーク図で赤枠の部分の、VPNで接続するクライアントを設定していきます。

  1. クライアントの設定ですが、まずはクライアント証明書を、OpenVPNサーバーで作成します。
    OpenVPNサーバー設定時に接続した手順で、OpenVPNサーバーにターミナルソフト「PuTTY」で接続します。
    login as:
    

  2. まず最初は「ec2-user」でログインします。
    以下の通り入力します。
    login as: ec2-user [ENTER]
    
    以下の通り表示されればログイン完了です。
    Authenticating with public key "imported-openssh-key"
    Last login: Sat Jan  6 08:54:34 2018 from XXX.XXX.XXX.XXX
    [ec2-user@ip-10-0-0-XXX ~]$
    
    ※「XXX」にはIPアドレスの数値が表示されます。

  3. 次にrootユーザになり、/etc/openvpn/easyrsa3/にカレントディレクトリを変更します。
    以下の通り入力します。
    [ec2-user@ip-10-0-0-XXX ~]$ sudo su [ENTER]
    [root@ip-10-0-0-XXX ~]# cd /etc/openvpn/easyrsa3/ [ENTER]
    [root@ip-10-0-0-XXX easyrsa3]#
    

  4. クライアント証明書・秘密鍵(パスフレーズ認証あり)を作成します。
    以下の通り入力します。
    [root@ip-10-0-0-XXX easyrsa3]# ./easyrsa build-client-full client1
    [ENTER]
    
    ※「client1」部分が証明書の名前になりますので、クライアントごとに変更します。

    鍵が生成されたのち、以下の通りクライアント証明書・秘密鍵を使う際のパスフレーズを入力するよう要求されます。
    Generating a 2048 bit RSA private key
    .........................................................................................+++
    ................................................................................+++
    writing new private key to '/etc/openvpn/easyrsa3/pki/private/client1.key.TzJivVcDPK'
    Enter PEM pass phrase:

    パスフレーズを入力し[ENTER]を入力します。
    Enter PEM pass phrase:[ENTER]

    またここで、入力したパスフレーズはWindowsなどのように「***」といった文字でエコーバック表示されません。
    これはそばにいる人がパスワードが何文字か分からないようにするためです。
    パスフレーズ入力後、再度パスフレーズの確認入力が要求されますので、同じものを入れてください。
    Verifying - Enter PEM pass phrase:[ENTER]

    さらに、以下の通りCA認証局のパスフレーズが求められます。
    以前認証局を設定する際に決めて入力した⇒何でも良いから4文字以上入力する」とした、パスフレーズを入力します。
    ----- Using configuration from ./openssl-easyrsa.cnf Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key:[ENTER]

    以下の通り表示されればクライアント証明書・秘密鍵は完成です。
    Check that the request matches the signature
    Signature ok
    The Subject's Distinguished Name is as follows
    commonName            :ASN.1 12:'client1'
    Certificate is to be certified until Feb 22 12:56:21 2028GMT(3650days)
    
    Write out database with 1 new entries
    Data Base Updated
    

  5. 続いて、OpenVPNクライアントの設定ファイルclient.confを作成します。
    まず、サーバー上にあるクライアント設定ファイルサンプル
    (/usr/share/doc/openvpn-*/sample/sample-config-files/client.conf)をコピーして
    編集します。
    [root@ip-10-0-0-XXX easyrsa3]# cp -ip /usr/share/doc/openvpn-*/sample/sample-config-files/client.conf /tmp[ENTER]
    [root@ip-10-0-0-XXX easyrsa3]# vi /tmp/client.conf[ENTER]
    「client.conf」ファイルは以下のとおりに編集します。
    # The hostname/IP and port of the server.
    # You can have multiple remote entries
    # to load balance between the servers.
    remote my-server-1 1194
    ↓↓↓↓↓my-server-1部分を以下の通り変更します。
    remote xxx.xxx.xxx.xxx 1194
    
    xxx.xxx.xxx.xxx」部分はOpenVPNサーバーのグローバルアドレスを指定します。
    確認方法は「OpenVPNサーバー設定」時に確認したインスタンスの「IPv4パブリックIP」に記載されている「パブリックIPアドレス」がそれになります。
    次に・・・。
    # SSL/TLS parms.
    # See the server config file for more
    # description.  It's best to use
    # a separate .crt/.key file pair
    # for each client.  A single ca
    # file can be used for all clients.
    ca ca.crt
    cert client.crt
    key client.key
    ↓↓↓↓↓client部分を先ほど作成したクライアント証明書の名前
              「client1」に変更します。
    ca ca.crt
    cert client1.crt
    key client1.key
    client1」部分が証明書の名前になりますので、
                    今後クライアントごとに変更します。
    次に・・・。 # Verify server certificate by checking that the # certicate has the correct key usage set. # This is an important precaution to protect against # a potential attack discussed here: # http://openvpn.net/howto.html#mitm # # To use this feature, you will need to generate # your server certificates with the keyUsage set to # digitalSignature, keyEncipherment # and the extendedKeyUsage to # serverAuth # EasyRSA can do this for you. remote-cert-tls server ↑↑↑こちらの記載("Man-in-the-Middle"攻撃対策)があるか確認します。 次に・・・。 # If a tls-auth key is used on the server # then every client must also have the key. tls-auth ta.key 1 ↑↑↑こちらの記載(TLS認証有効化)があるか確認します。 あとは・・・。 OpenVPN経由でSambaへのアクセスする場合にエラーになる際など パケットのサイズが MTU を超える場合に調整が必要な時は、以下 を最終行に追記してください。 fragment 1280 mssfix 1280 link-mtu 1400 なお、この記述を入れる場合はOpenVPNサーバー側の設定ファイル /etc/openvpn/server.conf にも同じ記述が必要です。

    続いて、WindowsクライアントでOpenVPNクライアントソフトをインストールします。

  6. OpenVPNのWindowsインストーラパッケージをダウンロードします。
    ダウンロードページから、Windowsインストーラ(Vista以降対応・32ビット版/64ビット版統合インストーラ)をダウンロードします。


  7. インストーラを起動する
    ダウンロードしたexeファイルをダブルクリックして起動します。
    そのまま[Next>]をクリック。


    ライセンス情報が表示されますので、問題なければ[I Agree]をクリック。


    インストールするパッケージを選択します。通常はデフォルトのままでOKですが、個別に不要または必要なパッケージがあれば選択してください。選択したら[Next>]をクリック。

    インストール先のディレクトリを指定します。通常はデフォルトのままで問題ありません。[Install]をクリックすると、インストールが開始されます。

    インストールの途中で、TAPデバイスのデバイスドライバのインストールで確認が求められる場合があります。OpenVPNを使用する上でこのデバイスは必要なものなので、必ずインストールしてください。

    「Completed」と表示されたら、インストール完了です。[Next>]をクリック。

    以上でインストール完了です。

    続いて、サーバーで作った設定ファイルとクライアントの鍵を安全にコピーします。

  8. サーバー側から下記ファイルをクライアント側へWinSCP等の暗号化されたネットワーク経由等の安全な経路で持ち込み、設定ファイル格納フォルダ(C:\Program Files\OpenVPN\config)へ格納します。
    説明 サーバーの保存場所
    CA証明書/etc/openvpn/ca.crt
    クライアント証明書/etc/openvpn/easyrsa3/pki/issued/client1.crt
    クライアント秘密鍵/etc/openvpn/easyrsa3/pki/private/client1.key
    TLS認証鍵/etc/openvpn/ta.key

    上記すべてをクライアントの以下の設定ファイル格納フォルダに保管
    C:\Program Files\OpenVPN\config

    なお、これらのファイルは「ec2-user」でアクセスできないので、一旦以下のように圧縮してまとめるなどします。
    [root@ip-10-0-0-XXX easyrsa3]# zip -D /tmp/cert.zip /etc/openvpn/ca.crt /etc/openvpn/easyrsa3/pki/issued/client1.crt /etc/openvpn/easyrsa3/pki/private/client1.key /etc/openvpn/ta.key[ENTER]
    これで、「/tmp/cert.zip」をクライアントにコピーして、「C:\Program Files\OpenVPN\config」に解凍して保管しましょう。

    なお、WinSCPでコピーする場合は、以下の通りWinSCPを「管理者として実行」と選択して、「C:\Program Files\OpenVPN\config」に直接アクセスできるよう、起動します。
    WinSCPが起動しますので、設定をクリックします。

    「高度なサイトの設定」画面が表示されますので、「SSH」-「認証」で表示される「秘密鍵」にPuttyで使用した鍵ファイルを指定します。

    鍵ファイルが指定出来たら「OK」ボタンをクリックします。

    元の画面に戻りますので、
    「ホスト名」にOpenVPNサーバーのグローバルアドレスを入力します。
    確認方法は「OpenVPNサーバー設定」時に確認したインスタンスの「IPv4パブリックIP」に記載されている「パブリックIPアドレス」がそれになります。
    そして「ユーザー名」欄に「ec2-user」を入力、パスワードは空白にして、「ログイン」ボタンをクリックします。

    鍵の確認画面が表示されますので、確認後「はい」ボタンをクリックします。

    以下の通り接続できますので、先ほど保存した「/tmp/cret.zip」を「C:\Program Files\OpenVPN\config」にコピーして解凍しましょう。


    コピーが終われば、大切なファイルですので、削除しておきましょう。
    [root@ip-10-0-0-XXX easyrsa3]# rm /tmp/cert.zip[ENTER]

  9. 同じようにWinSCPを使って。クライアント設定ファイル(client.conf)をclient.ovpnという名前で、設定ファイル格納フォルダ(C:\Program Files\OpenVPN\config)へ名前を変えて格納しましょう。
    説明 サーバーの保存場所
    クライアント設定ファイル/tmp/client.conf

    上記ファイルをclient.ovpnという名前に変更し以下の設定ファイル格納フォルダに保管
    C:\Program Files\OpenVPN\config


    以下の通り、同じフォルダ直下にファイルが保存出来れば、OpenVPNのクライアント準備は完了です。