GNU/Linux >> Linux の 問題 >  >> Panels >> OpenVPN

RockyLinux8でOpenVPNサーバーをセットアップする

このガイドでは、Rocky Linux 8にOpenVPNサーバーをインストールして簡単にセットアップする方法を学習します。OpenVPNは、OpenSSLライブラリの暗号化、認証、認証機能をすべて使用する、堅牢で柔軟性の高いオープンソースVPNソフトウェアです。単一のUDPまたはTCPポートを介してIPネットワークを安全にトンネリングします。プライベートネットワークで実現されるセキュリティを維持しながら、パブリックネットワーク全体でのプライベートネットワークの拡張を容易にします。

RockyLinux8でのOpenVPNサーバーのセットアップ

EPELリポジトリのインストール

最新のOpenVPNパッケージは、RockyLinux8およびその他の同様の派生物のEPELリポジトリーによって提供されます。以下のコマンドを実行することにより、EPELをRockyLinux8にインストールできます;

dnf install epel-release -y

RockyLinux8にOpenVPNをインストールする

EPELリポジトリが配置されたら、以下のコマンドを実行して、OpenVPNパッケージをRockyLinux8にインストールできます。

dnf install openvpn

RockyLinux8にEasy-RSACAユーティリティをインストールする

Easy-RSAパッケージは、VPN接続を保護するために使用されるSSLキーペアを生成するために使用されるシェルベースのCAユーティリティです。

dnf install easy-rsa

OpenVPN公開鍵インフラストラクチャを作成する

OpenVPNサーバーを設定する最初のステップは、OpenVPNサーバーと接続クライアントの公開鍵と秘密鍵、およびOpenVPNサーバーとクライアント証明書に署名するためのマスター認証局証明書と秘密鍵で構成されるPKIを作成することです。可能であれば、セキュリティ上の理由から、OpenVPNを実行している別のサーバーにPKIを作成する必要があります。

PKIを初期化する

Easy-RSAはPKI管理に使用されます。 Easy-RSAスクリプトは、/usr/share/easy-rsa ディレクトリ。

アップグレード時にEasy-RSAで行われた構成が上書きされないようにするには、スクリプトを別のディレクトリにコピーします。できれば/etcの下にコピーします。 ディレクトリ。

