Làm cách nào để thiết lập OpenVPN để tôi có thể sử dụng internet một cách an toàn từ một điểm truy cập không bảo mật?


31

Mục tiêu: Tôi muốn có thể sử dụng internet một cách an toàn thông qua PC tại nhà trong khi máy tính xách tay của tôi được kết nối với một điểm truy cập / điểm truy cập mở.

Tôi làm biết rằng tôi có thể sử dụng một đường hầm SSH / SOCKS proxy, nhưng tôi không muốn fiddle xung quanh với các ứng dụng (làm cho chúng sử dụng nó, nếu thậm chí có thể). Tôi đoán những gì tôi cần là một thiết lập OpenVPN, vì vậy tôi đang tìm một hướng dẫn chi tiết về cách:

  1. Cài đặt và thiết lập máy chủ OpenVPN
  2. Thiết lập ứng dụng khách OpenVPN (Trình quản lý mạng)

Các phiên bản Ubuntu này sẽ hoạt động vào ngày 10.10 và 11.04.


Đây là một câu hỏi về serverfault hơn là một câu hỏi trên Ubuntu.
Luis Alvarado

1
@Cyrex: 1) là, 2) có lẽ là không
Lekensteyn

Câu trả lời:


40

Tôi có câu hỏi chính xác vài tháng trước, nhưng ngoài ra, tôi muốn có kết nối IPv6 nếu có thể. Bạn có thể quan tâm đến câu hỏi của tôi trên Serverfault:

Tôi chỉ có một NIC ("giao diện mạng") trên máy chủ của mình để sử dụng. Trong thiết lập của tôi, NetworkManager không đủ vì tôi cần chạy tập lệnh tùy chỉnh để hỗ trợ IPv6. Để đơn giản, tuy nhiên, tôi sẽ sử dụng NetworkManager tại đây và bỏ qua hỗ trợ IPv6.

Đầu tiên, chỉ cần đưa ra quyết định về phương thức xác thực. Tôi sẽ sử dụng phương thức chứng chỉ an toàn hơn, hoạt động như SSL: trong khi bắt tay, một bí mật chung được chọn sẽ được sử dụng cho phiên. Các phương pháp khác là một khóa chung; tên người dùng và mật khẩu.

Máy chủ

1. Chuẩn bị

Đầu tiên, cài đặt máy chủ openvpn. Điều này là dễ dàng như sudo apt-get install openvpn. Phần khó khăn là cấu hình nó. Các cấu hình có mặt trong /etc/openvpn.

2. Cấu hình xác thực

Máy chủ cần chứng chỉ để nhận dạng chính nó và khách hàng của nó. Các chứng chỉ này được lấy từ CA (Cơ quan chung). Việc tạo chứng chỉ và khóa riêng có liên quan có thể được thực hiện trên bất kỳ máy nào, nó không phải được thực hiện trên máy chủ. Nếu bạn thực sự hoang tưởng, bạn nên làm điều đó trên một máy không được kết nối với mạng và sử dụng thẻ nhớ để chuyển chứng chỉ.

Tạo CA và chứng chỉ cho máy chủ

Bước này phải được thực hiện một lần trừ khi khóa riêng của CA của bạn bị xâm phạm. Trong trường hợp đó, chứng chỉ hợp lệ có thể được tạo sẽ được máy chủ chấp nhận, dẫn đến vi phạm bảo mật.

