在 Ubuntu 上安裝有密碼保護的 OpenVPN Server

在之前筆記 在 Ubuntu 上安裝 OpenVPN Server 紀錄到如何在 Ubuntu 上安裝 OpenVPN Server,但身為一個有資安意識的工程師,使用時總覺得怪怪的,整個過程就是這麼流暢,順到讓人覺得害怕呀

沒錯,我們沒有為 OpenVPN Server 設定任何保護機制,任何人拿到 client 的設定檔都可以透過我們建立的 OpenVPN Server 在網路上遨遊XD

為了避免 OpenVPN Server 的 cleint 設定檔被任意傳播造成不必要的麻煩,所以今天就來紀錄如何在 OpenVPN 連線時加上一個簡單的密碼驗證

基本環境說明

  • 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://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh -O openvpn-ubuntu-install.sh
      

      2wget

    • 執行腳本

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

    • 設定 OpenVPN Server 的連線 ip

      以我的例子,預設是內網 ip,所以需要手動輸入對外 ip

      3openvpnip

    • 是否啟用 IPv6

      預設為 n,可以根據需求選擇 yn

      4ipv6

    • 選擇連線 port

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

      5port

    • 選擇連線 protocol

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

      6udp

    • 選擇 DNS

      根據需求選擇 DNS,預設為 AdGuard DNS (Anycast: worldwide)

      7dns

    • 是否啟用壓縮

      預設為 n,可以根據需求選擇 yn

      8compress

    • 是否啟用 custom encryption

      預設為 n,可以根據需求選擇 yn

      9encrypt

    • 執行安裝

      10install

    • 設定 client name

      輸入 client name,必填

      11client

    • 是否啟用密碼保護 client 設定

      預設為 1) Add a passwordless client,可以根據需求選擇 1) Add a passwordless client2) Use a password for the client

      12password

    • 設定密碼 (如果選擇 Use a password for the client)

      13pass

    • client 設定完成

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

      14done

  4. 匯入 client 設定檔

    • 下載 client 設定檔

    • 匯入 client 設定檔

      透過 OpenVPN Client 匯入 client 設定檔,並設定 Private Key Password

      15import

心得

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

    • 未使用 OpenVPN Server

      10before

    • 使用 OpenVPN Server

      11after

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

    sudo bash openvpn-ubuntu-install.sh
    

    16addrevoke

參考資料

  1. Ubuntu 20.04 LTS Set Up OpenVPN Server In 5 Minutes
  2. 在 Ubuntu 上安裝 OpenVPN Server