如何設置OpenConnect VPN伺服器

使用虛擬私人網路(VPN)在這個科技時代是必要的。VPN 對於個人使用以及尤其是對於企業和企業來說越來越重要。如果你仍在考慮要選擇哪個 VPN 解決方案,為什麼不考慮 OpenConnect VPN 呢?

OpenConnect VPN 是一個具有企業級性能和功能的免費 VPN 解決方案。在這個教程中,你將學習如何設置和連接到 OpenConnect VPN 伺服器(ocserv)。

繼續閱讀,保護你的網路免受惡意實體的侵害!

先決條件

本教程包括實際演示。要跟隨本教程,請確保你已經準備好以下事項:

  • A Linux server running Debian- This tutorial uses a Debian 11 Bullseye with hostname ocserv-debian.
  • 管理員使用者或擁有 sudo/root 權限的非根使用者。
  • A domain name pointed to your Linux server IP address – This tutorial uses a domain name vpn.atadomain.io.
  • A client machine like Windows 10 or Linux Desktop – This tutorial uses a Windows 10 machine.

安裝 OpenConnect VPN 伺服器

OpenConnect VPN 伺服器是一個基於 SSL 的開源 VPN 伺服器,適用於大多數 Linux 發行版,如 Debian、Ubuntu、RHEL/CentOS 和 Fedora。

OpenConnect VPN 伺服器支援從桌面/電腦到移動裝置(Android 和 iOS)的大多數客戶端。同樣,OpenConnect VPN 伺服器支援多種身份驗證後端,如 Radius、OpenID、Kerberos 和智慧卡。

但在利用這些功能之前,你必須先安裝 OpenConnect VPN 伺服器,步驟如下:

1. 連接到您的伺服器,並執行以下 apt update 命令來更新和刷新套件索引。此命令確保您擁有最新的套件資訊。

sudo apt update
Updating the package repository

2. 接下來,執行以下 apt install 命令來安裝 ocserv 套件。

sudo apt install ocserv -y

安裝完成後,新的 systemd 服務名為 ocserv 將啟動。

Installing the OpenConnect VPN Server

3. 現在,執行以下 systemctl 命令來確保 ocserv 服務正在運行。

# 驗證 ocserv 服務是否已啟用
sudo systemctl is-enabled ocserv
# 驗證 ocserv 服務是否正在運行
sudo systemctl status ocserv

從輸出中可以看到,ocserv 服務的狀態為已啟用並正在運行。

Verifying the ocserv service is enabled and running

生成 SSL/TLS 憑證

安裝完 OpenConnect VPN 伺服器後,下一步是確保您可以安全連接到 OpenConnect VPN 伺服器。如何?第一步是通過 CertbotLetsEncrypt 生成 SSL/TLS 憑證。

但在生成證書之前,請確保您擁有一個電子郵件地址,以註冊到 LetsEncrypt,並且域名指向 Debian 伺服器的 IP 地址。

生成 SSL/TLS 證書的步驟如下:

1. 在您的 Linux 伺服器上運行以下命令以安裝 certbot

sudo apt install certbot -y
Installing Certbot

2. 接下來,運行以下 certbot 命令來生成 SSL/TLS 證書。請確保相應更改電子郵件地址([email protected])和域名(vpn.atadomain.io)。

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --no-eff --email [email protected] -d vpn.atadomain.io
Generating SSL/TLS certificates from LetsEncrypt

3. 最後,運行以下命令來驗證生成的 SSL/TLS 證書是否存在於您的域目錄中。

ls /etc/letsencrypt/live/vpn.atadomain.io

如果成功,您將看到以下公開(fullchain.pem)和私人(privkey.pem)密鑰。如下所示。

Verifying the SSL/TLS certificates exist

配置 OpenConnect VPN 伺服器

即使您擁有 SSL/TSL 證書,除非您配置 OpenConnect VPN 伺服器,否則它們將閒置在那裡。您將根據以下方式修改默認的 OpenConnect VPN 伺服器配置(/etc/ocserv/ocserv.conf):

  • 更改默認的身份驗證方法。
  • 禁用 OpenConnect VPN 伺服器上的 UDP。
  • 更改默認的 SSL/TLS 證書。
  • 為客戶端設置域名和內部網絡或 IP 地址。

要配置 OpenConnect VPN 伺服器,請按照以下步驟進行操作:

1. 首先,執行下面的cp命令備份默認的OpenConnect VPN Server配置(ocserv.conf)到/etc/ocserv目錄下的ocserv.conf.orig

sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.orig

2. 接下來,使用您喜歡的編輯器打開OpenConnect VPN Server配置文件(/etc/ocserv/ocserv.conf)。

