當前位置: 首頁>>技術問答>>正文


如何設置OpenVPN以便我可以安全地從不安全的熱點使用互聯網?

, , , , ,

問題描述

目標:當我的筆記本電腦連接到開放式熱點/接入點時,我希望能夠通過家用電腦安全地使用互聯網。

我知道我可以使用SSH隧道/SOCKS代理,但我不想亂用應用程序(如果可能的話,讓他們使用它)。我想我需要的是OpenVPN設置,所以我正在尋找有關如何:

  1. 安裝並設置OpenVPN服務器

  2. 設置OpenVPN客戶端(NetworkManager)

應該使用的Ubuntu版本是10.10和11.04。

最佳解決思路

幾個月前我有確切的問題,但另外,如果可能的話,我希望有一個IPv6連接。您可能對我在Serverfault上的問題感興趣:

我的服務器上隻有一個NIC(“network interface”)供使用。在我的設置中,NetworkManager是不夠的,因為我需要運行自定義腳本來支持IPv6。但是為了簡單起見,我將在此處使用NetworkManager並省略IPv6支持。

首先,隻需要對身份驗證方法做出決定。我將使用更安全的證書方法,其工作方式類似於SSL:在握手期間,選擇將用於會話的公共秘密。其他方法是共享密鑰;用戶名和密碼。

Server

1.準備

首先,安裝openvpn服務器。這和sudo apt-get install openvpn一樣簡單。困難的部分是配置它。配置存在於/etc/openvpn中。

2.配置身份驗證

服務器需要證書來識別自身及其客戶端。從CA(​​通用授權機構)檢索這些證書。證書和相關私鑰的創建可以在任何機器上完成,不必在服務器上完成。如果你真的很偏執,你應該在沒有連接到網絡的機器上進行,並使用 memory 棒來傳輸證書。

為服務器創建CA和證書

除非您的CA的私鑰受到損害,否則此步驟必須完成一次。在這種情況下,可以創建有效的證書,這些證書將被服務器接受,從而導致安全漏洞。

official documentation建議在/etc/openvpn中進行給藥。我不是以root身份運行所有東西的忠實粉絲,所以我會將它放在不同的目錄中。

  1. 創建管理目錄並通過運行以下命令複製其中的文件:

    mkdir ~/openvpn-admin
    cd ~/openvpn-admin
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
    cd easy-rsa
    
  2. 根據需要編輯vars中的默認值,例如設置KEY_SIZE=2048,因為您是偏執狂。

  3. 通過運行以下命令加載變量並創建密鑰目錄:

    . vars
    
  4. 如果出現No ... openssl.cnf file could be found
    Further invocations will fail
    錯誤,請運行ln -s openssl-1.0.0.cnf openssl.cnf,然後再次運行. vars

  5. 如果這是您第一次使用此CA,請準備密鑰環境。如果要維護以前創建的CA,請不要運行此命令。這樣做將要求您部署新的ca.crt

    ./clean-all
    
  6. 通過執行./build-ca創建CA.您可以填寫所需的任何詳細信息,但請注意,當客戶端連接到服務器時,此信息將顯示在日誌文件中。這將在子文件夾keys中創建文件ca.keyca.crt。在任何情況下都要保密ca.key文件。如果不這樣做,任何擁有密鑰的人都可以連接到您的服務器。

  7. 如果您的先前證書已丟失或已過期,則需要先使用./revoke-full server撤消舊證書。否則會出現數據庫錯誤。

  8. 通過運行以下命令為服務器創建證書:

    ./build-key-server server
    

    當要求輸入密碼時,請將其保留為空,除非您每次啟動服務器時都願意輸入密碼(不推薦)。簽署證書並提交時確認。兩個新文件將出現在目錄keys中:server.keyserver.crt

DH和使用準備tls-auth

使用以下方法生成Diffie-Hellman參數:

./build-dh

根據hardening tips,使用tls-auth。為此,使用以下命令生成shared-secret密鑰:

openvpn --genkey --secret ta.key

生成的文件(ta.key)也必須分發給客戶端,但不應將其公開。

為客戶創建證書

對於每個客戶,應重複這些步驟:

  1. 輸入您在其中創建CA和服務器證書的目錄:

    cd ~/openvpn-admin/easy-rsa
    
  2. 如果您已經跳過了CA創建步驟,那麽您需要首先加載變量:

    . vars
    
  3. 如果要創建新證書,因為舊證書丟失或過期,則需要先使用./revoke-full you撤消舊證書。否則會出現數據庫錯誤。

  4. 創建客戶端證書you.key及其對應的證書you.crt

    ./build-key you
    

    CommonName應該是獨一無二的。如果你正在使用KDE,請將密碼保留為空,因為從10.10開始它還不支持。與生成服務器證書一樣,確認簽署證書並提交更改。

