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

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

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

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

前提条件

  • CentOS8サーバー
  • root権限

何をしますか?

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

まず、EPEL(Extra Package for Enterprise Linux)リポジトリを追加し、最新のOpenVPNパッケージをインストールして、easy-rsaスクリプトをCentOS8システムにダウンロードします。

以下のdnfコマンドを使用してEPELリポジトリをインストールします。

 dnf install epel-release 

その後、最新のOpenVPNパッケージ2.4.7をインストールします。

 dnf install openvpn 

インストールが完了したら、「/ etc / openvpn」に移動し、以下のwgetコマンドを使用してeasy-rsaスクリプトをダウンロードします。

 cd /etc/openvpn/ 
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz

次に、「EasyRSA-unix-v3.0.6.tgz」ファイルを抽出し、ディレクトリの名前を「easy-rsa」に変更します。

 tar -xf EasyRSA-unix-v3.0.6.tgz 
mv EasyRSA-v3.0.6 / easy-rsa /; rm -f EasyRSA-unix-v3.0.6.tgz

OpenVPNパッケージとeasy-rsaスクリプトがCentOS8システムにインストールされています。

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

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

'/ etc / openvpn / easy-rsa /'ディレクトリに移動し、vimエディターを使用して新しいvarsスクリプトを作成します。

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

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

<前> 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 "ジャカルタ"
set_var EASYRSA_REQ_CITY "Jakarta"
set_var EASYRSA_REQ_ORG "hakase-labs CERTIFICATE AUTHORITY"
set_var EAS " 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-easyrsa.cnf"
set_var EASYRSA_DIGEST "256"

保存して終了します。

注:

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

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

 chmod + x vars 

easy-rsa3構成が完了しました。

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

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

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

 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 

注:

  • 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-Hellmanキーが必要です。そして、上に作成された「vars」構成ファイルに基づいて「2048」DHキーを生成します。

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

 ./ easyrsa gen-dh 

そして、「pki」ディレクトリにあるDHキーが生成されました。

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

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

キーを取り消す場合は、以下のコマンドを実行してください。

./easyrsaが誰かを取り消す

次に、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。キー/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 / server /'ディレクトリに移動し、vimを使用して新しい構成ファイル'server.conf'を作成します。

 cd / etc / openvpn / server / 
vim server.conf

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

#OpenVPNポート、プロトコル、およびTun 
port 1194
proto udp
dev tun

#OpenVPNサーバー証明書-CA、サーバーキー、および証明書
ca /​​etc/openvpn/server/ca.crt
cert /etc/openvpn/server/hakase-server.crt
key /etc/openvpn/server/hakase-server.key

#DHおよびCRLキー
dh/etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem

#ネットワーク構成-内部ネットワーク
#OpenVPNサーバーを介してすべての接続をリダイレクトします
server 10.5.0.0 255.255.255.0
push "redirect-gateway def1"

#使用https://dns.watchからのDNS
push "dhcp-option DNS 84.200.69.80"
push "dhcp-option DNS 84.200.70.40"

#複数のクライアントを有効にする同じ証明書キーで接続するには
duplicate-cn

#TLSセキュリティ
暗号AES-256-CBC
tls-version-min 1.2
tls -暗号TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256: TL S-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache

#その他の構成
keepalive 20 60
永続化キー
persist-tun
compress lz4
demomon
user nobody
group nobody

#OpenVPN Log
log- /var/log/openvpn.logを追加
動詞3

保存して終了します。

そして、OpenVPNサーバー構成が作成されました。

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

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

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

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

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

OpenVPNサービスを「パブリック」および「信頼できる」ファイアウォールゾーンに追加します。

 Firewall-cmd --permanent --add-service =openvpn 
Firewall-cmd --permanent --zone =trusted --add-service =openvpn

その後、「tun0」を「trusted」ゾーンに追加します。

 Firewall-cmd --permanent --zone =trusted --add-interface =tun0 

次に、デフォルトの「パブリック」ゾーンで「MASQUERADE」を有効にします。

 Firewall-cmd --permanent --add-masquerade 

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

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

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

 Firewall-cmd --reload 

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

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

その後、以下のコマンドを使用してOpenVPNサービスを確認します。

 netstat -plntu 
systemctl status [email protected]

そして、以下のような結果が得られます。

その結果、OpenVPNサービスは、デフォルトのポート「1194」を使用してUDPプロトコルで稼働しています。

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

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

 cd / etc / openvpn / client 
vim client01.ovpn

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

 client 
dev tun
proto udp

remote xxx.xxx.xxx.xxx 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

resolve-retry infinite
compress lz4
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 / *

これで、以下のようにFTPサーバーまたはscpコマンドを使用して圧縮されたOpenVPNファイルをダウンロードできます。

 scp [メール保護]:/ 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. Ubuntu20.04にOpenVPNサーバーをインストールして構成する方法

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

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

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

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

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

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