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

CentOS7にEasy-RSA3を使用してOpenVPNサーバーとクライアントをインストールする方法

OpenVPNは、パブリックインターネット上に安全なプライベートネットワークを作成できるオープンソースアプリケーションです。 OpenVPNは、安全な接続を作成するために仮想プライベートネットワーク(VPN)を実装します。 OpenVPNはOpenSSLライブラリを使用して暗号化を提供し、証明書ベースの事前共有キー、ユーザー名/パスワード認証などのいくつかの認証メカニズムを提供します。

このチュートリアルでは、CentOS7.6にOpenVPNをインストールして構成する方法を段階的に説明します。そして、証明書ベースのOpenVPN認証を実装します。

前提条件
  • CentOS 7.6
  • root権限

何をしますか?

  1. OpenVPNとEasy-RSAをインストールする
  2. Easy-RSA3変数の構成
  3. OpenVPNキーを作成する
  4. OpenVPNサーバーを構成する
  5. ファイアウォールを構成し、ポート転送を有効にする
  6. クライアントのセットアップ
  7. テスト
ステップ1-OpenVPNとEasy-RSAをインストールします

このチュートリアルでは、最新バージョンのcentosサーバー(7.5)を使用し、OpenVPN2.4とeasy-rsa3を使用します。OpenVPNおよびeasy-rsaパッケージをインストールする前に、「epel」リポジトリを確認してください。システムにインストールされています。お持ちでない場合は、以下のyumコマンドを使用してepelリポジトリをインストールしてください。

yum install epel-release -y

次に、システムにeasy-rsa3を使用してOpenVPN2.4をインストールします。

yum install openvpn easy-rsa -y

インストールが完了したら、openvpnとeasy-rsaのバージョンを確認してください。

openvpn --version
ls -lah /usr/share/easy-rsa/

easy-rsa3を搭載したOpenVPN2.4がインストールされています。

ステップ2-Easy-RSA3を構成する

このステップでは、新しい「vars」ファイルを作成してeasy-rsa3を構成します。 'vars'ファイルにはEasy-RSA3設定が含まれています。

'/ etc / openvpn /'ディレクトリに移動し、'easy-rsa'スクリプトをコピーします。

cd /etc/openvpn/
cp -r /usr/share/easy-rsa /etc/openvpn/

次に、「easy-rsa / 3 /」ディレクトリに移動し、vimを使用して新しいvarsファイルを作成します。

cd /etc/openvpn/easy-rsa/3/
vim vars

以下のvarseasy-rsa3構成を貼り付けます。

