GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS7でOpenVPNサーバーをセットアップする方法

信頼できないパブリックWi-Fiネットワークに接続しているときにインターネットに安全かつ確実にアクセスする場合でも、地理的に制限されたコンテンツをバイパスする場合でも、リモートで作業しているときに同僚が会社のネットワークに安全に接続できるようにする場合でも、VPNを使用するのが最善のソリューションです。

VPNを使用すると、リモートVPNサーバーに接続して、トラフィックデータを非公開にすることで、接続を暗号化して安全にし、匿名でWebを閲覧できます。

選択できる商用VPNプロバイダーはたくさんありますが、プロバイダーがアクティビティをログに記録していないことを本当に確信することはできません。最も安全なオプションは、独自のVPNサーバーをセットアップすることです。

このチュートリアルでは、OpenVPNをインストールして構成することにより、独自のVPNサーバーをセットアップするプロセスについて説明します。また、クライアント証明書を生成し、構成ファイルを作成する方法も示します

OpenVPNは、フル機能のオープンソースのSecure Socket Layer(SSL)VPNソリューションです。 SSL/TLSプロトコルを使用してOSIレイヤー2または3の安全なネットワーク拡張を実装します。

前提条件#

このチュートリアルを完了するには、次のものが必要です。

  • OpenVPNインスタンスをホストするためのCentOS7サーバーへのsudoアクセス。
  • サーバーでファイアウォールを構成する必要があります。
  • CA(認証局)として機能する専用のマシンを分離します。 CA専用のマシンを使用したくない場合は、OpenVPNサーバーまたはローカルマシンでCAを構築できます。 CAの構築が完了したら、CAディレクトリを安全な場所またはオフラインの場所に移動することをお勧めします。

このチュートリアルでは、CAが別のLinuxマシン上にあることを前提としています。サーバーをCAとして使用している場合は、同じ手順(わずかな変更を加えたもの)が適用されます。

別のCAマシンを使用している理由は、攻撃者がサーバーに侵入するのを防ぐためです。攻撃者がなんとかCA秘密鍵にアクセスした場合、それを使用して新しい証明書に署名し、VPNサーバーへのアクセスを許可する可能性があります。

EasyRSAを使用したCAの構築#

新しいOpenVPNサーバーをセットアップするときの最初のステップは、公開鍵インフラストラクチャ(PKI)を構築することです。そのためには、以下を作成する必要があります。

  • 認証局(CA)の証明書と秘密鍵。
  • CAによって発行されたサーバー用の個別の証明書と秘密鍵のペア。
  • CAによって発行されたクライアントごとに個別の証明書と秘密鍵のペア。

セキュリティ上の理由から前提条件で述べたように、スタンドアロンマシン上にCAを構築します。

CA、証明書要求、および署名証明書を作成するには、EasyRSAという名前のCLIユーティリティを使用します。

CAマシンで次の手順を実行します 。

  1. 次のwgetコマンドを使用して、プロジェクトのGithubリポジトリからEasyRSAの最新リリースをダウンロードすることから始めます。

    cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgz
  2. ダウンロードが完了したら、次のように入力してアーカイブを抽出します。

    tar xzf EasyRSA-nix-3.0.5.tgz
  3. EasyRSAディレクトリに移動し、varsという名前の構成ファイルを作成します vars.exampleをコピーして ファイル:

    cd ~/EasyRSA-3.0.5/cp vars.example vars
  4. ファイルを開き、コメントを外して、情報に一致するように次のエントリを更新します。

    nano ~/EasyRSA-3.0.5/vars
    〜/ EasyRSA-3.0.5 / vars
    set_var EASYRSA_REQ_COUNTRY    "US"
    set_var EASYRSA_REQ_PROVINCE   "Pennsylvania"
    set_var EASYRSA_REQ_CITY       "Pittsburgh"
    set_var EASYRSA_REQ_ORG        "Linuxize"
    set_var EASYRSA_REQ_EMAIL      "[email protected]"
    set_var EASYRSA_REQ_OU         "Community"

    ファイルを保存して閉じます。

  5. 最初にCAキーペアを生成する前に、次のコマンドで新しいPKIを初期化する必要があります。

    ./easyrsa init-pki
    init-pki complete; you may now create a CA or requests.
    Your newly created PKI dir is: /home/causer/EasyRSA-3.0.5/pki
  6. 次のステップは、CAを構築することです:

    ./easyrsa build-ca

    証明書に署名するたびにパスワードの入力を求められたくない場合は、build-caを実行してください nopassを使用したコマンド オプション:./easyrsa build-ca nopass

    ...
    Enter PEM pass phrase:
    Verifying - Enter PEM pass phrase:
    -----
    ...
    -----
    Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
    
    CA creation complete and you may now import and sign cert requests.
    Your new CA certificate file for publishing is at:
    /home/causer/EasyRSA-3.0.5/pki/ca.crt

    CAキーのパスワードを設定し、CAの一般名を入力するように求められます。

    完了すると、スクリプトは2つのファイルを作成します—CA公開証明書ca.crt およびCA秘密鍵ca.key

    認証局(CA)が作成されたので、これを使用して、1つまたは複数のOpenVPNサーバーおよびクライアントの証明書要求に署名できます。

