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

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

このガイドでは、Ubuntu20.04にOpenVPNサーバーをインストールしてセットアップする方法を学習します。 OpenVPNは、OpenSSLライブラリのすべての暗号化、認証、認証機能を使用して、単一のUDPまたはTCPポートを介してIPネットワークを安全にトンネリングする、堅牢で柔軟性の高いオープンソースVPNソフトウェアです。

プライベートネットワークで達成されるセキュリティを維持しながら、パブリックネットワーク全体でのプライベートネットワークの拡張、リモートサイトへのアクセス、安全なポイントツーポイント接続の確立を容易にします。

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

システムアップデートを実行する

apt update
apt upgrade

Ubuntu20.04にOpenVPNをインストールする

OpenVPNパッケージは、デフォルトのUbuntu20.04リポジトリで利用できます。したがって、インストールは以下のコマンドを実行するのと同じくらい簡単です;

apt install openvpn

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

Easy-RSAパッケージは、VPN接続を保護するために使用されるSSLキーペアを生成するためのユーティリティを提供します。

apt install easy-rsa

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

easy-rsaをインストールしたら、OpenVPNPKIを初期化する必要があります。 PKIは次のもので構成されます:

  • サーバーと各クライアントの公開鍵と秘密鍵
  • サーバーとクライアントの各証明書に署名するために使用されるマスター認証局(CA)の証明書とキー。

先に進む前に、easy-rsa構成ディレクトリを別の場所にコピーして、将来のOpenVPNパッケージのアップグレードによって変更が上書きされないようにします。

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

次に、PKIを初期化します。

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

PKIが初期化されたら、/etc/easy-rsa/pki 創造された。

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

次に、OpenVPNサーバーとクライアントの証明書に署名するためのCA証明書とキーを生成します。

cd /etc/easy-rsa/
./easyrsa build-ca

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

Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020

Enter New CA Key Passphrase: ENTER PASSWORD
Re-Enter New CA Key Passphrase: RE-ENTER PASSWORD
Generating RSA private key, 2048 bit long modulus (2 primes)
...................+++++
..............+++++
e is 65537 (0x010001)
Can't load /etc/easy-rsa/pki/.rnd into RNG
139840045897024:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/etc/easy-rsa/pki/.rnd
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パラメーターの生成

OpenVPNサーバーと接続しているクライアント間のTLSハンドシェイク中にキー交換に使用されるDiffie-Hellmanキーを生成します。このコマンドは、Easy-RSAディレクトリ内で実行されています;

./easyrsa gen-dh

/etc/easy-rsa/pki/dh.pem

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

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

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

上記で作成したCAキーパスフレーズを入力して、証明書とキーを生成します。

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

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

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

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

OpenVPN失効証明書を生成する

以前に署名された証明書を無効にするには、失効証明書を生成する必要があります。 Easy-RSAディレクトリ内でスクリプトを実行します;

./easyrsa gen-crl

失効証明書が生成され、/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 koromicha nopass
  • ここでkoromicha 証明書とキーが生成されるクライアントの名前です。
  • 証明書とキーを生成するクライアントごとに、常に一意の共通名を使用してください。

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

./easyrsa build-client-full janedoe nopass

easyrsaの使い方をご覧いただけます ./easyrsa --helpを使用したコマンド 。

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

OpenVPNクライアントディレクトリを作成します。たとえば、2つのクライアント、koromichaとjanedoeの証明書とキーファイルを生成したため、ディレクトリを次のように作成します;

mkdir /etc/openvpn/client/{koromicha,janedoe}

その後、クライアントが生成した証明書/キーとサーバーCA証明書をOpenVPNクライアント構成ディレクトリにコピーします。

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

Ubuntu20.04でOpenVPNサーバーを構成する

次のステップは、OpenVPNサーバーを構成することです。サンプルのOpenVPNサーバー構成を/etc/openvpn/serverにコピーします 以下に示すディレクトリ;

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

構成を抽出し、ニーズに合わせて変更します。

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

これは、コメントなしのサンプル構成の外観です。さまざまなオプションの使用法を理解するのに役立つように、構成は高く評価されています。

port 1194
proto udp
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 /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 192.168.2.11"
client-to-client
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
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

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

OpenVPNIP転送の構成

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

行のコメントを解除します。net.ipv4.ip_forward=1/etc/sysctl.conf IPv4のパケット転送を有効にするには

sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf

サーバーを再起動せずに変更を適用します。

sysctl --system

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

ufw allow 1194/udp

UFWでIPマスカレードを設定する

パケットが送信されるデフォルトのインターフェースを見つけます。

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

次に、UFWルールを更新します;

vim /etc/ufw/before.rules

*filterの直前に次の強調表示された行を追加します テーブル設定。使用するインターフェースは上記のインターフェース名と一致することに注意してください。

...
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8 -o enp0s3 -j MASQUERADE
COMMIT
# Don't delete these required lines, otherwise there will be errors
*filter
...

構成を保存して終了します。

UFWパケット転送を有効にします;

sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw

UFWをリロードします;

ufw reload

Ubuntu20.04でのOpenVPNサーバーの実行

OpenVPNサーバーを起動して有効にし、システムブートで実行します;

systemctl enable --now [email protected]

ステータスの確認;

systemctl status [email protected]
[email protected] - OpenVPN service for server
     Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-05-01 16:07:33 UTC; 3s ago
       Docs: man:openvpn(8)
             https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
             https://community.openvpn.net/openvpn/wiki/HOWTO
   Main PID: 11980 (openvpn)
     Status: "Initialization Sequence Completed"
      Tasks: 1 (limit: 2281)
     Memory: 1.0M
     CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected]
             └─11980 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf

May 01 16:07:33 vpn.kifarunix-demo.com systemd[1]: Starting OpenVPN service for server...
May 01 16:07:33 vpn.kifarunix-demo.com systemd[1]: Started OpenVPN service for server.

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::1989:2bf2:1e7f:7415/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

また、必ずログを確認してください。

tail /var/log/openvpn/openvpn.log
/sbin/ip link set dev tun0 up mtu 1500
/sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255
Could not determine IPv4/IPv6 protocol. Using AF_INET
Socket Buffers: R=[212992->212992] S=[212992->212992]
UDPv4 link local (bound): [AF_INET][undef]:1194
UDPv4 link remote: [AF_UNSPEC]
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サーバーの準備が整いました。これで、Ubuntu20.04にOpenVPNサーバーをインストールする方法に関するガイドは終わりです。

これで、それに応じてクライアントを構成できます。

関連チュートリアル

CentOS 8 /Ubuntu18.04にOpenVPNクライアントをインストールして構成する

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

Ubuntu18.04でStrongSwanを使用してIPSECVPNを構成する

Ubuntu 18.04 /CentOS8でstrongSwanVPNクライアントを構成する

UbuntuでPCFファイルを使用してCiscoVPNに接続する

OpenVPN
  1. Ubuntu20.04にユニバーサルメディアサーバーをインストールしてセットアップする方法

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

  3. Ubuntu18.04にOpenVPNをインストールする方法

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

  2. OpenVPNサーバーFreeBSD12のインストールと設定

  3. Fedora 29 /CentOS7にOpenVPNサーバーをインストールしてセットアップする

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

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

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