3. 將auth參數值更改為plain[passwd=/etc/ocserv/ocpasswd],如下所示。這樣做將使用密碼文件替換默認的可插入身份驗證模組(PAM)身份驗證。

auth = "plain[passwd=/etc/ocserv/ocpasswd]"
Changing the default authentication to a password file

4. 現在,在udp-port參數前面加上#以禁用默認的UDP連接。

您將使用僅TCP模式的OpenConnect VPN,您可以通過內核參數來增加速度。

tcp-port = 443
#udp-port = 443
Disabling the UDP support

5. 將server-cert參數中的證書文件路徑替換為公鑰,將server-key參數中的私鑰替換為私鑰。

server-cert = /etc/letsencrypt/live/vpn.atadomain.io/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.atadomain.io/privkey.pem
Changing the SSL/TLS certificate files path

6. 將 try-mtu-discovery 參數值更改為 true 以啟用 MTU 發現。這樣做可以提高 OpenConnect VPN 服務器的速度和性能。

try-mtu-discovery = true
Enabling MTU discovery

7. 接下來,將域名輸入到 default-domain 參數中,並在 ipv4-network 參數中更改默認內部 IP 地址。

在此示例中,VPN 客戶端將使用內部網絡 10.11.0.0/24

default-domain = vpn.atadomain.io
ipv4-network = 10.11.0.0
Setting up the default domain and internal network for VPN clients

8. 通過在每行開頭添加 # 字符來註釋默認的 route 參數,以禁用默認路由網關。完成後,保存文件並退出編輯器。

#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default
Disabling the default route gateway

9. 現在,運行以下命令來 重新啟動 ocserv 服務,應用更改並列出系統上的所有開放端口 (ss)。

# 重新啟動 ocserv 服務並應用更改
sudo systemctl restart ocserv
# 列出所有開放端口
ss -tulpn | grep ocserv

如果 OpenConnect VPN 服務器正在運行,您將在下面的輸出中看到端口 443 處於 LISTEN 狀態,並由 ocserv 服務使用。如下所示。

Checking the ocserv port

將用戶添加到 OpenConnect VPN 服務器

配置好 OpenConnect VPN 服務器後,您需要一種方法來連接它。如何?通過在 OpenConnect VPN 服務器上創建並添加 VPN 用戶。

要將使用者新增至OpenConnect VPN伺服器,您將按以下步驟建立VPN使用者並透過ocpasswd工具生成密碼檔案:

執行以下ocpasswd命令以建立新使用者。當提示時,輸入新使用者的密碼並重複輸入。本教程選擇的用戶名為atauser,但您可以提供自己的。

使用者建立後,密碼檔案(/etc/ocserv/ocpasswd)也會被建立。

sudo ocpasswd -c /etc/ocserv/ocpasswd atauser
Creating an OpenConnect user

現在,執行以下cat命令來檢查密碼檔案的詳細資訊/etc/ocserv/ocpasswd)。

cat /etc/ocserv/ocpasswd
Checking the password file’s details

將UFW防火牆規則添加至Open關鍵埠

在Debian系統上,默認防火牆是IPTables,需要深入了解網絡才能設置。為什麼不簡化過程呢?在本教程中,您將安裝並配置UFW作為默認防火牆。