EASYRSA_REQ_EMAIL set_var EASYRSA_DN set_var EASYRSA_PKI set_var set_var EASYRSA "$ PWD" "$ EASYRSA / PKI" "cn_only" set_var EASYRSA_REQ_COUNTRY "ID" set_var EASYRSA_REQ_PROVINCE "ジャカルタ" set_var EASYRSA_REQ_CITY "ジャカルタ" set_var EASYRSA_REQ_ORG "葉加瀬-ラボCERTIFICATE AUTHORITY" を「[
set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "ID"
set_var EASYRSA_REQ_PROVINCE    "Jakarta"
set_var EASYRSA_REQ_CITY        "Jakarta"
set_var EASYRSA_REQ_ORG         "hakase-labs CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL       "[email protected]"
set_var EASYRSA_REQ_OU          "HAKASE-LABS EASY CA"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE       7500
set_var EASYRSA_CERT_EXPIRE     365
set_var EASYRSA_NS_SUPPORT      "no"
set_var EASYRSA_NS_COMMENT      "HAKASE-LABS CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-1.0.cnf"
set_var EASYRSA_DIGEST          "sha256"

保存して終了します。

注:

  • 必要に応じて変数の値を変更します。
  • セキュリティを強化するには、「EASYRSA_KEY_SIZE」を増やします。
  • 「EASYRSA_CA_EXPIRE」と「EASYRSA_CERT_EXPIRE」を変更します。

次に、ファイルの権限を変更して、「vars」ファイルを実行可能にします。

chmod +x vars

Easy-RSA3設定のvarsファイルが作成されました。

ステップ3-OpenVPNキーを構築する

このステップでは、作成したeasy-rsa3'vars'ファイルに基づいてOpenVPNキーを構築します。 CAキー、サーバーキーとクライアントキー、DHおよびCRLPEMファイルを作成します。

'easyrsa'コマンドラインを使用してこれらすべてのキーを作成します。 '/ etc / openvpn / easy-rsa/3'ディレクトリに移動します。

cd /etc/openvpn/easy-rsa/3/
初期化とCAのビルド

キーを作成する前に、PKIディレクトリを初期化し、CAキーを作成する必要があります。

PKIディレクトリを開始し、以下のコマンドを使用してCAキーを構築します。

./easyrsa init-pki
./easyrsa build-ca

ここで、CAキーのパスワードを入力すると、「pki」ディレクトリの下に「ca.crt」ファイルと「ca.key」ファイルが表示されます。

ビルドサーバーキー

次に、サーバーキーを作成し、「hakase-server」という名前のサーバーキーを作成します。

以下のコマンドを使用して、サーバーキー「hakase-server」を作成します。

./easyrsa gen-req hakase-server nopass


注:

  • ノーパス =「hakase-server」キーのパスワードを無効にするオプション。

そして、CA証明書を使用して「hakase-server」キーに署名します。

./easyrsa sign-req server hakase-server

「CA」パスワードの入力を求められたら、パスワードを入力してEnterキーを押します。そして、「pki /issued/」ディレクトリの下に「hakase-server.crt」証明書ファイルを取得します。

OpenSSLコマンドを使用して証明書ファイルを確認し、エラーがないことを確認します。

openssl verify -CAfile pki/ca.crt pki/issued/hakase-server.crt

すべてのサーバー証明書キーが作成されました。サーバーの秘密鍵は「pki/private / hakase-server.key」にあり、サーバー証明書は「pki / issued/hakase-server.crt」にあります。

クライアントキーの作成

次に、クライアントのキーを作成する必要があります。 'client01'という名前の新しいクライアントキーを生成します。

以下のコマンドを使用して、「client01」キーを生成します。

./easyrsa gen-req client01 nopass

次に、以下のようにCA証明書を使用して「client01」キーに署名します。

./easyrsa sign-req client client01

「yes」と入力してクライアント証明書要求を確認してから、CAパスワードを入力します。

'client01'という名前のクライアント証明書が生成されました。opensslコマンドを使用してクライアント証明書を確認してください。

openssl verify -CAfile pki/ca.crt pki/issued/client01.crt
ビルドDiffie-ヘルマンキー

選択したキーの長さとサーバーで使用可能なエントロピーによっては、このアクションに多くの時間がかかります。 'vars'ファイルで定義した長さキーを使用します。

以下のコマンドを使用して、Diffie-Hellman鍵を生成します。

./easyrsa gen-dh

'pki'ディレクトリにあるDHキーが生成されました。

オプション:CRLキーを生成します

CRL(Certificate Revoking List)キーは、クライアントキーを取り消すために使用されます。 VPNサーバーに複数のクライアント証明書があり、いくつかのキーを取り消す場合は、easy-rsaコマンドを使用して取り消す必要があります。

一部のキーを取り消す場合は、次のようにコマンドを実行します。

./easyrsa revoke someone

次に、CRLキーを生成します。

./easyrsa gen-crl

CRLPEMファイルは「pki」ディレクトリの下に生成されています-以下は私のサーバーの例です。

証明書ファイルをコピー

すべての証明書が生成されました。証明書ファイルとPEMファイルをコピーします。

サーバーキーと証明書をコピーします。

cp pki/ca.crt /etc/openvpn/server/
cp pki/issued/hakase-server.crt /etc/openvpn/server/
cp pki/private/hakase-server.key /etc/openvpn/server/

client01キーと証明書をコピーします。

cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client01.crt /etc/openvpn/client/
cp pki/private/client01.key /etc/openvpn/client/

DHキーとCRLキーをコピーします。

cp pki/dh.pem /etc/openvpn/server/
cp pki/crl.pem /etc/openvpn/server/

ステップ4-OpenVPNを設定する

このステップでは、openvpnサーバーの新しい構成「server.conf」を作成します。

'/ etc / openvpn /'ディレクトリに移動し、vimを使用して新しい構成ファイル'server.conf'を作成します。

cd /etc/openvpn/
vim server.conf

次のOpenVPNサーバー構成をそこに貼り付けます。

# OpenVPN Port, Protocol and the Tun
port 1194
proto udp
dev tun

# OpenVPN Server Certificate - CA, server key and certificate
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/hakase-server.crt
key /etc/openvpn/server/hakase-server.key

#DH and CRL key
dh /etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem

# Network Configuration - Internal network
# Redirect all Connection through OpenVPN Server
server 10.10.1.0 255.255.255.0
push "redirect-gateway def1"

# Using the DNS from https://dns.watch
push "dhcp-option DNS 84.200.69.80"
push "dhcp-option DNS 84.200.70.40"

#Enable multiple client to connect with same Certificate key
duplicate-cn

# TLS Security
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache

# Other Configuration
keepalive 20 60
persist-key
persist-tun
comp-lzo yes
daemon
user nobody
group nobody

# OpenVPN Log
log-append /var/log/openvpn.log
verb 3

保存して終了します。

OpenVPNの構成が作成されました。

ステップ5-ポートフォワーディングを有効にしてルーティングファイアウォールを構成する

このステップでは、ポートフォワーディングカーネルモジュールを有効にし、OpenVPNのルーティング「Firewalld」を構成します。

次のコマンドを実行して、ポート転送カーネルモジュールを有効にします。

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

次に、FirewalldforOpenVPNを使用してルーティングを構成します。

'openvpn'サービスをfirewalldlistサービスに追加し、'tun0'インターフェースをfirewalldトラステッドゾーンに追加します。

firewall-cmd --permanent --add-service=openvpn
firewall-cmd --permanent --zone=trusted --add-interface=tun0

「trusted」ゾーンfirewalldで「MASQUERADE」を有効にします。

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

OpenVPN内部IPアドレス「10.10.1.0/24」から外部IPアドレス「SERVERIP」へのNATを有効にします。

SERVERIP=$(ip route get 84.200.69.80 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s  10.10.1.0/24 -o $SERVERIP -j MASQUERADE

そしてfirewalldをリロードします。

firewall-cmd --reload

ポートフォワーディングとFirewalldルーティングが完了しました。ここで、openvpnサービスを開始し、システムの起動時に毎回自動的に起動できるようにします。

systemctl start [email protected]
systemctl enable [email protected]

以下のコマンドを使用して確認してください。

netstat -plntu
systemctl status [email protected]

OpenVPNサーバーはudpプロトコルポート「1194」で稼働しています。

ステップ6-OpenVPNクライアントのセットアップ

'/ etc / openvpn / client'ディレクトリに移動し、vimを使用して新しいopenvpnクライアント構成ファイル'client01.ovpn'を作成します。

cd /etc/openvpn/client
vim client01.ovpn

次のOpenVPNクライアント構成をそこに貼り付けます。

client
dev tun
proto udp

remote 139.xx.xx.xx 1194

ca ca.crt
cert client01.crt
key client01.key

cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256

resolv-retry infinite
compress lzo
nobind persist-key persist-tun mute-replay-warnings verb 3

保存して終了します。

次に、「/ etc / openvpn /client」ディレクトリを「zip」または「tar.gz」ファイルに圧縮し、ローカルコンピュータからscpを使用して圧縮ファイルをダウンロードします。

'/ etc / openvpn/client'ディレクトリを'client01.tar.gz'ファイルに圧縮します。

cd /etc/openvpn/
tar -czvf client01.tar.gz client/*

scp [email protected]:/etc/openvpn/client01.tar.gz .

ステップ7-OpenVPNのテスト

クライアントでのテスト。

-Linuxの場合

OpenVPNパッケージをインストールし、GUI構成が必要な場合は、OpenVPNnetwork-managerをインストールします。

sudo apt install openvpn network-manager-openvpn network-manager-openvpn-gnome -y

ターミナルシェルを使用して接続する場合は、以下のOpenVPNコマンドを実行してください。

openvpn --config client01.ovpn

OpenVPNに接続したら、[新しいターミナル]タブを開き、curlコマンドを使用して接続を確認します。

curl ifconfig.io

そして、OpenVPNサーバーのIPアドレスを取得します。

MacOSの場合

Tunnelblickをダウンロードしてインストールします。

'client01.tar.gz'ファイルを抽出し、'client'ディレクトリの名前を'client01.tblk'に変更します。

tar -xzvf client01.tar.gz
mv client client01.tblk

「client01.tblk」をダブルクリックすると、TunnelblickがOpenVPN構成を自動的に検出し、インポートします。

次に、トップバーのTunnelblickを介して接続します。

Windowsの場合

Windows用のopenvpnクライアントをダウンロードし、構成をインポートします。


Cent OS
  1. CentOS7にTeamSpeakサーバーをインストールして使用する方法

  2. CentOS /RHEL8にOpenVPNをインストールする方法

  3. CentOS8にGitlabをインストールして構成する方法

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

  2. Dockerを使用してOpenVPNサーバーをインストールしてホストする方法

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

  1. CentOS7にVNCをインストールして設定する方法

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

  3. CentOS8にVNCをインストールして設定する方法