GNU/Linux >> Linux の 問題 >  >> Linux

Ubuntu 18.04 で OpenVPN を使用して VPN をセットアップおよび構成する方法

VPN は、信頼できないネットワークからでもインターネットや特定のサービスにアクセスできる仮想プライベート ネットワークです。基本的には、あたかもプライベート ネットワークに物理的に接続されているかのようです。たとえば、デバイスによって生成されたトラフィックが誰かに傍受されることを恐れずに、銀行口座にアクセスしたり、支払いを行ったりできます。

OpenVPN は、TLS (Transport Layer Security) および SSL (Secure Sockets Layer) プロトコルに基づく VPN です。 OpenVPN はいくつかの証明書を使用して、サーバーとクライアント間のトラフィックを暗号化します。

このチュートリアルでは、Ubuntu 18.04 を搭載したサーバーで OpenVPN を構成する方法を説明します。

このチュートリアルを実装するには、サーバー マシンと、証明書の有効性を評価する CA (認証局) として機能する別のマシンが必要です。

SSH 接続を介してサーバーと CA に接続する必要があります。まだ行っていない場合は、ガイドに従って SSH プロトコルで安全に接続することをお勧めします。

OpenVPN のインストール

サーバーにアクセスします。

OpenVPN は Ubuntu の公式 Ubuntu リポジトリで既に利用可能であるため、他に何も追加する必要はありません。

タイプ:

sudo apt update
sudo apt install openvpn

この時点で、OpenVPN はサーバーに正常にインストールされています。

EasyRSA のインストール

両方のマシンで次のように入力して、サーバーと CA に EasyRSA をダウンロードします。

wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz

最新バージョンは https://github.com/OpenVPN/easy-rsa/releases からダウンロードできます

$ cd ~
$ sudo tar xvf EasyRSA-3.0.4.tgz

ダウンロードしたバージョンによって名前が異なる場合があります

サーバーの構成

次のように入力してサーバー構成を完了します:

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
$ sudo gzip -d /etc/openvpn/server.conf.gz
$ sudo nano /etc/openvpn/server.conf
  • HMAC ("tls-auth") を参照するセクションを見つけます。行がコメント化されている場合は、「;」を削除してください。

  • 暗号化 (「暗号」) に関するセクションを見つけます。コメントされている場合は、「;」を削除してください。すぐ下に「auth SHA256」というテキストを含む新しい行を追加します。

  • Diffie-Hellman パラメータを定義する「dh」セクションを見つけて、名前から「2048」を削除します (「dh dh.pem」は

  • 「ユーザー」セクションと「グループ」セクションを見つけて、「;」を削除します。行のコメントを外します。

CA での EasyRSA の構成

EasyRSA をインストールすると、CA の変数を定義する構成ファイルが CA に作成されます。タイプ:

$ cd ~/EasyRSA-3.0.4/
$ cp vars.example vars
$ nano vars

下の図に示されている手順の「#」を削除してください:

「easyrsa」スクリプトを開始して、公開鍵基盤 (PKI) を初期化します:

$ sudo ./easyrsa init-pki
$ sudo ./easyrsa build-ca nopass

このコマンドで 2 つのファイルが作成されます:

  • ca.crt:サーバーとクライアントが同じ信頼できるネットワークの一部であることを相互に通知するために使用する公開 CA 証明書。

  • ca.key:CA マシンがサーバーとクライアントの鍵と証明書に署名するために使用する秘密鍵。このファイルは、CA マシン (サード パーティがアクセスできない) にのみ保持する必要があります。そうしないと、ネットワーク セキュリティが危険にさらされる可能性があります。

名前を入力する必要があります。空白のままにして、Enter キーを押します。

CA からのサーバー証明書の要求

CA マシンが構成されたので、サーバーに秘密鍵と証明書要求を生成させ、それらを CA マシンに送信して署名してもらいます:

$ cd ~/EasyRSA-3.0.4
$ ./easyrsa init-pki
$ ./easyrsa gen-req server nopass

簡単にするために、マシンの名前は「サーバー」のままにしておき、後で何度も変更するのを避けます。

サーバー用の秘密鍵と「server.req」という証明書要求を作成しました:

$ sudo cp ~/EasyRSA-v3.0.6/pki/private/server.key /etc/openvpn/

server.req ファイルを CA マシンにコピーします:

$ sudo scp ~/EasyRSA-3.0.4/pki/reqs/server.req [email protected]_CA_ip:/tmp

証明書の生成と署名

EasyRSA フォルダー内の CA で、コピーしたばかりのファイルをインポートして署名します。

$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa import-req /tmp/server.req server
$ sudo ./easyrsa sign-req server server

「yes」と入力して Enter キーを押します。

署名済み証明書と ca.crt を VPN サーバーに転送します:

$ sudo scp pki/issued/server.crt [email protected]_server_ip:/tmp
$ sudo scp pki/ca.crt [email protected]_server_ip:/tmp

その後、サーバーで

受け取ったファイルを適切なディレクトリにコピーします:

$ sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/
$ cd ~/EasyRSA-3.0.4/

Diffie-Hellman に基づいて強力な交換キーを生成します。

$ sudo ./easyrsa gen-dh
$ sudo openvpn --genkey --secret ta.key

生成されたファイルを「/ etc / openvpn /」フォルダーにコピーします

$ sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/
$ sudo cp ~/EasyRSA-3.0.4/pki/dh.pem /etc/openvpn/

クライアントの構成

クライアントの証明書とキーを格納するフォルダーを作成します (このガイドでは 1 つのクライアントのみを説明するため、ここでは「client1」と呼びますが、異なるクライアントを使用してクライアントごとに操作を繰り返す必要があります)。宗派)