OpenVPNとEasyRSAのインストール#

次のステップは、EPELのリポジトリで利用可能なOpenVPNパッケージをインストールし、EasyRSAの最新バージョンをダウンロードすることです。

次の手順は、OpenVPNサーバーで実行されます 。

  1. 次のように入力して、EPELリポジトリを有効にします。

    sudo yum install epel-release
  2. リポジトリが有効になったら、次のコマンドを使用してOpenVPNをインストールします。

    sudo yum install openvpn
  3. EasyRSAの最新リリースをダウンロードします:

    cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgz

    ダウンロードが完了したら、次のコマンドを入力してアーカイブを抽出します。

    tar xzf EasyRSA-nix-3.0.5.tgz

    CAマシンでPKIをすでに初期化していますが、OpenVPNサーバーで新しいPKIを作成する必要もあります。これを行うには、以前と同じコマンドを使用します。

    cd ~/EasyRSA-3.0.5/./easyrsa init-pki

    それでも2つのEasyRSAインストールが必要な理由がわからない場合は、このEasyRSAインスタンスを使用して、CAマシンのEasyRSAインスタンスを使用して署名される証明書要求を生成するためです。 。

    複雑に聞こえるかもしれませんが、少し混乱しますが、チュートリアル全体を読むと、実際には複雑ではないことがわかります。

Diffie-HellmanおよびHMACキーの作成#

このセクションでは、鍵交換中に使用される強力なDiffie-Hellman鍵と、接続にセキュリティの層を追加するためのHMAC署名ファイルを生成します。

  1. OpenVPNサーバーのEasyRSAディレクトリに移動します anfはDiffie-Hellman鍵を生成します:。

    cd ~/EasyRSA-3.0.5/./easyrsa gen-dh

    スクリプトは2048ビット長のDHパラメータを生成します。これは、特にリソースが少ないサーバーでは、時間がかかる場合があります。完了すると、次のメッセージが画面に印刷されます。

    DH parameters of size 2048 created at /home/serveruser/EasyRSA-3.0.5/pki/dh.pem

    dh.pemをコピーします /etc/openvpnへのファイル ディレクトリ:

    sudo cp ~/EasyRSA-3.0.5/pki/dh.pem /etc/openvpn/
  2. 次に、openvpnを使用してHMAC署名を生成します バイナリ:

    openvpn --genkey --secret ta.key

    完了したら、ta.keyをコピーします /etc/openvpnへのファイル ディレクトリ:

    sudo cp ~/EasyRSA-3.0.5/ta.key /etc/openvpn/

サーバー証明書と秘密鍵の作成#