3.設置OpenVPN服務

默認情況下,OpenVPN在接受連接時以root身份運行。如果服務可以從邪惡的互聯網上獲得,那不是一個好主意。

  1. 為OpenVPN創建一個專用用戶,比如說openvpn

    sudo useradd openvpn
    
  2. 將文件server.keyserver.crtca.crtdh1024.pem(如果已更改密鑰大小,則為dh2048.pem)從密鑰目錄複製到/etc/openvpn。 400(read-only為業主)的許可是好的。

    sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
    sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
    
  3. 複製文件ta.key

    sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
    sudo chmod 400 /etc/openvpn/ta.key
    
  4. 創建文件/etc/openvpn/server.conf並將下一行放入其中:

    proto udp
    dev tap
    ca ca.crt
    cert server.crt
    key server.key
    dh dh1024.pem
    server 10.8.0.0 255.255.255.0
    push "redirect-gateway def1"
    ifconfig-pool-persist ipp.txt
    keepalive 10 120
    tls-auth ta.key 0
    # Compress data to save bandwidth
    comp-lzo
    user openvpn
    group openvpn
    persist-key
    persist-tun
    # Logs are useful for debugging
    log-append openvpn-log
    verb 3
    mute 10
    
  5. 在它上麵設置適當的權限,它不需要保密,但我不想泄露配置細節,所以:

    sudo chmod 640 /etc/openvpn/server.conf
    

4.完成服務器

如果您已在服務器上創建了證書,則最好對其進行加密或將其從服務器上移除。在任何情況下,都不要丟失ca.keyserver.key。在第一種情況下,其他人將能夠連接到您的服務器。在後者中,MITM是可能的。

Client

除服務器IP地址外,服務器管理員還應移交以下文件:

  • ca.crt:用於驗證證書

  • server.crt:用於驗證服務器並與之通信

  • ta.key:用於加強安全性

  • you.crt:用服務器標識自己

  • you.key:就像你的密碼一樣,文件權限應為400(所有者為read-only)

1.安裝

安裝OpenVPN和NetworkManager插件(適用於KDE和Gnome):

sudo apt-get install openvpn network-manager-openvpn

network-manager-openvpn位於Universe存儲庫中。

2.配置

在控製麵板中,使用以下詳細信息:

  • 網關:服務器IP地址

  • 鍵入:“證書(TLS)”(Gnome)或“X.509證書”(KDE)

  • CA證書:ca.crt的路徑

  • 用戶證書:you.crt的路徑

  • 私鑰:you.key的路徑

在高級:

  • 網關端口:自動(1194)(不需要更改)

  • 使用LZO數據壓縮:啟用

  • 使用TCP連接:禁用

  • 使用TAP設備:已啟用

  • 密碼:默認

  • HMAC身份驗證:默認

  • 使用TLS-authentication:enabled指定ta.key的密鑰文件路徑,並將”Key Direction”設置為1

  • (todo – 檢查出來)服務器推送默認網關,以便所有流量通過VPN連接。我最後一次檢查時,network-manager-openvpn插件沒有這樣做。

如果無法使用NetworkManager或不想使用它,請將文件(ca.crt,…)放在/etc/openvpn中並創建文件/etc/openvpn/client.conf文件:

client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20

如果您不想在啟動時啟用此VPN,請編輯/etc/default/openvpn並通過刪除#取消注釋下一行:

#AUTOSTART="none"

要啟動此連接,請運行:

sudo /etc/init.d/openvpn start client

如果配置文件未命名為client.conf,則應重命名client。示例:如果已將配置文件命名為safe.conf,則需要運行sudo /etc/init.d/openvpn start safe

要停止OpenVPN,您必須運行:

sudo /etc/init.d/openvpn stop

次佳解決思路

你實際上並不需要擺弄任何應用程序。這就像“VPN一樣”。

  1. 首先安裝tsocks包(臨時襪子):

    sudo apt-get install tsocks
    
  2. 然後編輯/etc/tsocks.conf並輸入

    server = 127.0.0.1
    server_port = 3333
    
  3. 現在,打開一個終端並輸入(這會連接你):

    ssh -ND 3333 ssh.url.to.your.home.machine
    
  4. 運行(通過另一個終端或ALT-F2):

    tsocks firefox
    

現在,Firefox將所有通信傳輸到SSH創建的計算機上的SOCKS服務器。這進一步通過隧道傳輸到您的家用機器,然後進入網絡。您的家庭計算機上隻需要一台SSH服務器。在第一次之後,隻需重複步驟3和4。

它就像一個魅力!唉, chrome 不喜歡tsocks,但嘿,Firefox的作​​用。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/2920.html,未經允許,請勿轉載。