$ sudo mkdir -p ~/client-configs/keys
$ sudo chmod -R 700 ~/client-configs
$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa gen-req client1 nopass

Enter キーを押して、提案された標準名を受け入れます。

$ sudo cp pki/private/client1.key ~/client-configs/keys/

クライアントのキーを以前に作成したフォルダーにコピーします。

$ sudo scp pki/reqs/client1.req [email protected]_CA_IP:/tmp

client1.req ファイルを CA マシンに送信します。

証明書要求を CA にインポートします:

$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa import-req /tmp/client1.req client1
$ sudo ./easyrsa sign-req client client1

「はい」と入力して署名を承認します。

client1.crt をサーバーにアップロードします:

scp pki/issued/client1.crt [email protected]_SERVER:/tmp

サーバーで、次のファイルを適切なフォルダーにコピーします。

$ sudo mkdir -p ~/client-configs/keys

$ sudo chmod -R 700 ~/client-configs

$ sudo cp /tmp/client1.crt ~/client-configs/keys/

$ sudo cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/

$ sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/

これで、サーバーとクライアントの証明書とキーの両方が生成されました。

IP ルーティングとファイアウォールの構成

IP 転送ルールを変更します:

$ sudo nano /etc/sysctl.conf

「net.ipv4.ip_forward」セクションを見つけて「#」を削除し、命令を「コメントなし」にします。

クライアント接続を正しくルーティングするために、いくつかのファイアウォール ルールを変更してください。

$ ip route | grep default

「dev」の後に名前を保存します (下図では「eth0」という名前):

$ sudo nano /etc/ufw/before.rules

下の図のようにコマンドを追加し、「eth0」をネットワーク インターフェイスの名前に置き換えます。

# START OPENVPN RULES

# NAT table rules

*nat

:POSTROUTING ACCEPT [0:0] 

# Allow traffic from OpenVPN client to eth0 

-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE

COMMIT

# END OPENVPN RULES

保存して終了します。次に、UFW 構成ファイルを編集します。

$ sudo nano /etc/default/ufw

パラメータ「DEFAULT_FORWARD_POLICY」の値を「ACCEPT」に変更します。

$ sudo ufw allow 1194/udp

UDP トラフィック用にポート 1194 を追加します。

