Linux
 Computer >> コンピューター >  >> システム >> Linux

Linux CentOS/RHELにOpenVPNサーバーをインストールして構成する

この記事では、 OpenVPNのインストールと構成について検討します。 Linux CentOS / RHEL(7/8)を実行しているサーバーで、構成済みのOpenVPNサーバーを使用してNATの背後にある2台のリモートコンピューター(またはオフィス)を単一のネットワークに参加させる方法を示します。 VPNクライアントは、証明書を使用して認証されます。

VPN は、パブリックネットワークまたはインターネット上に安全なネットワークを構築できるようにする一連のテクノロジーです。 VPNを使用すると、さまざまなデバイスやネットワークをインターネット経由で1つの安全なローカルネットワークに接続できます。

OpenVPN は、OpenSSLに基づくVPNテクノロジーのオープンソースSSL/TLSベースの実装の1つです。 OpenVPNを使用すると、リモートオフィスとNATデバイスの背後にある個々のコンピューターの両方を単一のネットワークに接続できます。

OpenVPNとEasy-RSAをインストールする

最初のステップでは、EPELリポジトリに接続し、ホストを更新する必要があります。

# yum install epel-release -y
# yum update -y

システムが更新されたら、 OpenVPNをインストールします およびEasy-RSA yumパッケージマネージャーを使用します(VPNサーバーにPKIキーインフラストラクチャを実装するために必要になります)。

# yum install openvpn easy-rsa -y

Easy-RSAを構成してX.509証明書を生成する方法

すべてのeasy-rsaをコピーします / etc / openvpn /へのスクリプト :

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

/ etc / openvpn / easy-rsa / 3 /に移動します 変数を作成します そこにファイルする:

# cd /etc/openvpn/easy-rsa/3/
# nano vars

ファイルの内容を追加します(必要に応じて構成を変更できます):

set_var EASYRSA "$PWD"
set_var EASYRSA_PKI "$EASYRSA/pki"
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "DE"
set_var EASYRSA_REQ_PROVINCE "MUN"
set_var EASYRSA_REQ_CITY "BY"
set_var EASYRSA_REQ_ORG "WOSHUB"
set_var EASYRSA_REQ_EMAIL "vpnadmin@woshub.com"
set_var EASYRSA_REQ_OU "IT dept"
set_var EASYRSA_KEY_SIZE 4096
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 7500
set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_NS_SUPPORT "no"
set_var EASYRSA_NS_COMMENT "CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf"
set_var EASYRSA_DIGEST "sha512"

ファイル内の任意のデータを指定できますが、サーバーの構成やその後の操作には影響しません。

ファイルは実行可能である必要があるため、次のコマンドを実行します:

# chmod +x vars

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

キーを作成する前に、 PKIを初期化します ディレクトリを作成し、 CAを作成します キー。
# cd /etc/openvpn/easy-rsa/3/
# ./easyrsa init-pki

Note: using Easy-RSA configuration from: ./vars
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/3/pki
です。

CAを作成する キー:

# ./easyrsa build-ca

コマンドを実行した後、キーと証明書を生成するためにパスワードを入力する必要があります。後で証明書に署名するためにパスワードが必要になります。

Linux CentOS/RHELにOpenVPNサーバーをインストールして構成する

サーバーキーを作成します(サーバー名は vpn.woshub.com ):

nopass オプションはパスワードを無効にします

# ./easyrsa gen-req vpn.woshub.com nopass

Note: using Easy-RSA configuration from: ./vars
Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017
Generating a 4096 bit RSA private key
.........................++
writing new private key to '/etc/openvpn/easy-rsa/3/pki/private/vpn.woshub.com.key.R4IYCbD1zP'
-----
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) [vpn.woshub.com]:
Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/3/pki/reqs/vpn.woshub.com.req
key: /etc/openvpn/easy-rsa/3/pki/private/vpn.woshub.com.key

証明書を発行するときは、 Enterを押します [共通名]列

CA証明書を使用してvpn.woshub.comキーに署名します:

# ./easyrsa sign-req server vpn.woshub.com

証明書に署名するには、 CAを発行するときに設定したパスワードが必要です。 証明書:

Linux CentOS/RHELにOpenVPNサーバーをインストールして構成する

スクリーンショットに示されているように、はいを入力する必要があります およびCA 処理中のパスワード。

証明書がエラーなしで生成されたことを確認するには、次のコマンドを実行します。

# openssl verify -CAfile pki/ca.crt pki/issued/vpn.woshub.com.crt

pki/issued/vpn.woshub.com.crt: OK

すべてのOpenVPNサーバー証明書が作成されました。

  • ルート証明書pki/ca.crt
  • プライベートサーバーキーpki/private/vpn.woshub.com.key
  • サーバー証明書pki/issued/vpn.woshub.com.crt