Các tài liệu chính thức đề nghị để làm quản trị trong /etc/openvpn. Tôi không phải là một fan hâm mộ lớn của việc chạy mọi thứ như root, vì vậy tôi sẽ đặt nó vào một thư mục khác.

  1. Tạo thư mục quản trị và sao chép các tệp trong đó bằng cách chạy:

    mkdir ~/openvpn-admin
    cd ~/openvpn-admin
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
    cd easy-rsa
    
  2. Chỉnh sửa mặc định varskhi cần, ví dụ như cài đặt KEY_SIZE=2048vì bạn bị hoang tưởng.
  3. Tải các biến và tạo thư mục chính bằng cách chạy:

    . vars
    
  4. Nếu bạn nhận được một lỗi mà No ... openssl.cnf file could be found Further invocations will fail, chạy ln -s openssl-1.0.0.cnf openssl.cnf, sau đó . varsmột lần nữa.

  5. Nếu đây là lần đầu tiên bạn sử dụng CA này, hãy chuẩn bị môi trường phím. Đừng không chạy lệnh này nếu bạn muốn duy trì CA. tạo trước đó của bạn Làm như vậy sẽ yêu cầu bạn triển khai một cái mới ca.crt.

    ./clean-all
    
  6. Tạo CA bằng cách thực thi ./build-ca. Bạn có thể điền bất kỳ chi tiết nào bạn muốn, nhưng lưu ý rằng thông tin này sẽ hiển thị trong các tệp nhật ký khi máy khách kết nối với máy chủ. Điều này sẽ tạo ra các tập tin ca.keyca.crttrong thư mục con keys. Giữ ca.keybí mật tập tin trong mọi trường hợp . Không làm như vậy sẽ cho phép bất cứ ai có chìa khóa kết nối với máy chủ của bạn.
  7. Nếu bạn có một chứng chỉ trước đó bị mất hoặc hết hạn, trước tiên bạn cần thu hồi chứng chỉ cũ ./revoke-full server. Nếu không, bạn nhận được một lỗi cơ sở dữ liệu.
  8. Tạo chứng chỉ cho máy chủ bằng cách chạy:

    ./build-key-server server
    

    Khi được yêu cầu nhập mật khẩu, hãy để trống, trừ khi bạn sẵn sàng nhập mật khẩu mỗi khi máy chủ khởi động (không được khuyến nghị). Xác nhận khi ký giấy chứng nhận và cam kết. Hai tệp mới sẽ xuất hiện trong thư mục keys: server.keyserver.crt.

DH và sử dụng chuẩn bị cho tls-auth

Tạo tham số Diffie-Hellman bằng cách sử dụng:

./build-dh

Mỗi mẹo làm cứng , sử dụng tls-auth. Vì thế, hãy tạo khóa bí mật chung bằng cách sử dụng:

openvpn --genkey --secret ta.key

Tệp kết quả ( ta.key) cũng phải được phân phối cho khách hàng, nhưng bạn không nên đặt nó ở nơi công cộng.

Tạo chứng chỉ cho khách hàng

Đối với mỗi khách hàng, các bước này cần được lặp lại:

  1. Nhập thư mục mà bạn đã tạo chứng chỉ CA và máy chủ:

    cd ~/openvpn-admin/easy-rsa
    
  2. Nếu bạn đã bỏ qua bước tạo CA vì bạn đã có, bạn cần tải các biến trước tiên:

    . vars
    
  3. Nếu bạn đang tạo chứng chỉ mới vì chứng chỉ cũ bị mất hoặc hết hạn , trước tiên bạn cần thu hồi chứng chỉ cũ ./revoke-full you. Nếu không, bạn nhận được một lỗi cơ sở dữ liệu.
  4. Tạo chứng chỉ you.keyứng dụng khách và chứng chỉ tương ứng you.crt:

    ./build-key you
    

    Các CommonNamephải là duy nhất. Để trống mật khẩu nếu bạn đang sử dụng KDE vì nó chưa được hỗ trợ kể từ ngày 10.10. Như với việc tạo chứng chỉ máy chủ, xác nhận ký chứng chỉ và cam kết thay đổi.

3. Cài đặt dịch vụ OpenVPN

