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.
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
- Chỉnh sửa mặc định
vars
khi cần, ví dụ như cài đặt KEY_SIZE=2048
vì bạn bị hoang tưởng.
Tải các biến và tạo thư mục chính bằng cách chạy:
. vars
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 đó . vars
một lần nữa.
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
- 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.key
và ca.crt
trong thư mục con keys
. Giữ ca.key
bí 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.
- 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.
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.key
và server.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:
Nhập thư mục mà bạn đã tạo chứng chỉ CA và máy chủ:
cd ~/openvpn-admin/easy-rsa
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
- 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.
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 CommonName
phả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.
Tạo người dùng chuyên dụng cho OpenVPN, giả sử openvpn
:
sudo useradd openvpn
Sao chép các tập tin server.key
, server.crt
, ca.crt
và dh1024.pem
(hoặc dh2048.pem
nế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}
Sao chép tập tin ta.key
là tốt:
sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
sudo chmod 400 /etc/openvpn/ta.key
Tạo tập tin /etc/openvpn/server.conf
và đặ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
Đặ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.key
và server.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.key
và đặ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/openvpn
và tạo tệp /etc/openvpn/client.conf
tệ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/openvpn
và 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
client
nê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