mkdir /etc/easy-rsa
cp -air /usr/share/easy-rsa/3/* /etc/easy-rsa/

スクリプトを配置したら、ディレクトリに移動してPKIを初期化します。

cd /etc/easy-rsa/
./easyrsa init-pki

サンプルコマンド出力;

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/easy-rsa/pki

認証局(CA)の証明書とキーを生成する

次に、上記のEasy-RSAディレクトリ内で以下のコマンドを実行して、証明書の署名に使用されるCA証明書とキーを生成します。

./easyrsa build-ca

これにより、CAキーパスフレーズとサーバーの共通名の入力を求められます。

Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020

Enter New CA Key Passphrase: 
Re-Enter New CA Key Passphrase: 
Generating RSA private key, 2048 bit long modulus (2 primes)
........................................+++++
....................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:Kifarunix-demo CA

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/easy-rsa/pki/ca.crt
>

CAファイルは/etc/easy-rsa/pki/ca.crtです。

DiffieHellmanパラメーターの生成

上記と同じEasy-RSAディレクトリ内で、以下のコマンドを実行して、接続しているクライアントとのTLSハンドシェイク中にキー交換に使用できるDiffie-Hellmanキーファイルを生成します。

./easyrsa gen-dh
>

コマンドが完了するまでに時間がかかります。次に、DHパラメータを/etc/easy-rsa/pki/dh.pemに保存します。 ファイル。

OpenVPNサーバーの証明書とキーを生成する

OpenVPNサーバーの証明書と秘密鍵を生成するには、以下のコマンドを実行します;

cd /etc/easy-rsa
./easyrsa build-server-full server nopass

コマンドを実行すると、上記で作成したCAキーパスフレーズを入力するように求められます。

nopass 証明書でのパスフレーズの使用を無効にします。

Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020
Generating a RSA private key
.....+++++
...............................+++++
writing new private key to '/etc/easy-rsa/pki/easy-rsa-10170.VLZsfK/tmp.4TRoOP'
-----
Using configuration from /etc/easy-rsa/pki/easy-rsa-10170.VLZsfK/tmp.jTJJ7f
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until Oct  3 18:03:20 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

ハッシュベースのメッセージ認証コード(HMAC)キーを生成する

すべてのSSL/TLSハンドシェイクパケットに追加のHMAC署名を追加するために使用されるTLS/SSL事前共有認証キーを生成し、DoS攻撃とUDPポートフラッディングを回避するには、以下のコマンドを実行します;

openvpn --genkey --secret /etc/easy-rsa/pki/ta.key

失効証明書を生成する

以前に署名された証明書を無効にするには、失効証明書を生成する必要があります。

./easyrsa gen-crl
Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020
Using configuration from /etc/easy-rsa/pki/easy-rsa-10284.mSzk9F/tmp.qdix0A
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:

An updated CRL has been created.
CRL file: /etc/easy-rsa/pki/crl.pe

失効証明書は、/etc/easy-rsa/pki/crl.pemとして保存されます。 。

サーバー証明書とキーをサーバーディレクトリにコピーする

次に、生成されたすべての証明書/キーをOpenVPNサーバー構成ディレクトリにコピーします。

cp -rp /etc/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem,issued,private} /etc/openvpn/server/

OpenVPNクライアント証明書とキーを生成する

OpenVPNクライアントの証明書と秘密鍵を生成するには、以下のコマンドを実行します;

cd /etc/easy-rsa
./easyrsa build-client-full gentoo nopass

サンプル出力;

Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020
Generating a RSA private key
........................+++++
.........................................................................................+++++
writing new private key to '/etc/easy-rsa/pki/easy-rsa-10316.rcXRdS/tmp.tauo7u'
-----
Using configuration from /etc/easy-rsa/pki/easy-rsa-10316.rcXRdS/tmp.RxlTaw
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'gentoo'
Certificate is to be certified until Oct  3 18:05:23 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

ここで、 gentoo 証明書とキーが生成されるクライアントの名前です。証明書とキーを生成するクライアントごとに、常に一意の共通名を使用してください。

2番目のクライアント用に生成するには、

./easyrsa build-client-full johndoe nopass

クライアント証明書とキーをクライアントディレクトリにコピーする

OpenVPNクライアントのディレクトリに各クライアントのディレクトリを作成します

mkdir /etc/openvpn/client/{gentoo,johndoe}

次に、クライアントが生成したすべての証明書/キーとCA証明書をOpenVPNクライアント構成ディレクトリにコピーします。できます

cp -rp /etc/easy-rsa/pki/{ca.crt,issued/gentoo.crt,private/gentoo.key} /etc/openvpn/client/gentoo
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/johndoe.crt,private/johndoe.key} /etc/openvpn/client/johndoe/

RockyLinux8でOpenVPNサーバーを構成する

OpenVPNには、ドキュメントディレクトリ内にサンプル構成ファイルが付属しています。ファイルを/etc/openvpn/server/ ニーズに合わせて変更してください。

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

変更のために構成を開きます。

vim /etc/openvpn/server/server.conf

ファイルは非常にコメントされています。すべての構成オプションのコメントをお読みください。

最も基本的な形式では、コメントなしの構成オプションを以下に示します。

port 1194
proto udp4
dev tun
ca ca.crt
cert issued/server.crt
key private/server.key  # This file should be kept secret
dh dh.pem
topology subnet
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 192.168.10.3"
client-to-client
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append  /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
auth SHA512

変更が完了したら、構成を保存して終了します。

OpenVPNクライアントに固定/静的IPアドレスを割り当てたいですか?以下のガイドに従ってください;

OpenVPNクライアントに静的IPアドレスを割り当てる

ログディレクトリを作成します;

mkdir /var/log/openvpn/

構成を調べて、ニーズに合わせてさらに微調整します。

OpenVPNサーバールーティングの構成

クライアントからのトラフィックがサーバーのIPアドレスを介してルーティングされるようにするには(クライアントのIPアドレスをマスクするのに役立ちます)、OpenVPNサーバーでIP転送を有効にする必要があります;

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

以下のコマンドを実行して、サーバーを再起動せずに変更を有効にします。

sysctl --system

ファイアウォールを介したOpenVPNサービスポートを許可する

firewall-cmd --add-port=1194/udp --permanent

IPマスカレードを有効にする

firewall-cmd --add-masquerade --permanent

指定されたOpenVPNサブネット(この場合は10.8.0.0/24)で受信したトラフィックを、パケットが送信されるインターフェイスに転送します。

以下のコマンドを実行して、パケットが送信されるインターフェイスを見つけるには、

ip route get 8.8.8.8
8.8.8.8 via 10.0.2.2 dev enp0s3 src 10.0.2.15 uid 0 
    cache

定義されているインターフェース名とサブネットは、場合によって異なる場合があります。それに応じて置き換えます。

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

変更を有効にするためにfirewalldをリロードします。

firewall-cmd --reload

OpenVPNを起動してシステム起動時に実行するように設定します。

systemctl enable --now [email protected]

OpenVPNサービスを実行すると、トンネリングインターフェイスtun0が作成されます;

ip add s
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::afd7:17a6:57ee:7f3b/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

ログを確認する;

tail /var/log/openvpn/openvpn.log
/sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255
Socket Buffers: R=[212992->212992] S=[212992->212992]
UDPv4 link local (bound): [AF_INET][undef]:1194
UDPv4 link remote: [AF_UNSPEC]
GID set to nobody
UID set to nobody
MULTI: multi_init called, r=256 v=256
IFCONFIG POOL: base=10.8.0.2 size=252, ipv6=0
IFCONFIG POOL LIST
Initialization Sequence Completed

これで、OpenVPNサーバーが稼働しています。これで、RockyLinux8にOpenVPNサーバーをインストールしてセットアップする方法に関するガイドは終わりです。

これで、OpenVPNクライアントの構成に進み、VPNサーバーを介してそれらを相互接続できます。

RockyLinux8にOpenVPNクライアントをインストールして構成する

その他のチュートリアル

OpenVPNクライアントに静的IPアドレスを割り当てる

OpenVPNLDAPベースの認証を構成する


OpenVPN
  1. RockyLinux8にOpenVPNクライアントをインストールして構成する

  2. RockyLinux8でOpenVPNサーバーをセットアップする

  3. Ubuntu20.04にOpenVPNサーバーをインストールしてセットアップする

  1. LinuxでOpenVPNサーバーを構成する

  2. CentOS8でOpenVPNサーバーをセットアップする

  3. LinuxでパスワードなしのSSHを設定する方法

  1. LinuxPCにOpenVPNをインストールします

  2. UbuntuLinuxでのWebDAVサーバーのセットアップ

  3. Ubuntu14.04でのサーバーの初期設定