Theo mặc định, OpenVPN chạy bằng root khi chấp nhận kết nối. Không phải là một ý tưởng tốt nếu dịch vụ có thể truy cập từ Internet xấu.

  1. Tạo người dùng chuyên dụng cho OpenVPN, giả sử openvpn:

    sudo useradd openvpn
    
  2. Sao chép các tập tin server.key, server.crt, ca.crtdh1024.pem(hoặc dh2048.pemnếu bạn đã thay đổi kích thước key) từ thư mục phím vào /etc/openvpn. Một sự cho phép 400 (chỉ đọc cho chủ sở hữu) là tốt.

    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. Sao chép tập tin ta.keylà tốt:

    sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
    sudo chmod 400 /etc/openvpn/ta.key
    
  4. Tạo tập tin /etc/openvpn/server.confvà đặt các dòng tiếp theo vào nó:

    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. Đặt quyền thích hợp cho nó, nó không cần phải bí mật, nhưng tôi không muốn rò rỉ chi tiết cấu hình vì vậy:

    sudo chmod 640 /etc/openvpn/server.conf
    

4. Hoàn thiện máy chủ

Nếu bạn đã tạo chứng chỉ trên máy chủ, bạn nên mã hóa hoặc di chuyển nó ra khỏi máy chủ. Trong mọi trường hợp, không mất ca.keyserver.key. Trong trường hợp đầu tiên, những người khác sẽ có thể kết nối với máy chủ của bạn. Sau này, một MITM là có thể.

Khách hàng

Ngoài địa chỉ IP của máy chủ, quản trị viên máy chủ nên bàn giao các tệp sau:

  • ca.crt: để xác minh chứng chỉ
  • server.crt: để xác minh máy chủ và liên lạc với nó
  • ta.key: để tăng cường bảo mật
  • you.crt: để xác định chính mình với máy chủ
  • you.key: giống như mật khẩu của bạn, quyền truy cập tệp phải là 400 (chỉ đọc cho chủ sở hữu)

1. Cài đặt

Cài đặt OpenVPN và plugin NetworkManager (phù hợp với KDE và Gnome):

sudo apt-get install openvpn network-manager-openvpn

network-manager-openvpn là trong kho vũ trụ.

2. Cấu hình

Trong bảng điều khiển, sử dụng các chi tiết sau:

  • Cổng: địa chỉ IP của máy chủ
  • Nhập: "Chứng chỉ (TLS)" (Gnome) hoặc "Chứng chỉ X.509" (KDE)
  • Chứng chỉ CA: đường dẫn đến ca.crt
  • Chứng chỉ người dùng: đường dẫn đến you.crt
  • Khóa riêng: đường dẫn đến you.key

Tại Nâng cao :

  • Cổng cổng: Tự động (1194) (không cần thay đổi)
  • Sử dụng nén dữ liệu LZO: đã bật
  • Sử dụng kết nối TCP: bị vô hiệu hóa
  • Sử dụng thiết bị TAP: đã bật
  • Mật mã: mặc định
  • Xác thực HMAC: mặc định
  • Sử dụng xác thực TLS: được bật
    Chỉ định đường dẫn Tệp chính thành ta.keyvà đặt "Hướng chính" thành 1.
  • (việc cần làm - kiểm tra nó ) máy chủ sẽ đẩy cổng mặc định để tất cả lưu lượng truy cập qua kết nối VPN. Lần cuối cùng tôi kiểm tra, plugin quản lý mạng openvpn đã không làm điều đó.

Nếu bạn không thể để NetworkManager hoạt động hoặc không muốn sử dụng nó, hãy đặt các tệp ( ca.crt, ...) vào /etc/openvpnvà tạo tệp /etc/openvpn/client.conftệp:

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

Nếu bạn không muốn bật VPN này khi khởi động, hãy chỉnh sửa /etc/default/openvpnvà bỏ ghi chú dòng tiếp theo bằng cách xóa #:

#AUTOSTART="none"

Để bắt đầu kết nối này, hãy chạy:

sudo /etc/init.d/openvpn start client

clientnên được đổi tên nếu tập tin cấu hình của bạn không được đặt tên client.conf. Ví dụ: nếu bạn đã đặt tên tệp cấu hình của mình safe.conf, bạn cần chạy sudo /etc/init.d/openvpn start safe.