このセクションでは、OpenVPNサーバーの秘密鍵と証明書のリクエストを生成する方法について説明します。

  1. OpenVPNサーバーのEasyRSAディレクトリに移動します サーバーの新しい秘密鍵と証明書要求ファイルを生成します:

    cd ~/EasyRSA-3.0.5/./easyrsa gen-req server1 nopass

    nopassを使用しています パスワードを入力せずにOpenVPNサーバーを起動したいので引数。この例でも、server1を使用しています サーバー名(エンティティ)識別子として。サーバーに別の名前を選択する場合は、サーバー名が使用されている以下の手順を調整することを忘れないでください。

    このコマンドは、秘密鍵(server1.key)の2つのファイルを作成します。 )および証明書要求ファイル(server1.req

    -----
    Common Name (eg: your user, host, or server name) [server1]:
    
    Keypair and certificate request completed. Your files are:
    req: /home/serveruser/EasyRSA-3.0.5/pki/reqs/server1.req
    key: /home/serveruser/EasyRSA-3.0.5/pki/private/server1.key
  2. 秘密鍵を/etc/openvpnにコピーします ディレクトリ:

    sudo cp ~/EasyRSA-3.0.5/pki/private/server1.key /etc/openvpn/
  3. 証明書要求ファイルをCAマシンに転送します:

    scp ~/EasyRSA-3.0.5/pki/reqs/server1.req causer@your_ca_ip:/tmp

    この例では、scpを使用しています ファイルを転送するには、rsyncを使用することもできます oversshまたはその他の安全な方法。

  4. CAマシンにログインします 、EasyRSAディレクトリに切り替えて、証明書要求ファイルをインポートします。

    cd ~/EasyRSA-3.0.5./easyrsa import-req /tmp/server1.req server1

    最初の引数は証明書要求ファイルへのパスであり、2番目の引数はサーバーの短い(エンティティ)名です。この場合、サーバー名はserver1です。 。

    The request has been successfully imported with a short name of: server1
    You may now use this name to perform signing operations on this request.

    このコマンドは、リクエストファイルをpki/reqsにコピーするだけです。 ディレクトリ。

  5. CAマシンのEasyRSAディレクトリにある間 次のコマンドを実行して、リクエストに署名します。

    cd ~/EasyRSA-3.0.5./easyrsa sign-req server server1

    最初の引数はserverのいずれかです。 またはclient 2つ目は、サーバーの短い(エンティティ)名です。

    リクエストが信頼できるソースからのものであることを確認するよう求められます。 yesと入力します Enterを押します 確認する:

    You are about to sign the following certificate.
    Please check over the details shown below for accuracy. Note that this request
    has not been cryptographically verified. Please be sure it came from a trusted
    source or that you have verified the request checksum with the sender.
    
    Request subject, to be signed as a server certificate for 1080 days:
    
    subject=
        commonName                = server1
    
    
    Type the word 'yes' to continue, or any other input to abort.
    Confirm request details: yes
    ...

    CAキーがパスワードで保護されている場合は、パスワードの入力を求められます。検証が完了すると、スクリプトはSSL証明書を生成し、その証明書へのフルパスを出力します。

    ...
    Certificate is to be certified until Sep 17 10:54:48 2021 GMT (1080 days)
    
    Write out database with 1 new entries
    Data Base Updated
    
    Certificate created at: /home/causer/EasyRSA-3.0.5/pki/issued/server1.crt
  6. 次のステップは、署名された証明書server1.crtを転送することです およびca.crt ファイルをOpenVPNサーバーに戻します。ここでも、scpを使用できます 、rsync またはその他の安全な方法:

    scp ~/EasyRSA-3.0.5/pki/issued/server1.crt serveruser@your_server_ip:/tmpscp ~/EasyRSA-3.0.5/pki/ca.crt serveruser@your_server_ip:/tmp
  7. OpenVPNサーバーにログインします 、server1.crtを移動します およびca.crt ファイルを/etc/openvpn/に追加します ディレクトリ:

    sudo mv /tmp/{server1,ca}.crt /etc/openvpn/

このセクションで概説されている手順を完了すると、OpenVPNサーバーに次の新しいファイルが作成されます。 :

  • /etc/openvpn/ca.crt
  • /etc/openvpn/dh.pem
  • /etc/openvpn/ta.key
  • /etc/openvpn/server1.crt
  • /etc/openvpn/server1.key

OpenVPNサービスの構成#

これで、サーバー証明書がCAによって署名され、OpenVPNサーバーに転送されました。 、OpenVPNサービスを構成する時が来ました。

OpenVPNインストールパッケージで提供されるサンプル構成ファイルを開始点として使用し、独自のカスタム構成オプションを追加します。

構成ファイルを/etc/openvpn/に抽出することから始めます ディレクトリ:

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

お気に入りのテキストエディタでファイルを開きます:

sudo nano /etc/openvpn/server1.conf
  • 証明書、キー、およびDHパラメータディレクティブを見つけて、ファイル名を変更します。

    /etc/openvpn/server1.conf
    cert server1.crt
    key server1.key 
    
    dh dh.pem
  • VPNを介してクライアントトラフィックをリダイレクトするには、redirect-gatewayを見つけてコメントを外します およびdhcp-option オプション:

    /etc/openvpn/server1.conf
    push "redirect-gateway def1 bypass-dhcp"
    
    push "dhcp-option DNS 208.67.222.222"
    push "dhcp-option DNS 208.67.220.220"

    デフォルトでは、OpenDNSリゾルバーが使用されます。変更して、CloudFlare、Google、またはその他の必要なDNSリゾルバーを使用できます。

  • userを見つけます およびgroup ディレクティブを作成し、「;」を削除してこれらの設定のコメントを解除します 各行の先頭にある」:

    /etc/openvpn/server1.conf
    user nobody
    group nogroup
  • ファイルの最後に次の行を追加します。このディレクティブは、メッセージ認証アルゴリズム(HMAC)をSHA1からSHA256に変更します

    /etc/openvpn/server1.conf
    auth SHA256

完了すると、サーバー構成ファイル(コメントを除く)は次のようになります。

/etc/openvpn/server1.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server1.crt
key server1.key  # This file should be kept secret
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1
auth SHA256

OpenVPNサービスの開始#

このチュートリアルでは、server1.confを使用しました 構成ファイルとして。この構成でOpenVPNサービスを開始するには、systemdユニットのファイル名の後に構成ファイル名を指定する必要があります。

OpenVPNサーバー 次のコマンドを実行して、OpenVPNサービスを開始します。

sudo systemctl start openvpn@server1

次のように入力して、サービスが正常に開始されたかどうかを確認します。

sudo systemctl status openvpn@server1

サービスがアクティブで実行中の場合、出力は次のようになります。

[email protected] - OpenVPN Robust And Highly Flexible Tunneling Application On server1
   Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2018-11-06 10:07:35 UTC; 7s ago
 Main PID: 19912 (openvpn)
   Status: "Initialization Sequence Completed"
   CGroup: /system.slice/system-openvpn.slice/[email protected]
           └─19912 /usr/sbin/openvpn --cd /etc/openvpn/ --config server1.conf

次のコマンドを使用して、サービスが起動時に自動的に開始するようにします。

sudo systemctl enable openvpn@server1
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /lib/systemd/system/[email protected].
OpenVPNサービスの開始に失敗した場合は、sudo journalctl -u openvpn@server1を使用してログを確認してください

起動時に、OpenVPNサーバーはtunデバイスtun0を作成します 。デバイスが使用可能かどうかを確認するには、次のipコマンドを入力します。

ip a show tun0

出力は次のようになります。

4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::f421:f382:3158:138f/64 scope link flags 800 
       valid_lft forever preferred_lft forever

この時点で、OpenVPNサーバーが構成され、正しく実行されています。

ファイアウォールとサーバーのネットワーク構成#

ネットワークパケットを適切に転送するには、IP転送を有効にする必要があります。

次の手順は、OpenVPNサーバーで実行されます 。

/etc/sysctl.confを開きます ファイルを作成し、次の行を追加します:

sudo nano /etc/sysctl.conf
/etc/sysctl.conf
net.ipv4.ip_forward = 1

終了したら、ファイルを保存して閉じます。

次のsysctlを実行して、新しい設定を適用します コマンド:

sudo sysctl -p
net.ipv4.ip_forward = 1

前提条件に従っている場合は、サーバーですでにfirewalldruningが実行されているはずです。

次に、OpenVPNポートを開くファイアウォールルールを追加し、マスカレードを有効にする必要があります。

tun0を追加することから始めます trustedへのインターフェース ゾーン:

sudo firewall-cmd --permanent --zone=trusted --add-interface=tun0

デフォルトのopenvpnポート1194を開きます ファイアウォールで許可されているサービスのリストにopenvpnサービスを追加する:

sudo firewall-cmd --permanent --add-service openvpn

trustedにIPマスカレードを設定する ゾーン:

sudo firewall-cmd --permanent --zone=trusted --add-masquerade 

NATルールを追加する前に、CentOSOpenVPNサーバーのパブリックネットワークインターフェイスを知っておく必要があります。次のコマンドを実行すると、インターフェイスを簡単に見つけることができます。

ip -o -4 route show to default | awk '{print $5}'

この場合、インターフェースの名前はeth0です。 以下の出力に示すように。インターフェースの名前が異なる場合があります。

eth0

次のコマンドは、トラフィックがVPNを離れることを許可し、VPNクライアントにインターネットへのアクセスを許可します。 eth0を置き換えることを忘れないでください 前のコマンドで見つけたパブリックネットワークインターフェイスの名前と一致させます。

sudo firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s  10.8.0.0/24 -o eth0 -j MASQUERADE

最後に、変更を有効にするためにファイアウォールルールをリロードします。

sudo firewall-cmd --reload

クライアント構成インフラストラクチャの作成#

このチュートリアルでは、個別のSSL証明書を作成し、VPNクライアントごとに異なる構成ファイルを生成します。

クライアントの秘密鍵と証明書の要求は、クライアントマシンまたはサーバーのいずれかで生成できます。簡単にするために、サーバーで証明書要求を生成し、それをCAに送信して署名します。

クライアント証明書と構成ファイルを生成するプロセス全体は次のとおりです。

  1. OpenVPNサーバーで秘密鍵と証明書のリクエストを生成します。
  2. 署名するリクエストをCAマシンに送信します。
  3. 署名されたSSL証明書をOpenVPNサーバーにコピーし、構成ファイルを生成します。
  4. 構成ファイルをVPNクライアントのマシンに送信します。

クライアントファイルを保存するための一連のディレクトリを作成することから始めます。

mkdir -p ~/openvpn-clients/{configs,base,files}
  • base ディレクトリには、すべてのクライアントファイル間で共有されるベースファイルと構成が保存されます。
  • configs ディレクトリには、生成されたクライアント構成が保存されます。
  • files ディレクトリには、クライアント固有の証明書とキーのペアが保存されます。

ca.crtをコピーします およびta.key ~/openvpn-clients/baseへのファイル ディレクトリ:

cp ~/EasyRSA-3.0.5/ta.key ~/openvpn-clients/base/cp /etc/openvpn/ca.crt ~/openvpn-clients/base/

次に、サンプルVPNクライアント構成ファイルをクライアントにコピーします-~/openvpn-clients/base ディレクトリ。このファイルを基本構成として使用します:

sudo cp /usr/share/doc/openvpn-*/sample/sample-config-files/client.conf ~/openvpn-clients/base/

次に、サーバーの設定と構成に一致するようにファイルを編集する必要があります。テキストエディタで構成ファイルを開きます:

nano ~/openvpn-clients/base/client.conf
  • リモートディレクティブを見つけて、デフォルトのプレースホルダーをOpenVPNサーバーのパブリックIPアドレスに変更します。

    〜/ openvpn-clients / base / client.conf
    # The hostname/IP and port of the server.
    # You can have multiple remote entries
    # to load balance between the servers.
    remote YOUR_SERVER_IP 1194
  • caを見つけてコメントします 、cert 、およびkey ディレクティブ。証明書とキーは構成ファイル内に追加されます:

    〜/ openvpn-clients / base / client.conf
    # 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
  • サーバー設定に一致するように、ファイルの最後に次の行を追加します。

    〜/ openvpn-clients / base / client.conf
    auth SHA256
    key-direction 1

完了すると、サーバー構成ファイルは次のようになります。

〜/ openvpn-clients / base / client.conf
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
auth SHA256
key-direction 1

次に、基本構成とファイルをクライアントの証明書とキーとマージする簡単なbashスクリプトを作成し、生成された構成を~/openvpn-clients/configsに保存します。 ディレクトリ。

テキストエディタを開き、次のスクリプトを作成します。

nano ~/openvpn-clients/gen_config.sh
〜/ openvpn-clients / gen_config.sh
#!/bin/bash

FILES_DIR=$HOME/openvpn-clients/files
BASE_DIR=$HOME/openvpn-clients/base
CONFIGS_DIR=$HOME/openvpn-clients/configs

BASE_CONF=${BASE_DIR}/client.conf
CA_FILE=${BASE_DIR}/ca.crt
TA_FILE=${BASE_DIR}/ta.key

CLIENT_CERT=${FILES_DIR}/${1}.crt
CLIENT_KEY=${FILES_DIR}/${1}.key

# Test for files
for i in "$BASE_CONF" "$CA_FILE" "$TA_FILE" "$CLIENT_CERT" "$CLIENT_KEY"; do
    if [[ ! -f $i ]]; then
        echo " The file $i does not exist"
        exit 1
    fi

    if [[ ! -r $i ]]; then
        echo " The file $i is not readable."
        exit 1
    fi
done

# Generate client config
cat > ${CONFIGS_DIR}/${1}.ovpn <<EOF
$(cat ${BASE_CONF})
<key>
$(cat ${CLIENT_KEY})
</key>
<cert>
$(cat ${CLIENT_CERT})
</cert>
<ca>
$(cat ${CA_FILE})
</ca>
<tls-auth>
$(cat ${TA_FILE})
</tls-auth>
EOF

ファイルを保存し、chmodで実行可能にします :

chmod u+x ~/openvpn-clients/gen_config.sh
クライアント証明書の秘密鍵と構成の作成#

クライアントの秘密鍵と証明書の要求を生成するプロセスは、サーバーの鍵と証明書の要求を生成するときと同じです。

前のセクションですでに説明したように、OpenVPNサーバーでクライアントの秘密鍵と証明書のリクエストを生成します。この例では、最初のVPNクライアントの名前はclient1になります。 。

  1. OpenVPNサーバーのEasyRSAディレクトリに移動します クライアント用の新しい秘密鍵と証明書要求ファイルを生成します:

    cd ~/EasyRSA-3.0.5/./easyrsa gen-req client1 nopass

    このコマンドは、秘密鍵(client1.key)の2つのファイルを作成します。 )および証明書要求ファイル(client1.req

    Common Name (eg: your user, host, or server name) [client1]:
    
    Keypair and certificate request completed. Your files are:
    req: /home/serveruser/EasyRSA-3.0.5/pki/reqs/client1.req
    key: /home/serveruser/EasyRSA-3.0.5/pki/private/client1.key
  2. 秘密鍵client1.keyをコピーします ~/openvpn-clients/filesへ 前のセクションで作成したディレクトリ:

    cp ~/EasyRSA-3.0.5/pki/private/client1.key ~/openvpn-clients/files/
  3. 証明書要求ファイルをCAマシンに転送します:

    scp ~/EasyRSA-3.0.5/pki/reqs/client1.req causer@your_ca_ip:/tmp

    この例では、scpを使用しています ファイルを転送するには、rsyncを使用することもできます oversshまたはその他の安全な方法。

  4. CAマシンにログインします 、EasyRSAディレクトリに切り替えて、証明書要求ファイルをインポートします。

    cd ~/EasyRSA-3.0.5./easyrsa import-req /tmp/client1.req client1

    最初の引数は証明書要求ファイルへのパスであり、2番目の引数はクライアント名です。

    The request has been successfully imported with a short name of: client1
    You may now use this name to perform signing operations on this request.
  5. CAマシンのEasyRSAディレクトリ内から 次のコマンドを実行して、リクエストに署名します。

    cd ~/EasyRSA-3.0.5./easyrsa sign-req client client1

    リクエストが信頼できるソースからのものであることを確認するよう求められます。 yesと入力します Enterを押します 確認する:

    CAキーがパスワードで保護されている場合は、パスワードの入力を求められます。検証が完了すると、スクリプトはSSL証明書を生成し、その証明書へのフルパスを出力します。

    ...
    Certificate created at: /home/causer/EasyRSA-3.0.5/pki/issued/client1.crt
  6. 次に、署名された証明書client1.crtを転送します ファイルをOpenVPNサーバーに戻します。 scpを使用できます 、rsync またはその他の安全な方法:

    scp ~/EasyRSA-3.0.5/pki/issued/client1.crt serveruser@your_server_ip:/tmp
  7. OpenVPNサーバーにログインします 、client1.crtを移動します ~/openvpn-clients/filesにファイルを追加します ディレクトリ:

    mv /tmp/client1.crt ~/openvpn-clients/files
  8. 最後のステップは、gen_config.shを使用してクライアント構成を生成することです。 脚本。 ~/openvpn-clientsに切り替えます ディレクトリを作成し、クライアント名を引数として使用してスクリプトを実行します:

    cd ~/openvpn-clients./gen_config.sh client1

    スクリプトは、client1.ovpnという名前のファイルを作成します ~/client-configs/configsにあります ディレクトリ。ディレクトリを一覧表示して確認できます:

    ls ~/openvpn-clients/configs
    client1.ovpn

この時点で、クライアント構成が作成されます。これで、クライアントとして使用する予定のデバイスに構成ファイルを転送できます。

たとえば、scpを使用して構成ファイルをローカルマシンに転送するには 次のコマンドを実行する必要があります:

scp ~/openvpn-clients/configs/client1.ovpn your_local_ip:/

クライアントを追加するには、同じ手順を繰り返します。

クライアントの接続#

Linux#

ディストリビューションまたはデスクトップ環境は、OpenVPNサーバーに接続するためのツールまたはグラフィックユーザーインターフェイスを提供する場合があります。このチュートリアルでは、openvpnを使用してサーバーに接続する方法を示します。 ツール。

  • UbuntuとDebianにOpenVPNをインストールする

    sudo apt updatesudo apt install openvpn
  • CentOSとFedoraにOpenVPNをインストールする

    sudo yum install epel-releasesudo yum install openvpn

パッケージがインストールされたら、VPNサーバーに接続するにはopenvpnを使用します コマンドを実行し、クライアント構成ファイルを指定します:

sudo openvpn --config client1.ovpn

macOS#

Tunnelblickは、OSXおよびmacOSでのOpenVPN用の無料のオープンソースグラフィックユーザーインターフェイスです。

Windows#

OpenVPNアプリケーションの最新ビルドをダウンロードしてインストールします。OpenVPNのダウンロードページ。

.ovpnをコピーします ファイルをOpenVPN構成フォルダー(\Users\<Name>\OpenVPN\Config または\Program Files\OpenVPN\config

OpenVPNアプリケーションを起動します。

OpenVPNシステムトレイアイコンを右クリックすると、コピーしたOpenVPN構成ファイルの名前がメニューに表示されます。 [接続]をクリックします。

AndroidとiOS#

OpenVPNによって開発されたVPNアプリケーションは、AndroidとiOSの両方で利用できます。アプリケーションをインストールし、クライアントの.ovpをインポートします ファイル。

  • Android OpenVPN Connect
  • iOS OpenVPN Connect

クライアント証明書の取り消し#

証明書を取り消すとは、署名された証明書を無効にして、OpenVPNサーバーへのアクセスに使用できなくなることを意味します。

クライアント証明書を取り消すには、以下の手順に従います。

  1. CAマシンにログインします EasyRSAディレクトリに切り替えます:

    cd EasyRSA-3.0.5
  2. revokeを使用してeasyrsaスクリプトを実行します 引数の後に、取り消すクライアント名を続けます:

    ./easyrsa revoke client1

    証明書を取り消すかどうかを確認するよう求められます。 yesと入力します enterを押します 確認する:

    Please confirm you wish to revoke the certificate with the following subject:
    
    subject=
        commonName                = client1
    
    Type the word 'yes' to continue, or any other input to abort.
    Continue with revocation: yes
    ...

    CAキーがパスワードで保護されている場合は、パスワードの入力を求められます。確認が完了すると、スクリプトによって証明書が取り消されます。

    ...
    Revocation was successful. You must run gen-crl and upload a CRL to your
    infrastructure in order to prevent the revoked cert from being accepted.
  3. gen-crlを使用します 証明書失効リスト(CRL)を生成するオプション:

    ./easyrsa gen-crl
    An updated CRL has been created.
    CRL file: /home/causer/EasyRSA-3.0.5/pki/crl.pem
  4. CRLファイルをOpenVPNサーバーにアップロードします:

    scp ~/EasyRSA-3.0.5/pki/crl.pem serveruser@your_server_ip:/tmp
  5. OpenVPNサーバーにログインします サーバーにアクセスし、ファイルを/etc/openvpnに移動します ディレクトリ:

    sudo mv /tmp/crl.pem /etc/openvpn
  6. OpenVPNサーバー構成ファイルを開きます:

    sudo nano /etc/openvpn/server1.conf

    ファイルの最後に次の行を貼り付けます

    /etc/openvpn/server1.conf
    crl-verify crl.pem

    ファイルを保存して閉じます。

  7. 失効ディレクティブを有効にするためにOpenVPNサービスを再起動します:

    sudo systemctl restart openvpn@server1

    この時点で、クライアントは失効した証明書を使用してOpenVPNサーバーにアクセスできなくなります。

追加のクライアント証明書を取り消す必要がある場合は、同じ手順を繰り返してください。


Cent OS
  1. CentOS 8でDHCPサーバーをセットアップする-その方法は?

  2. UbuntuとCentOSでNginxサーバーブロックを設定する方法

  3. Debian10でOpenVPNサーバーをセットアップする方法

  1. CentOS7または8にOpenVPNをインストールする方法

  2. Ubuntu18.04でOpenVPNサーバーをセットアップする方法

  3. CentOS8でVSFTPDを設定する方法

  1. CentOS7でNginxサーバーブロックを設定する方法

  2. CentOS8でNginxサーバーブロックを設定する方法

  3. Debian9でOpenVPNサーバーをセットアップする方法