$ sudo ufw allow OpenSSH

UFW を再起動します:

$ sudo ufw disable

$ sudo ufw enable

OpenVPN サービスを開始します:

$ sudo systemctl start openvpn

サービスのステータスを確認してください:

$ sudo systemctl status openvpn

サーバーの起動時にサービスを設定します。

$ sudo systemctl enable openvpn

クライアントの構成ファイルを作成します:

$ sudo mkdir -p ~/client-configs/files
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
$ sudo nano ~/client-configs/base.conf

「リモート」セクションを見つけて、「リモート IP_Server 1194」と表示されていることを確認してください

  • IP_Server:サーバー IP を記述します

  • 1194:以前に選択されたポート。

「proto」セクションを見つけて、サーバーが UDP に設定されていることを確認します (「;」でコメント化された TCP 行が見つかります)。

「ユーザー」セクションと「グループ」セクションを見つけて、「;」を削除します。それらを「コメントなし」にします。

セクション "ca.crt" - "client.crt" - "client.key" - "ta.key" を見つけて、先頭に "#" を付けてコメントします

「cipher」セクションを見つけて、「cipher AES-256-CBC」ステートメントの下に「auth SHA256」ステートメントを追加します。

任意の時点で「キー方向 1」命令を追加してください。

これらのコメント行をいつでも追加してください。クライアントが Linux マシンの場合は、「コメントなし」にしてください。

# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

保存して終了します。

クライアントの構成を生成しています

サーバーで、クライアントの構成を自動的にコンパイルするスクリプトを作成します。

nano ~/client-configs/make_config.sh

テキストをコピーして貼り付けます:

#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/client-configs/keys

OUTPUT_DIR=~/client-configs/files

BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \

    <(echo -e '<ca>') \

    ${KEY_DIR}/ca.crt \

    <(echo -e '</ca>\n<cert>') \

    ${KEY_DIR}/${1}.crt \

    <(echo -e '</cert>\n<key>') \

    ${KEY_DIR}/${1}.key \

    <(echo -e '</key>\n<tls-auth>') \

    ${KEY_DIR}/ta.key \

    <(echo -e '</tls-auth>') \

    > ${OUTPUT_DIR}/${1}.ovpn

保存して終了します。

chmod 700 ~/client-configs/make_config.sh

ここで、クライアント クライアントの「構成」を生成してみてください。

$ cd ~/client-configs
$ sudo ./make_config.sh client1

「client1.ovpn」というファイルが作成されます。

このファイルを使用するデバイスに転送します。これは、接続のために VPN ソフトウェアによって使用されます。

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

$ cd EasyRSA-3.0.4/
$ sudo ./easyrsa revoke client1

クライアント1 承認が取り消されるクライアントの名前です

「yes」と入力して確認します。
crl.pem ファイルを生成してサーバーにアップロードします。

$ sudo ./easyrsa gen-crl
$ sudo scp ~/EasyRSA-3.0.4/pki/crl.pem [email protected]_Server:/tmp

サーバー マシンの構成を更新して、失効を確認してください。

$ sudo cp /tmp/crl.pem /etc/openvpn
$ sudo nano /etc/openvpn/server.conf

ファイルの最後に「crl-verify crl.pem」を追加します。

保存して終了します。

$ sudo systemctl restart [email protected]

サーバーを再起動して変更を実装します。


Linux
  1. Ubuntu18.04にstrongSwanVPNをインストールして構成する方法

  2. Ubuntu20.04にOpenVPNサーバーをインストールして構成する方法

  3. UbuntuにFail2banをインストールして設定する方法は?

  1. Ubuntu20.04にAlgoVPNServerをインストールして構成する方法

  2. Ubuntu22.04で認証局を設定および構成する方法

  3. Ubuntu20.04でMPMイベントとPHP-FPMを使用してApacheを設定する方法

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

  2. Ubuntu18.04でWireGuardVPNを設定する方法

  3. Ubuntu 18.04 に Elasticsearch をインストールして構成する方法