クライアントキーを生成するには、次のコマンドを実行します。

# ./easyrsa gen-req client_name nopass

admin1を生成しましょう クライアントキー:
# ./easyrsa gen-req admin1 nopass

Note: using Easy-RSA configuration from: ./vars
Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017
Generating a 4096 bit RSA private key
..........++
writing new private key to '/etc/openvpn/easy-rsa/3/pki/private/admin1.key.R5OY6reT2e'
-----
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) [admin1]:
Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/3/pki/reqs/admin1.req
key: /etc/openvpn/easy-rsa/3/pki/private/admin1.key

サーバーキーなどのCA証明書を使用して署名する必要があります:

# ./easyrsa sign-req client admin1

Linux CentOS/RHELにOpenVPNサーバーをインストールして構成する

ユーザーの証明書が作成されました。

さらに、鍵交換に使用するDiffie-Hellman鍵を生成する必要があります:

# ./easyrsa gen-dh

生成には時間がかかります:

Linux CentOS/RHELにOpenVPNサーバーをインストールして構成する

次に、TSL証明書を生成します:

# openvpn --genkey --secret ta.key

後でクライアント証明書を取り消す場合は、CRLキーを生成する必要があります:

# ./easyrsa gen-crl

Note: using Easy-RSA configuration from: ./vars
Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017
Using configuration from /etc/openvpn/easy-rsa/3/pki/safessl-easyrsa.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/3/pki/private/ca.key:
An updated CRL has been created.
CRL file: /etc/openvpn/easy-rsa/3/pki/crl.pem

証明書を取り消すには、次のコマンドを実行します:

./easyrsa revoke admin1 —ここで admin1 証明書名です

必要な証明書が作成されました。次に、それらを作業ディレクトリにコピーします。

サーバー証明書は次のとおりです。

# cp pki/ca.crt /etc/openvpn/server/
# cp pki/issued/vpn.woshub.com.crt /etc/openvpn/server/
# cp pki/private/vpn.woshub.com.key /etc/openvpn/server/
# cp pki/private/dh.pem /etc/openvpn/server/
# cp pki/private/ta.key /etc/openvpn/server/
# cp pki/crl.pem /etc/openvpn/server/

クライアント証明書は次のとおりです。

# cp pki/issued/admin1.crt /etc/openvpn/client/
# cp pki/private/admin1.key /etc/openvpn/client/

OpenVPNサーバー構成ファイル、ファイアウォールルール

OpenVPN構成ファイルの設定に移りましょう。まず、OpenVPN構成ファイル server.confを作成します :

# cd /etc/openvpn/ && nano server.conf

次のようにファイルの内容を変更します。

# Specify the port, protocol and device
port 1194
proto udp
dev tun
# Specify the paths to the server certificates
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vpn.woshub.com.crt
key /etc/openvpn/server/vpn.woshub.com.key
# Paths to key CRL and DH
dh /etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem
# Specify the IP settings of the network VPN clients will get addresses from
server 10.1.2.0 255.255.255.0
push "redirect-gateway def1"
# Specify the assigned DNS servers
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
# Allow connection to different clients with the same key
duplicate-cn
# TLS protection
tls-auth /etc/openvpn/server/ta.key 0
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 details
keepalive 20 60
persist-key
persist-tun
comp-lzo yes
daemon
user nobody
group nobody
# Path to the log file
log-append /var/log/openvpn.log
verb 3

次に、ファイルを保存します。 VPNサーバーにデフォルトのUDPポート1194を指定しましたが、OpenVPN用にサーバー上の任意の空きポートを指定できます。

これで、ファイアウォールルールを設定して、セグメント間の接続とルーティングを許可する必要があります。

Firewalldを使用している場合は、転送を有効にしてください 最初のカーネルモジュール:

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

net.ipv4.ip_forward = 1

openvpnサービスをfirewalldに追加します 、および tun0 トラステッドゾーンへのインターフェース:

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

ファイアウォールで保護された信頼できるゾーンの「MASQUERADE」をアクティブにします。
# firewall-cmd --permanent --zone=trusted --add-masquerade

NATをアクティブ化する:

# firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.1.2.0/24 -o Server_IP -j MASQUERADE
# firewall-cmd –reload

Firewalldなしでiptablesを使用している場合は、次のコマンドを実行します。

# iptables -t nat -A POSTROUTING -s 10.1.2.0/24 -o eth0 -j MASQUERADE
# iptables -A INPUT -p udp –dport 1194 -j ACCEPT
# service iptables save

OpenVPNサービスを実行し、スタートアップに追加します:

# systemctl start openvpn@server
# systemctl enable openvpn@server

udp \ 1194ポートがopenvpnサービスによってリッスンされていることを確認してください:

# lsof -i:1194

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
openvpn 12327 nobody 5u IPv4 45122 0t0 UDP *:openvpn

