在 Ubuntu 上安裝 OpenVPN Servern

最近產品有些服務的異常存取增加,根據網站收到的 request log 數量與參數來看,推測是有人在嘗試找出系統上的 api 漏洞或是破解帳密,因此決定將服務的存取限制在特定 IP 之下,而這個需求可以透過 OpenVPN 來達成。

今天就來快速紀錄一下在 Ubuntu 上安裝 OpenVPN Server 的步驟

基本環境說明

  • Azure VM Standard B2s (2 vcpus, 4 GiB memory)
  • canonical 0001-com-ubuntu-server-jammy 22_04-lts-gen2
  • openvpn 2.5.9-0ubuntu0.22.04.2

安裝步驟

  1. 取得 server 對外 IP

    用來做為 OpenVPN Server 的連線 ip,也用來為相關服務開通的來源 ip

    curl ifconfig.me
    

    1ip

  2. 使用安裝腳本進行安裝

    • 下載腳本

      wget https://git.io/vpn -O openvpn-ubuntu-install.sh
      

      2wget

    • 執行腳本

      sudo bash openvpn-ubuntu-install.sh
      
  3. 逐步設定

    • 設定 OpenVPN Server 的連線 ip

      如果偵測到的 ip 不是預期的 ip,可以手動輸入進行調整

      3openvpnip

    • 選擇連線 protocol

      可以根據需求選擇 TCP 或 UDP,預設為 UDP

      4udp

    • 選擇連線 port

      根據需求設定 port,預設為 1194

      5port

    • 選擇 DNS

      根據需求選擇 DNS,預設為 Current system resolvers

      6dns

    • 設定 client name

      輸入 client name,預設為 client,這會是 client 的檔名

      7client

    • 完成安裝

      安裝完成後,會顯示相關訊息,包含 client 的設定檔位置

      8done1

      8done2

  4. 匯入 client 設定檔

    • 下載 client 設定檔

    • 匯入 client 設定檔

      透過 OpenVPN Client 匯入 client 設定檔

      9import

心得

  • 實際效果:連結 vpn 後,對外 ip 會變成 OpenVPN Server 的 ip,這樣就可以透過 OpenVPN Server 來限制存取服務的來源 ip

    • 未使用 OpenVPN Server

      10before

    • 使用 OpenVPN Server

      11after

  • 新增移除 client 或是刪除 OpenVPN,可以透過重新執行腳本來操作

    sudo bash openvpn-ubuntu-install.sh
    

    12addrevoke

參考資料

  1. Ubuntu 20.04 LTS Set Up OpenVPN Server In 5 Minutes