CentOS8でのOpenVPNサーバーのセットアップ
EPELリポジトリのインストール
最新のOpenVPNパッケージは、CentOS8およびその他の同様の派生物のEPELリポジトリによって提供されます。 EPELは、以下のコマンドを実行してCentOS8にインストールできます。
dnf install epel-release -y
CentOS8にOpenVPNをインストールする
EPELリポジトリが配置されたら、以下のコマンドを実行して、CentOS8にOpenVPNパッケージをインストールできます。
dnf install openvpn
CentOS8に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
認証局(CA)の証明書とキーを生成する
次に、上記のEasy-RSAディレクトリ内で以下のコマンドを実行して、証明書の署名に使用されるCA証明書とキーを生成します。
./easyrsa build-ca
これにより、CAキーパスフレーズとサーバーの共通名の入力を求められます。
Using SSL: openssl OpenSSL 1.1.1c FIPS 28 May 2019 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 140160794502976: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-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
パスフレーズの使用を無効にします。
ハッシュベースのメッセージ認証コード(HMAC)キーを生成する
すべてのSSL/TLSハンドシェイクパケットに追加のHMAC署名を追加するために使用されるTLS/SSL事前共有認証キーを生成し、DoS攻撃とUDPポートフラッディングを回避するには、以下のコマンドを実行します;
openvpn --genkey --secret /etc/easy-rsa/pki/ta.key
失効証明書を生成する
以前に署名された証明書を無効にするには、失効証明書を生成する必要があります。
./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
ここでコロミチャ 証明書とキーが生成されるクライアントの名前です。証明書とキーを生成するクライアントごとに、常に一意の共通名を使用してください。
2番目のクライアント用に生成するには、
./easyrsa build-client-full johndoe nopass
クライアント証明書とキーをクライアントディレクトリにコピーする
OpenVPNクライアントのディレクトリに各クライアントのディレクトリを作成します
mkdir /etc/openvpn/client/{koromicha,johndoe}
次に、クライアントが生成したすべての証明書/キーと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/johndoe.crt,private/johndoe.key} /etc/openvpn/client/johndoe/
CentOS8で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 192.168.43.1 dev enp0s3 src 192.168.43.73 uid 0
定義されているインターフェース名とサブネットは、場合によって異なる場合があります。それに応じて置き換えます。
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::2ed5:8f74:c456:96b7/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サーバーが稼働しています。これで、CentOS8にOpenVPNサーバーをインストールしてセットアップする方法に関するガイドは終わりです。
これで、OpenVPNクライアントの構成に進むことができます。
CentOS 8 /Ubuntu18.04にOpenVPNクライアントをインストールして構成する
OpenVPNLDAPベースの認証を構成します。
OpenVPNLDAPベースの認証を構成する
関連チュートリアル
Ubuntu18.04でStrongSwanを使用してIPSECVPNを構成する
Ubuntu 18.04 /CentOS8でstrongSwanVPNクライアントを構成する
UbuntuでPCFファイルを使用してCiscoVPNに接続する