ネットワークインターフェースのIP設定を確認してください:

# ip a

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.1.2.1 peer 10.1.2.2/32 scope global tun0
valid_lft forever preferred_lft forever

ご覧のとおり、構成時に指定したネットワークが tun0に追加されます。 デバイス。

これらは、OpenVPNを機能させるための最小設定です。

OpenVPNを使用して複数のオフィス(コンピューター)を接続する方法

NATを介してインターネットにアクセスできる2台のリモートコンピューターからOpenVPNサーバーに接続し、それらを1つのネットワークに参加させる方法を見てみましょう。 Windowsを実行しているコンピューターからOpenVPNサーバーに接続するには、公式クライアントを使用しています。公式ウェブサイトからダウンロードできますが、詳細については説明せず、直接構成に移動します。

クライアントをインストールしたら、ここで構成ファイルの作成に進みます:

C:\Program Files\OpenVPN\config\

clientという名前のファイルを作成し、それに次の内容を追加しました。

client
dev tun
proto udp
remote 112.113.114.15 1194
resolv-retry infinite
nobind
block-outside-dns
persist-key
persist-tun
mute-replay-warnings
remote-cert-tls server
tls-client
auth SHA512
tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1
remote-cert-eku "TLS Web Server Authentication"
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\admin1.crt"
key "C:\\Program Files\\OpenVPN\\config\\admin1.key"
cipher AES-256-CBC
comp-lzo
verb 3

構成するには、前に作成したクライアント、セキュリティ、サーバーの証明書が必要です。それらをサーバーからダウンロードして、ローカルフォルダーに配置する必要があります。次に、OpenVPNクライアント構成ファイルでそれらへのパスを指定します。

次に、トレイのOpenVPNアイコンをクリックしてサーバーに接続できます。

Linux CentOS/RHELにOpenVPNサーバーをインストールして構成する

接続して、デバイスの次のIPアドレスを取得しました:

IPv4 address. . . . . . . . . . . . : 10.1.2.14
Subnet mask . . . . . . . . . . : 255.255.255.0

NATの背後にある2番目のコンピューターで、同じアクションを実行し、2番目のユーザーの証明書を事前に作成しました。接続後、2台目のPCもVPNネットワークからIPアドレスを取得しました:

IPv4 address. . . . . . . . . . . . : 10.1.2.16
Subnet mask . . . . . . . . . . : 255.255.255.0

接続後、両方のコンピューターは同じネットワーク内にあり、お互いを確認します。

2台目のPCにpingを実行します:

Pinging 10.1.2.16 with 32 bytes of data:
Reply from 10.1.2.16: bytes=32 time=73ms TTL=127

最初のPCでpingを実行します:

Pinging 10.1.2.14 with 32 bytes of data:
Reply from 10.1.2.14: bytes=32 time=79ms TTL=127

接続された両方のVPNクライアントは、パケットを送信し、ファイルを相互に直接転送できます。したがって、国のさまざまな場所に物理的に配置されている2つのデバイスを1つのローカルネットワークに結合できます。

OpenVPNサーバー上のユーザー用に任意の数のキーまたは証明書を作成できます。新しい証明書が必要な場合は、/ etc / openvpn / easy-rsa/3に対して次のコマンドを実行します。

# ./easyrsa gen-req clientname nopass
# ./easyrsa sign-req client clientname

ネットワークを安全に保つために使用されていない場合は、クライアント証明書を取り消すことを忘れないでください。


  1. Linux VPSでCS:GOサーバーを作成する方法

    カウンターストライク:グローバルオフェンシブ用のSteamの公式ゲームサーバーは、ほとんどの目的に十分です。ただし、それらを制御することはできません。独自のサーバーを作成すると、次のことができるようになります。 マッチタイム、フリーズタイム、最大プレイヤー数、フレンドリーファイアなどの独自のルールを設定します。ただし、重要なルール、特にこれらのルールに違反しないように注意してください。 友達とプライベートマッチをする。 コンテスト/トーナメントを開催します。 カスタムマップで再生します。 Linuxでゲームサーバーを作成する理由 「これは、Windowsでも、自分のコンピューターでも簡単

  2. Linuxサーバーでトラフィックの多いWebサイト用にApacheとPHPを構成する方法

    LAMPスタック(Linux、Apache、MySQL、PHP)のインストール方法に関するほとんどすべてのチュートリアルでは、PHPスクリプトの処理に組み込みのApacheモジュールを使用することをお勧めします。たとえば、Ubuntuでは、sudo apt install libapache2-mod-phpなどのコマンドを使用するときにこれを有効にします。 パッケージをインストールします。これにより、Apacheはmpm_preforkを使用するようになります。訪問者がWebサイトにアクセスするたびに、その接続を処理するための新しいプロセスが起動されます。これは、トラフィックが少ないときにう