Để dừng OpenVPN, bạn phải chạy:

sudo /etc/init.d/openvpn stop

1
Cấu hình máy chủ để đăng nhập dựa trên tên người dùng / mật khẩu là gì, nơi khách hàng của tôi không có kiến ​​thức để thiết lập máy khách vpn tất cả tôi muốn anh ta sử dụng ip máy chủ, tên người dùng, mật khẩu.

@YumYumYum Không biết làm thế nào để sử dụng tên người dùng / mật khẩu, hãy xem trang hướng dẫn của openvpn ( man openvpn). Các phiên bản gần đây của openvpn có khả năng nhúng chứng chỉ và tệp chính, vì vậy có lẽ việc cung cấp tệp cấu hình đơn lẻ đó cùng với hướng dẫn cho người dùng thậm chí còn dễ dàng hơn.
Lekensteyn

Lưu ý rằng các phiên bản mới hơn của Ubuntu có OpenSSL 1.0.1 và việc chạy . varslệnh ở trên có thể gây ra lỗi "có thể tìm thấy tệp openssl.cnf. Các lệnh khác sẽ thất bại". Bạn cần sudo -s; cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/; ln -s openssl-1.0.0.cnf openssl.cnf, sau đó chạy . varsvà các lệnh khác.
Dan Dascalescu

@DanDascalescu Kịch bản whichopensslđịnh vị openssl-1.0.0.cnftệp chính xác cho tôi (easy-rsa 2.3.2, OpenSSL 1.0.1e)
Lekensteyn

Rất nhiều thông tin, trả lời thấu đáo. Bạn có thể trả lời câu hỏi này không?
JB0x2D1

8

Bạn thực sự không cần phải sử dụng bất kỳ ứng dụng nào. Điều này hoạt động "giống như VPN."

  1. Đầu tiên cài đặt tsocksgói (vớ tạm thời):

    sudo apt-get install tsocks
    
  2. Sau đó chỉnh sửa /etc/tsocks.confvà nhập

    server = 127.0.0.1
    server_port = 3333
    
  3. Bây giờ, mở một thiết bị đầu cuối và gõ (điều này kết nối bạn):

    ssh -ND 3333 ssh.url.to.your.home.machine
    
  4. Chạy (thông qua thiết bị đầu cuối khác hoặc ALT-F2):

    tsocks firefox
    

Bây giờ, Firefox truyền tất cả thông tin liên lạc đến máy chủ SOCKS trên máy tính của bạn mà SSH đã tạo. Điều này tiếp tục được chuyển đến máy chủ của bạn, nơi nó đi đến web. Tất cả bạn cần trên máy chủ của bạn là một máy chủ SSH. Sau lần đầu tiên, chỉ cần lặp lại bước 3 và 4.

Nó hoạt động như một say mê! Than ôi, crom không thích tsocks, nhưng hey, Firefox hoạt động.


3
Chà, xem câu cuối cùng của bạn - Tôi không muốn kiểm tra tất cả các chương trình của mình trước nếu chúng thực sự hoạt động tốt với tsocks, khi đó có thể chỉ là một cú nhấp chuột trong applet NetworkManager với OpenVPN.
htorque

ĐƯỢC. Câu trả lời của tôi có thể sẽ hữu ích cho những người muốn có giải pháp nhanh chóng để truy cập các trang web.
MarkovCh1

1

Giải pháp đường hầm SSH dễ dàng hơn bạn nghĩ. Một chương trình như gSTM sẽ bắt đầu / dừng các đường hầm cho bạn với GUI. Sau đó, chỉ cần mở Proxy mạng và thay đổi nó từ kết nối Internet trực tiếp sang cấu hình proxy thủ công, nhấn "Áp dụng toàn hệ thống" và tất cả các ứng dụng của bạn sẽ gửi dữ liệu của chúng xuống đường hầm - không cần phải sử dụng từng cái riêng lẻ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.