1.執行以下命令以安裝UFW並自動接受所有提示(-y

sudo apt install ufw -y
Installing UFW

2.安裝UFW後,執行以下ufw命令來打開OpenConnect VPN伺服器正常工作所需的關鍵埠。

# 添加运行在端口22上的OpenSSH服务。
sudo ufw allow OpenSSH
# 添加端口80以更新LetsEncrypt证书,
# 以及端口443供OpenConnect VPN服务器使用。
sudo ufw allow 80,443/tcp
# 启动并启用UFW。
sudo ufw enable

在提示时,输入Y并按Enter以执行操作,如下所示。

Adding firewall rules to open ports

3. 最后,运行以下命令检查UFW状态,确保UFW正在运行。

sudo ufw status

下面的输出显示了活动的UFW状态和所有添加的防火墙规则。

Checking the UFW status and listing all firewall rules

启用端口转发

在运行VPN服务器时,您必须通过启用端口转发将外部世界的流量定向到服务器。您将通过内核参数允许在Debian服务器上进行端口转发。

要启用端口转发,请按照以下步骤操作:

运行以下命令,该命令不会在终端上产生输出,但会创建一个名为/etc/sysctl.d/60-ocserv.conf的新文件。此文件包含启用系统上端口转发的内核参数。

cat > /etc/sysctl.d/60-ocserv.conf << EOF
net.ipv4.ip_forward = 1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

现在,运行以下sysctl命令以应用新的内核参数并启用端口转发。

sudo sysctl -p /etc/sysctl.d/60-ocserv.conf
Enabling port forwarding

使用UFW设置NAT

启用端口转发只是其中的前几个步骤。这次,您必须通过UFW设置NAT来确保VPN客户端可以通过OpenConnect VPN服务器连接到互联网或特定网络。如何实现?通过使用UFW设置NAT。

為OpenConnect VPN伺服器設置NAT與UFW:

1.執行以下命令來檢查系統上的介面清單。

ip a

在此示例中,eth1介面將成為VPN客戶端的NAT網關。

Checking available interfaces

2.接下來,使用您喜歡的編輯器打開UFW配置(/etc/ufw/before.rules),並在*filter選項之前添加以下行。這些配置將VPN用戶(指定輸出介面)或內部網路NAT到eth1介面。

請務必將子網路(10.11.0.0/24)和介面(eth1)更改為您的VPN客戶端網路和您的網路介面。

# OpenConnect VPN伺服器的NAT
# 用客戶端網路10.11.0.0/24
# 到介面eth1
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.11.0.0/24 -o eth1 -j MASQUERADE
COMMIT
Configuring NAT via UFW

3.在ufw-before-forward選項的ok icmp code for FORWARD部分下方添加以下行,保存文件並退出編輯器。

這些配置啟用了VPN客戶端網路的轉發(來源和目的地)。

# 允許轉發VPN客戶端網路
-A ufw-before-forward -s 10.11.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.11.0.0/24 -j ACCEPT
Enabling forwarding for VPN client network

4.保存後,執行以下命令重新加載UFW規則並重新啟動UFW服務。這樣做可以確保NAT配置應用於系統。

sudo ufw reload
sudo systemctl restart ufw

5.最後,運行以下iptables命令來檢查UFW上的NAT狀態,因為UFW的後端是IPTables。

sudo iptables -t nat -L POSTROUTING

成功時,您將收到以下類似的輸出。

通過OpenConnect-GUI連接到OpenConnect VPN伺服器

按照指示,您現在應該已經運行了一個完全功能的OpenConnect VPN伺服器。但經過所有的辛勤工作,關鍵時刻終於到來了。

OpenConnect VPN伺服器可能正在運行,但僅有一種最好的方法可以驗證——連接到OpenConnect VPN伺服器。

要連接到OpenConnect VPN伺服器,您必須安裝OpenConnect-GUI應用程序:

1. 打開您喜歡的網絡瀏覽器,並訪問OpenConnect-GUI GitHub頁面。

2. 接下來,下載並安裝Windows的OpenConnect VPN應用程序。

Downloading the OpenConnect VPN application for Windows

3. 打開OpenConnect-GUI VPN客戶端,並點擊文件菜單→配置文件新建配置文件(高級)(或按Ctrl+Shift+N)。一個小窗口出現,您可以在其中填寫新的配置文件詳細信息(第四步)。

Creating a new VPN profile

4. 現在,使用以下信息填寫VPN配置文件:

  • 名稱–提供一個連接名稱(即,testvpn)。
  • 閘道–指定您的OpenConnect VPN伺服器的域名(即,https://vpn.atadomain.io)。
  • 用戶名–添加到OpenConnect VPN伺服器的用戶(atauser)。

填寫完畢後,點擊保存以確認信息並創建VPN配置文件。

Configuring the new VPN profile

5. 接下來,將您新建的 VPN 設定檔(testvpn)設定為伺服器,然後點擊連線以建立與 OpenConnect VPN 伺服器的連接。

Connecting to the OpenConnect VPN Server

6. 當系統提示時,輸入您的 VPN 使用者密碼,然後點擊確定

Authenticating the connection to the OpenConnect VPN Server

7. 連接成功後,掛鎖的顏色會變成綠色,如下所示。

Confirming successful connection to the OpenConnect VPN Server

8. 最後,點擊VPN 資訊標籤以獲取詳細的連線狀態。您應該能看到從 VPN 伺服器獲得的內部 IP 位址、DNS 伺服器以及您使用的 TLS 版本。

Checking the VPN connection details

結論

在這個教學中,您學會了如何設置 OpenConnect VPN 伺服器。同時,您還學會了使用 SSL/TLS 憑證並添加防火牆規則以建立對 OpenConnect VPN 伺服器的安全連線。

有了這些新知識,不妨將 OpenConnect VPN 伺服器與多個身份驗證後端整合,例如RadiusOpenID?或者為客戶端身份驗證添加雙因素認證的安全層?

Source:
https://adamtheautomator.com/openconnect-vpn/