在本指南中,您將學習如何在 Rocky Linux 8 上安裝和設置 OpenVPN 服務器。 OpenVPN 是一款功能強大且靈活的開源 VPN 軟件,它使用 OpenSSL 庫的所有加密、身份驗證和身份驗證功能通過單個 UDP 或 TCP 端口安全地建立 IP 網絡。幫助通過公共網絡擴展專用網絡,同時在專用網絡上保持可實現的安全性。
在 Rocky Linux 8 上設置 OpenVPN 服務器
安裝 EPEL 存儲庫
最新的 OpenVPN 包由 RockyLinux8 和其他類似的衍生 EPEL 存儲庫提供。 通過運行以下命令可以在 Rocky Linux 8 上安裝 EPEL:
dnf install epel-release -y
在 Rocky Linux 8 上安裝 OpenVPN
一旦 EPEL 存儲庫就位,您可以運行以下命令在 RockyLinux8 上安裝 OpenVPN 包。
dnf install openvpn
在 RockyLinux8 上安裝 Easy-RSACA 實用程序
Easy-RSA 包是一個基於 shell 的 CA 實用程序,用於生成 SSL 密鑰對以保護 VPN 連接。
dnf install easy-rsa
創建 OpenVPN 公鑰基礎設施
設置 OpenVPN 服務器的第一步是創建一個 PKI,其中包含 OpenVPN 服務器和連接的客戶端的公鑰和私鑰,以及用於簽署 OpenVPN 服務器和客戶端證書的主證書頒發機構證書和私鑰。做。如果可能,出於安全原因,您應該在另一台運行 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
證書文件 /etc/easy-rsa/pki/ca.crt
..
生成 DiffieHellman 參數
在與上述相同的 Easy-RSA 目錄中,運行以下命令以生成 Diffie-Hellman 密鑰文件,您可以在與連接的客戶端進行 TLS 握手期間使用該文件進行密鑰交換。
./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 生成證書和密鑰的客戶端的名稱。始終為生成證書和密鑰的每個客戶端使用唯一的通用名稱。
為第二個客戶端生成
./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 地址
配置基於 OpenVPN LDAP 的身份驗證