Cách cài đặt và cấu hình OpenVPN Server trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Mạng riêng ảo (VPN) cho phép bạn truy cập internet bằng cách che giấu vị trí của bạn, cho phép bạn truy cập internet an toàn trên các mạng không đáng tin cậy và tránh các hạn chế về mặt địa lý và kiểm duyệt. OpenVPN là giải pháp VPN Bảo mật lớp truyền tải (TLS) nguồn mở để đạt được mục tiêu này.

Trong hướng dẫn của mình, chúng tôi sẽ cài đặt OpenVPN trên máy chủ Ubuntu 22.04, định cấu hình để có thể truy cập từ máy khách và tạo kết nối VPN giữa chúng để chuyển hướng tất cả lưu lượng truy cập từ máy khách qua máy chủ OpenVPN.

Điều kiện tiên quyết​


  • Một máy chủ chạy Ubuntu 22.04 hỗ trợ cả kết nối IPv4 và IPv6. Chúng tôi sẽ gọi đây là máy chủ OpenVPN. Tường lửa đơn giản (UFW) được bật và đang chạy trên máy chủ.

  • Một máy chủ chạy Ubuntu 22.04 hỗ trợ cả kết nối IPv4 và IPv6. Chúng tôi sẽ thiết lập điều này như một Cơ quan cấp chứng chỉ (CA) riêng tư, mà chúng tôi sẽ gọi là máy chủ CA.

  • Người dùng không phải root có quyền sudo trên cả OpenVPN và máy chủ CA.

  • Máy khách để kết nối với máy chủ OpenVPN. Bạn có thể sử dụng thiết bị cục bộ của mình làm máy khách. OpenVPN có máy khách cho Windows, Linux, macOS, Android và iOS. Bạn có thể sử dụng bất kỳ máy nào trong số chúng để kết nối. Chúng tôi sẽ sử dụng máy tính khách Ubuntu 22.04 cho hướng dẫn này.

  • Mọi thứ đều được cập nhật trên OpenVPN và máy chủ CA.
Mã:
$ sudo apt update && sudo apt upgrade

Bước 1 - Thiết lập máy chủ CA​

Cơ quan cấp chứng chỉ (CA) là một thực thể chịu trách nhiệm cấp chứng chỉ số để xác minh danh tính trên Internet. Trong hướng dẫn này, chúng tôi sẽ sử dụng một máy chủ độc lập làm máy chủ CA riêng sẽ xác thực chứng chỉ máy chủ và máy khách OpenVPN. Máy chủ CA của bạn không nên chạy bất kỳ dịch vụ nào khác ngoài việc nhập, ký và xác thực chứng chỉ.

Bước 1.1 - Cài đặt Easy-RSA​

Bước đầu tiên là cài đặt bộ tập lệnh easy-rsa. easy-rsa là một công cụ quản lý Cơ quan cấp chứng chỉ được sử dụng để tạo khóa riêng và chứng chỉ gốc công khai.
Mã:
$ sudo apt install easy-rsa

Bước 1.2 - Tạo thư mục cơ sở hạ tầng khóa công khai​

Bước tiếp theo là tạo cơ sở hạ tầng khóa công khai (PKI) trên CA máy chủ.
Mã:
$ mkdir ~/easy-rsa
Tạo liên kết tượng trưng trỏ đến gói easy-rsa đã cài đặt tệp.
Mã:
$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Hạn chế quyền truy cập vào thư mục PKI.
Mã:
$ chmod 700 /home//easy-rsa
Khởi tạo PKI.
Mã:
$ cd ~/easy-rsa
$ ./easyrsa init-pki
Bạn sẽ nhận được kết quả sau.
Mã:
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home//easy-rsa/pki

Bước 1.3 - Tạo Cơ quan cấp chứng chỉ​

Trước khi có thể tạo khóa riêng và chứng chỉ của CA, bạn cần định cấu hình thông tin tổ chức cho CA đó. Tạo tệp vars để lưu trữ thông tin bên trong thư mục easy-rsa và mở tệp đó để chỉnh sửa.
Mã:
$ cd ~/easy-rsa
$ nano vars
Dán mã sau vào đó.
Mã:
set_var EASYRSA_REQ_COUNTRY "US"
set_var EASYRSA_REQ_PROVINCE "NewYork"
set_var EASYRSA_REQ_CITY "New York City"
set_var EASYRSA_REQ_ORG "Howtoforge"
set_var EASYRSA_REQ_EMAIL "[emailprotected]"
set_var EASYRSA_REQ_OU "Community"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Chạy lệnh sau để tạo cặp khóa công khai và riêng tư gốc cho Cơ quan cấp chứng chỉ của bạn.
Mã:
$ ./easyrsa build-ca
Bạn sẽ được nhắc nhập cụm mật khẩu cho cặp khóa của mình. Chọn một cụm mật khẩu mạnh và ghi lại để sử dụng sau. Bạn cũng sẽ được yêu cầu nhập Tên chung (CN) cho CA của mình. Bạn có thể nhập bất kỳ chuỗi nào nhưng để đơn giản, hãy nhấn ENTER để chấp nhận tên mặc định.
Mã:
Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home//easy-rsa/pki/ca.crt
Nếu bạn không muốn bị nhắc nhập mật khẩu mỗi khi tương tác với CA, bạn có thể sử dụng lệnh sau thay thế.
Mã:
$ ./easyrsa build-ca nopass
Điều này sẽ tạo ra hai tệp:
  • ~/easy-rsa/pki/ca.crt là tệp chứng chỉ công khai của CA. Mọi người dùng và máy chủ OpenVPN sẽ cần một bản sao của tệp này.
  • ~/easy-rsa/pki/ca.key là khóa riêng do CA sử dụng để ký chứng chỉ cho máy chủ và máy khách OpenVPN. Nếu kẻ tấn công có quyền truy cập vào CA của bạn và sau đó là tệp ca.key của bạn, bạn sẽ cần phải hủy CA của mình. Đây là lý do tại sao tệp ca.key của bạn chỉ nên nằm trên máy CA của bạn và lý tưởng nhất là máy CA của bạn nên được giữ ngoại tuyến khi không ký yêu cầu chứng chỉ như một biện pháp bảo mật bổ sung.

Bước 2 - Cài đặt OpenVPN và Easy-RSA trên máy chủ OpenVPN​

Đăng nhập vào máy chủ OpenVPN của bạn và cài đặt OpenVPN và Easy-RSA gói.
Mã:
$ sudo apt install openvpn easy-rsa
Tạo thư mục ~/easy-rsa.
Mã:
$ mkdir ~/easy-rsa
Tạo liên kết tượng trưng từ easy-rsa tập lệnh mà chúng tôi đã cài đặt giống như trên máy chủ CA.
Mã:
$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Hạn chế quyền truy cập vào thư mục.
Mã:
$ chmod 700 ~/easy-rsa

Bước 3 - Tạo PKI cho Máy chủ OpenVPN​

Tạo tệp vars bên trong ~/easy-rsa thư mục để lưu trữ thông tin cần thiết để tạo PKI và mở nó để chỉnh sửa.
Mã:
$ cd ~/easy-rsa
$ nano vars
Dán các dòng sau vào it.
Mã:
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Vì chúng tôi không sử dụng máy chủ này làm CA, nên đây là những giá trị duy nhất chúng tôi cần. Điều này cấu hình máy chủ OpenVPN & CA của bạn để sử dụng ECC, nghĩa là khi máy khách và máy chủ cố gắng thiết lập khóa đối xứng được chia sẻ, chúng sẽ sử dụng thuật toán Elliptic Curve để thực hiện trao đổi. Nó nhanh hơn đáng kể so với việc sử dụng Diffie-Hellman thông thường với thuật toán RSA cổ điển vì các số nhỏ hơn nhiều và tốc độ tính toán cũng nhanh hơn.

Bước tiếp theo là tạo thư mục PKI bằng cách sử dụng tùy chọn init-pki. Mặc dù bạn đã chạy lệnh này trên máy chủ CA như một phần của các điều kiện tiên quyết, nhưng bạn cần phải chạy lệnh này ở đây vì máy chủ OpenVPN và máy chủ CA của bạn có các thư mục PKI riêng biệt.
Mã:
$ ./easyrsa init-pki
PKI trên máy chủ OpenVPN được sử dụng làm nơi tập trung để lưu trữ các yêu cầu chứng chỉ và chứng chỉ công khai.

Bước 4 - Tạo Yêu cầu chứng chỉ máy chủ OpenVPN và Khóa riêng​

Chuyển sang ~/easy-rsa thư mục trên máy chủ OpenVPN.
Mã:
$ cd ~/easy-rsa
Bước tiếp theo là tạo khóa riêng và Yêu cầu ký chứng chỉ (CSR) trên máy chủ OpenVPN của bạn. Chạy lệnh easy-rsa với tùy chọn gen-req theo sau là Tên chung (CN) cho máy chủ. Trong hướng dẫn này, chúng tôi sẽ sử dụng server làm CN cho máy chủ OpenVPN. Chúng tôi cũng sẽ sử dụng tùy chọn nopass để tránh mọi vấn đề về quyền.
Mã:
$ ./easyrsa gen-req server nopass
Bạn sẽ nhận được kết quả đầu ra sau.
Mã:
Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
..........+.....+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*....................+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..+..+......+.......+...+..+.+.....+....+..+...+............+.+...+.....+....+...........+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+...+......+.....+....+...........+...+..........+..+.+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*............+.+..+....+..............+.....................+....+......+..............+.+.....+....+............+..+............+....+..+...+.......+.....+....+...+..+.........+.+.........+..+...+.+..............+.+.........+...........+.+.....+.........+...+......+.+......+.....+..........+...+..............+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [server]:
Keypair and certificate request completed. Your files are:
req: /home//easy-rsa/pki/reqs/server.req
key: /home//easy-rsa/pki/private/server.key
Điều này tạo ra một khóa riêng cho máy chủ và một tệp yêu cầu chứng chỉ có tên là server.req. Sao chép khóa máy chủ vào thư mục /etc/openvpn/server.
Mã:
$ sudo cp /home//easy-rsa/pki/private/server.key /etc/openvpn/server/
Yêu cầu ký chứng chỉ (CSR) hiện đã sẵn sàng để CA ký.

Bước 5 - Ký CSR của Máy chủ OpenVPN​

Bước tiếp theo là để sao chép tệp CSR vào máy chủ CA để ký. Nếu máy chủ của bạn bật xác thực bằng mật khẩu, bạn chỉ cần sử dụng lệnh sau để sao chép tệp.
Mã:
$ scp /home/username/easy-rsa/pki/reqs/server.req username@your_ca_server_ip:/tmp
Nếu bạn không muốn sử dụng xác thực bằng mật khẩu, bạn sẽ cần tạo cặp khóa SSH cho từng máy chủ, sau đó thêm khóa SSH công khai của Máy chủ OpenVPN vào tệp authorized_keys của máy CA và ngược lại.

Nếu bạn không muốn trải qua tất cả những điều này, bạn chỉ cần sao chép các tệp. Mở tệp trên máy chủ OpenVPN, sao chép nội dung của tệp, sau đó tạo tệp trên máy chủ CA và dán nội dung.

Đăng nhập lại vào Máy chủ CA và chuyển đến thư mục ~/easy-rsa và nhập tệp CSR.
Mã:
$ cd ~/easy-rsa
$ ./easyrsa import-req /tmp/server.req server
Bạn sẽ nhận được thông báo sau đầu ra.
Mã:
Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
The request has been successfully imported with a short name of: server
You may now use this name to perform signing operations on this request.
Ký yêu cầu bằng lệnh sau. Vì chúng ta đang ký CSR của máy chủ OpenVPN, chúng ta sẽ sử dụng Common Name (CN) của nó.
Mã:
$ ./easyrsa sign-req server server
Bạn sẽ được nhắc xác minh xem yêu cầu có đến từ nguồn đáng tin cậy hay không. Nhập yes sau đó nhấn phím ENTER để xác nhận.
Mã:
Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a server certificate for 825 days:
subject= commonName = server
Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes
Tiếp theo, bạn sẽ được nhắc nhập mật khẩu khóa riêng CA mà bạn đã thiết lập trước đó.
Mã:
Using configuration from /home//easy-rsa/pki/easy-rsa-13476.9IC4QC/tmp.lPVwQo
Enter pass phrase for /home//easy-rsa/pki/private/ca.key:
40975B6A677F0000:error:0700006C:configuration file routines:NCONF_get_string:no value:../crypto/conf/conf_lib.c:315:group= name=unique_subject
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'server'
Certificate is to be certified until May 8 12:41:46 2025 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /home//easy-rsa/pki/issued/server.crt
Chứng chỉ kết quả chứa khóa mã hóa công khai của máy chủ OpenVPN cũng như chữ ký từ máy chủ CA. Sao chép chứng chỉ trở lại máy chủ OpenVPN.
Mã:
$ scp pki/issued/server.crt username@your_vpn_server_ip:/tmp
$ scp pki/ca.crt username@your_vpn_server_ip:/tmp
Trên máy chủ OpenVPN của bạn, sao chép các tệp vào /etc/openvpn/server thư mục.
Mã:
$ sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

Bước 6 - Cấu hình Tài liệu mã hóa OpenVPN​

Chúng tôi sẽ thêm một khóa bí mật dùng chung mà máy chủ và tất cả máy khách sẽ sử dụng với chỉ thị tls-crypt của OpenVPN. Điều này đảm bảo rằng máy chủ OpenVPN có thể xử lý lưu lượng truy cập không xác thực, quét cổng và các cuộc tấn công Từ chối dịch vụ. Nó cũng làm cho việc xác định lưu lượng truy cập mạng OpenVPN trở nên khó khăn hơn.

Chuyển sang thư mục ~/easy-rsa.
Mã:
$ cd ~/easy-rsa
Tạo tls-crypt khóa được chia sẻ trước. Thao tác này sẽ tạo một tệp có tên là ta.key
Mã:
$ openvpn --genkey secret ta.key
Sao chép ta.key đến /etc/openvpn/server thư mục.
Mã:
$ sudo cp ta.key /etc/openvpn/server

Bước 7 - Tạo Chứng chỉ máy khách và Cặp khóa​

Tạo thư mục để lưu trữ chứng chỉ máy khách và các tệp khóa.
Mã:
$ mkdir -p ~/client-configs/keys
Hạn chế quyền đối với thư mục để bảo vệ nó.
Mã:
$ chmod -R 700 ~/client-configs
Tiếp theo, chuyển sang ~/easy-rsa thư mục.
Mã:
$ cd ~/easy-rsa
Tạo khóa máy khách với client1 làm Tên chung cho máy khách. Bạn có thể sử dụng bất kỳ CN nào cho máy khách.
Mã:
$ ./easyrsa gen-req client1 nopass
Nhấn ENTER để xác nhận tên chung. Bạn sẽ nhận được kết quả sau.
Mã:
Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
.......+.+.....+.+........+.+...+...+........+....+..+....+.........+....................+......+.......+...+.....+.+.........+...............+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*............+......+.........+......+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+........+...+...................+...........+....+...........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
..........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...........+......+.......+..+..........+.....+.......+.....+....+.....+....+...+.....+...+....+...........+....+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [client1]:
Keypair and certificate request completed. Your files are:
req: /home/username/easy-rsa/pki/reqs/client1.req
key: /home/username/easy-rsa/pki/private/client1.key
Tiếp theo, sao chép tệp client1.key vào ~/client-configs/keys thư mục.
Mã:
$ cp pki/private/client1.key ~/client-configs/keys/
Chuyển client1.req tệp vào máy chủ CA.
Mã:
$ scp pki/reqs/client1.req username@your_ca_server_ip:/tmp
Đăng nhập lại vào máy chủ CA và nhập máy chủ yêu cầu.
Mã:
$ cd ~/easy-rsa
$ ./easyrsa import-req /tmp/client1.req client1
Bạn sẽ nhận được kết quả sau.
Mã:
Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
The request has been successfully imported with a short name of: client1
You may now use this name to perform signing operations on this request.
Ký yêu cầu bằng lệnh sau. Chúng tôi đang sử dụng client làm loại yêu cầu.
Mã:
$ ./easyrsa sign-req client client1
Khi được nhắc, hãy nhập yes để xác nhận ký yêu cầu và yêu cầu đó đến từ một nguồn đáng tin cậy.
Mã:
Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a client certificate for 825 days:
subject= commonName = client1
Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes
Bạn sẽ được nhắc nhập CA mật khẩu.
Mã:
Using configuration from /home//easy-rsa/pki/easy-rsa-13573.uI2Vi8/tmp.q1RnLo
Enter pass phrase for /home//easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'client1'
Certificate is to be certified until May 8 12:50:23 2025 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /home/username/easy-rsa/pki/issued/client1.crt
Chuyển chứng chỉ đã tạo trở lại máy chủ OpenVPN.
Mã:
$ scp pki/issued/client1.crt username@your_server_ip:/tmp
Trên máy chủ OpenVPN, sao chép chứng chỉ máy khách vào ~/client-configs/keys thư mục.
Mã:
$ cp /tmp/client1.crt ~/client-configs/keys/
Sao chép ca.crtta.key các tệp vào ~/client-configs/keys thư mục và thiết lập các quyền thích hợp cho máy chủ hiện đang đăng nhập của bạn.
Mã:
$ cp ~/easy-rsa/ta.key ~/client-configs/keys/
$ sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
$ sudo chown username.username ~/client-configs/keys/*

Bước 8 - Cấu hình OpenVPN​

Sao chép mẫu server.conf tệp làm điểm bắt đầu để cấu hình OpenVPN.
Mã:
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/
Mở tệp để chỉnh sửa.
Mã:
$ sudo nano /etc/openvpn/server/server.conf
Tìm phần HMAC của tệp bằng cách tìm kiếm Chỉ thị tls-auth. Bình luận dòng bằng cách thêm dấu chấm phẩy (;) vào đầu dòng. Thêm một dòng mới bên dưới như minh họa.
Mã:
;tls-auth ta.key 0 # This file is secret
tls-crypt ta.key
Tiếp theo, thay đổi giá trị mã hóa bằng cách tìm kiếm các dòng cipher. Giá trị mặc định được đặt thành AES-256-CBC. Bình luận giá trị mặc định và thêm một dòng khác với mã hóa AES-256-GCM cung cấp mức độ mã hóa tốt hơn và hiệu suất như đã hiển thị.
Mã:
;cipher AES-256-CBC
cipher AES-256-GCM
Ngay bên dưới, thêm Chỉ thị auth để chọn thuật toán tóm tắt thông điệp HMAC.
Mã:
auth SHA256
Vì chúng ta đang sử dụng Mật mã đường cong Elliptic, nên chúng ta cần tắt mã hóa Diffie-Hellman. Bình luận dòng dh dh2048.pem và thêm dh none bên dưới nó.
Mã:
;dh dh2048.pem
dh none
OpenVPN sẽ chạy mà không cần bất kỳ đặc quyền nào sau khi đã khởi động. Để bật tính năng này, hãy tìm và bỏ chú thích cho các dòng user nobodygroup nobody và thay đổi chúng thành đã hiển thị.
Mã:
user nobody
group nogroup
Ubuntu có nogroup Nhóm và không nobody có sẵn trên bản phân phối CentOS.

Chuyển hướng tất cả lưu lượng truy cập qua VPN​

Các thiết lập ở trên tạo kết nối VPN giữa máy khách và máy chủ, nhưng sẽ không buộc bất kỳ kết nối nào sử dụng đường hầm. Để thực hiện, hãy bắt đầu bằng cách tìm dòng push "redirect-gateway def1 bypass-dhcp". Dòng này yêu cầu máy khách chuyển hướng toàn bộ lưu lượng truy cập của mình qua máy chủ OpenVPN. Bỏ chú thích dòng này để bật chức năng.
Mã:
push "redirect-gateway def1 bypass-dhcp"
Tìm phần dhcp-option bên dưới dòng này. Xóa dấu chấm phẩy ở đầu cả hai dòng. Điều này cho biết máy khách sử dụng bộ giải quyết OpenDNS.
Mã:
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Thay đổi cổng và giao thức​

OpenVPN sử dụng cổng 1194 và giao thức UDP theo mặc định để chấp nhận kết nối máy khách. Bạn có thể thay đổi cổng tùy theo nhu cầu của mình. Nếu bạn không lưu trữ nội dung web trên máy chủ OpenVPN của mình, bạn có thể sử dụng cổng 443.

Tìm dòng port 1194 và thay đổi giá trị của nó.
Mã:
# Optional!
port 443
Tìm proto udp và bình luận bằng cách thêm dấu chấm phẩy vào trước dòng đó. Và, bỏ chú thích dòng proto tcp bằng cách xóa dấu chấm phẩy như hình minh họa.
Mã:
proto tcp
;proto udp
Vì chúng ta đang sử dụng giao thức TCP, chúng ta cần thay đổi giá trị của explicit-exit-notify chỉ thị từ 1 đến 0, vì chỉ thị này chỉ được UDP sử dụng.
Mã:
explicit-exit-notify 0

Trỏ đến thông tin xác thực không mặc định​

Nếu bạn đã chọn một tên khác trong ./easy-rsa gen-req server lệnh trước đó, bạn cần sửa đổi certkey các dòng sao cho chúng trỏ đến .crt thích hợp và .key tệp. Vì chúng ta đang sử dụng tên mặc định server nên giá trị mặc định là đúng.
Mã:
cert server.crt
key server.key
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 9 - Điều chỉnh Cấu hình mạng máy chủ OpenVPN​

Bước tiếp theo là cấu hình cấu hình mạng máy chủ để cho phép OpenVPN định tuyến lưu lượng truy cập chính xác. Điều đầu tiên chúng ta cần cấu hình là Chuyển tiếp cổng.

Mở tệp /etc/sysctl.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/sysctl.conf
Thêm dòng sau vào cuối tệp.
Mã:
net.ipv4.ip_forward = 1
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Để đọc tệp và tải các giá trị mới cho phiên hiện tại, hãy sử dụng lệnh sau.
Mã:
$ sudo sysctl -p
net.ipv4.ip_forward = 1
Cấu hình này sẽ định tuyến tất cả lưu lượng truy cập web từ máy khách của bạn qua địa chỉ IP của máy chủ và địa chỉ công khai của máy khách Địa chỉ IP sẽ được ẩn hiệu quả.

Bước 10 - Cấu hình Tường lửa​

Để cho phép OpenVPN đi qua tường lửa, bạn cần bật chế độ ngụy trang, một khái niệm của iptables cung cấp dịch chuyển địa chỉ mạng động (NAT) tức thời để định tuyến chính xác các kết nối của máy khách.

Trước khi mở tệp cấu hình tường lửa để thêm các quy tắc ngụy trang, trước tiên hãy tìm giao diện mạng công cộng của máy bạn bằng lệnh sau.
Mã:
$ ip route list default
Bạn sẽ nhận được thông báo tương tự đầu ra.
Mã:
default via 64.225.64.1 dev eth0 proto static
Điều này cho chúng ta biết rằng tên giao diện là eth0. Mở tệp /etc/ufw/before.rules để chỉnh sửa.
Mã:
$ sudo nano /etc/ufw/before.rules
Các quy tắc này được đọc và đưa vào vị trí trước khi các quy tắc UFW thông thường được tải. Thêm các dòng sau vào đầu tệp như minh họa.
Mã:
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
*filter
. . .
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tiếp theo, chúng ta cần cấu hình UFW để cho phép các gói được chuyển tiếp theo mặc định. Mở tệp /etc/default/ufw để chỉnh sửa.
Mã:
$ sudo nano /etc/default/ufw
Tìm chỉ thị DEFAULT_FORWARD_POLICY và thay đổi giá trị của nó từ DROP thành ACCEPT.
Mã:
DEFAULT_FORWARD_POLICY="ACCEPT"
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Và cuối cùng, mở cổng 443 mà bạn đã cấu hình trước đó cho OpenVPN máy chủ.
Mã:
$ sudo ufw allow 443/tcp
Vô hiệu hóa và kích hoạt tường lửa để áp dụng cấu hình mới.
Mã:
$ sudo ufw disable
$ sudo ufw enable

Bước 11 - Khởi động OpenVPN​

Kích hoạt dịch vụ OpenVPN để khởi động tại khởi động.
Mã:
$ sudo systemctl -f enable [emailprotected]
Khởi động dịch vụ OpenVPN.
Mã:
$ sudo systemctl start [emailprotected]
Kiểm tra trạng thái của dịch vụ.
Mã:
$ sudo systemctl status [emailprotected]
Bạn sẽ nhận được kết quả tương tự.
Mã:
? [emailprotected] - OpenVPN service for server Loaded: loaded (/lib/systemd/system/[emailprotected]; enabled; vendor preset: enabled) Active: active (running) since Fri 2023-02-03 13:40:28 UTC; 32s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 15492 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1116) Memory: 1.8M CPU: 29ms CGroup: /system.slice/system-openvpn\x2dserver.slice/[emailprotected] ??15492 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf
Feb 03 13:40:28 vpnserver openvpn[15492]: Listening for incoming TCP connection on [AF_INET][undef]:443
Feb 03 13:40:28 vpnserver openvpn[15492]: TCPv4_SERVER link local (bound): [AF_INET][undef]:443
Feb 03 13:40:28 vpnserver openvpn[15492]: TCPv4_SERVER link remote: [AF_UNSPEC]
Feb 03 13:40:28 vpnserver openvpn[15492]: GID set to nogroup
Feb 03 13:40:28 vpnserver openvpn[15492]: UID set to nobody
Feb 03 13:40:28 vpnserver openvpn[15492]: MULTI: multi_init called, r=256 v=256
Feb 03 13:40:28 vpnserver openvpn[15492]: IFCONFIG POOL IPv4: base=10.8.0.4 size=62
Feb 03 13:40:28 vpnserver openvpn[15492]: IFCONFIG POOL LIST
Feb 03 13:40:28 vpnserver openvpn[15492]: MULTI: TCP INIT maxclients=1024 maxevents=1028
Feb 03 13:40:28 vpnserver openvpn[15492]: Initialization Sequence Completed

Bước 12 - Tạo cấu hình máy khách​

Trước khi thử nghiệm máy khách, chúng ta cần tạo các tệp cấu hình cho máy khách mà chúng ta sẽ sử dụng. Tạo một thư mục để lưu trữ các tệp cấu hình máy khách.
Mã:
$ mkdir -p ~/client-configs/files
Sao chép tệp cấu hình máy khách mẫu vào thư mục.
Mã:
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
Mở tệp cấu hình cho chỉnh sửa.
Mã:
$ nano ~/client-configs/base.conf
Tìm lệnh remote và đặt lệnh này để trỏ đến địa chỉ IP công khai của Máy chủ OpenVPN của bạn. Ngoài ra, hãy thay đổi cổng để khớp với cổng bạn đã chọn trước đó.
Mã:
. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 443
. . .
Đặt giao thức bạn đã chọn trước đó.
Mã:
proto tcp
Bỏ chú thích usergroup bằng cách xóa dấu chấm phẩy ở phía trước. Ngoài ra, hãy thay đổi giá trị của chỉ thị group thành nogroup.
Mã:
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
Tìm ca, certkey và chú thích chúng bằng cách đặt dấu chấm phẩy trước chúng. Điều này là do chúng ta sẽ thêm các chứng chỉ và khóa vào tệp cấu hình máy khách.
Mã:
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
;ca ca.crt
;cert client.crt
;key client.key
Bình luận lệnh tls-auth vì chúng ta sẽ thêm ta.key trực tiếp vào tệp cấu hình máy khách.
Mã:
# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1
So khớp cipherauth cài đặt mà bạn thiết lập trong `/etc/openvpn/server/server.conf tệp.
Mã:
cipher AES-256-GCM
auth SHA256
Thêm lệnh key-direction và đặt lệnh này thành 1 để VPN hoạt động chính xác.
Mã:
key-direction 1
Tiếp theo, thêm một vài dòng được chú thích để xử lý các phương pháp khác nhau được các máy khách VPN sử dụng để phân giải DNS. Thêm tập hợp các dòng sau cho các máy khách không sử dụng systemd-resolved nhưng dựa vào tiện ích resolvconf để quản lý DNS.
Mã:
; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf
Thêm tập hợp các dòng sau cho các máy khách sử dụng systemd-resolved cho DNS giải pháp.
Mã:
; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE .
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tạo một tập lệnh để biên dịch cấu hình cơ sở với các tệp chứng chỉ, khóa và mã hóa có liên quan, sau đó sao chép tệp cấu hình đã tạo vào thư mục ~/client-configs/files.

Tạo và mở tệp make_config.sh trong ~/client-configs thư mục.
Mã:
$ nano ~/client-configs/make_config.sh
Dán mã sau vào đó.
Mã:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \  ${OUTPUT_DIR}/${1}.ovpn
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Làm cho tệp có thể thực thi và hạn chế quyền đối với nó.
Mã:
$ chmod 700 ~/client-configs/make_config.sh
Tập lệnh này tạo một bản sao của tệp base.conf, thu thập tất cả các tệp chứng chỉ và khóa, trích xuất nội dung của chúng, thêm chúng vào tệp cấu hình cơ sở và xuất tất cả các tệp đó để tạo tệp cấu hình máy khách mới. Mỗi khi bạn thêm một máy khách mới, bạn cần tạo khóa và chứng chỉ mới cho máy khách đó, sau đó chạy tập lệnh này để tạo tệp cấu hình máy khách.

Chúng tôi đã tạo tệp chứng chỉ và khóa máy khách ở bước 7. Hãy tạo tệp cấu hình cho tệp này.

Chuyển sang thư mục ~/client-configs.
Mã:
$ cd ~/client-configs
Chạy tập lệnh để tạo máy khách tệp cấu hình.
Mã:
$ ./make_config.sh client1
Điều này sẽ tạo ra một tệp có tên client1.ovpn. Thay đổi tham số nếu bạn muốn tên tệp khác. Kiểm tra nội dung thư mục.
Mã:
$ ls ~/client-configs/files
client1.ovpn
Đây là tệp cấu hình bạn cần chuyển đến máy khách, sau đó sẽ được sử dụng để kết nối với máy chủ OpenVPN. Bạn có thể sử dụng bất kỳ giao thức/chương trình SFTP nào để chuyển tệp đến máy khách.

Bước 13 - Cài đặt và kiểm tra kết nối máy khách​

Trong hướng dẫn này, chúng tôi sử dụng máy khách Ubuntu 22.04. Cài đặt OpenVPN thông qua lệnh sau.
Mã:
$ sudo apt install openvpn
Kiểm tra xem hệ thống của bạn có sử dụng systemd-resolved để quản lý các truy vấn DNS hay không bằng cách chạy lệnh sau lệnh.
Mã:
$ cat /etc/resolv.conf
Bạn sẽ nhận được kết quả tương tự.
Mã:
Output
# This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
. . .
nameserver 127.0.0.53
options edns0 trust-ad
search .
Nếu hệ thống đang sử dụng systemd-resolved, thì địa chỉ IP ở trên sẽ là 127.0.0.53. Ngoài ra, bình luận ở đầu tệp sẽ xác nhận điều tương tự. Nếu địa chỉ IP là bất kỳ địa chỉ nào khác ngoài 127.0.0.53, thì hệ thống không sử dụng systemd-resolved và bạn cần làm theo các bước được đề cập sau.

Đối với Khách hàng có systemd-resolved

Cài đặt gói openvpn-systemd-resolved cung cấp các tập lệnh buộc systemd-resolved để sử dụng máy chủ VPN cho DNS.
Mã:
$ sudo apt install openvpn-systemd-resolved
Mở tệp cấu hình Máy khách cho đang chỉnh sửa.
Mã:
$ nano client1.ovpn
Bỏ chú thích các dòng sau trong tệp bằng cách xóa dấu chấm phẩy trước chúng.
Mã:
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Đối với Khách hàng có update-resolv-conf

Trước tiên, hãy xác nhận rằng bản phân phối của bạn đang sử dụng update-resolv-conf.
Mã:
$ ls /etc/openvpn
client server update-resolv-conf
Nếu hệ thống của bạn chứa update-resolv-conf tệp, sau đó mở tệp cấu hình Máy khách để chỉnh sửa.
Mã:
$ nano client1.ovpn
Bỏ chú thích các dòng sau trong tệp bằng cách xóa dấu chấm phẩy ở phía trước chúng.
Mã:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Nếu bạn đang sử dụng bản phân phối dựa trên CentOS, hãy thay đổi chỉ thị group từ nogroup đến nobody.
Mã:
group nobody
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Kết nối máy khách​

Chạy lệnh sau để kết nối máy khách với VPN máy chủ.
Mã:
$ sudo openvpn --config client1.ovpn
Bạn sẽ nhận được kết quả tương tự.
Mã:
2023-02-06 15:18:37 OpenVPN 2.5.5 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul 14 2022
2023-02-06 15:18:37 library versions: OpenSSL 3.0.2 15 Mar 2022, LZO 2.10
2023-02-06 15:18:37 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
2023-02-06 15:18:37 Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2023-02-06 15:18:37 Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2023-02-06 15:18:37 Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2023-02-06 15:18:37 Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2023-02-06 15:18:37 TCP/UDP: Preserving recently used remote address: [AF_INET]64.225.66.226:443
2023-02-06 15:18:37 Socket Buffers: R=[131072->131072] S=[16384->16384]
2023-02-06 15:18:37 Attempting to establish TCP connection with [AF_INET]64.225.66.226:443 [nonblock]
2023-02-06 15:18:38 TCP connection established with [AF_INET]64.225.66.226:443
2023-02-06 15:18:38 TCP_CLIENT link local: (not bound)
2023-02-06 15:18:38 TCP_CLIENT link remote: [AF_INET]64.225.66.226:443
2023-02-06 15:18:38 NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay
2023-02-06 15:18:38 TLS: Initial packet from [AF_INET]64.225.66.226:443, sid=b6459c4e 0e23d362
2023-02-06 15:18:38 VERIFY OK: depth=1, CN=Easy-RSA CA
2023-02-06 15:18:38 VERIFY KU OK
2023-02-06 15:18:38 Validating certificate extended key usage
2023-02-06 15:18:38 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
2023-02-06 15:18:38 VERIFY EKU OK
2023-02-06 15:18:38 VERIFY OK: depth=0, CN=server
2023-02-06 15:18:38 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 2048 bit RSA, signature: RSA-SHA256
2023-02-06 15:18:38 [server] Peer Connection Initiated with [AF_INET]64.225.66.226:443
2023-02-06 15:18:39 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
2023-02-06 15:18:39 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM'
2023-02-06 15:18:39 OPTIONS IMPORT: timers and/or timeouts modified
2023-02-06 15:18:39 OPTIONS IMPORT: --ifconfig/up options modified
2023-02-06 15:18:39 OPTIONS IMPORT: route options modified
2023-02-06 15:18:39 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
2023-02-06 15:18:39 OPTIONS IMPORT: peer-id set
2023-02-06 15:18:39 OPTIONS IMPORT: adjusting link_mtu to 1626
2023-02-06 15:18:39 OPTIONS IMPORT: data channel crypto options modified
2023-02-06 15:18:39 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2023-02-06 15:18:39 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2023-02-06 15:18:39 net_route_v4_best_gw query: dst 0.0.0.0
2023-02-06 15:18:39 net_route_v4_best_gw result: via 10.0.2.2 dev enp0s3
2023-02-06 15:18:39 ROUTE_GATEWAY 10.0.2.2/255.255.255.0 IFACE=enp0s3 HWADDR=08:00:27:84:e2:0b
2023-02-06 15:18:39 TUN/TAP device tun0 opened
2023-02-06 15:18:39 net_iface_mtu_set: mtu 1500 for tun0
2023-02-06 15:18:39 net_iface_up: set tun0 up
2023-02-06 15:18:39 net_addr_ptp_v4_add: 10.8.0.6 peer 10.8.0.5 dev tun0
2023-02-06 15:18:39 /etc/openvpn/update-systemd-resolved tun0 1500 1626 10.8.0.6 10.8.0.5 init
Feb 6 15:18:39 update-systemd-resolved: Link 'tun0' coming up
Feb 6 15:18:39 update-systemd-resolved: Adding DNS Routed Domain .
Feb 6 15:18:39 update-systemd-resolved: Adding IPv4 DNS Server 208.67.222.222
Feb 6 15:18:39 update-systemd-resolved: Adding IPv4 DNS Server 208.67.220.220
Feb 6 15:18:39 update-systemd-resolved: SetLinkDNS(5 2 2 4 208 67 222 222 2 4 208 67 220 220)
Feb 6 15:18:39 update-systemd-resolved: SetLinkDomains(5 1 . true)
2023-02-06 15:18:39 net_route_v4_add: 64.225.66.226/32 via 10.0.2.2 dev [NULL] table 0 metric -1
2023-02-06 15:18:39 net_route_v4_add: 0.0.0.0/1 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-02-06 15:18:39 net_route_v4_add: 128.0.0.0/1 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-02-06 15:18:39 net_route_v4_add: 10.8.0.1/32 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-02-06 15:18:39 GID set to nogroup
2023-02-06 15:18:39 UID set to nobody
2023-02-06 15:18:39 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
2023-02-06 15:18:39 Initialization Sequence Completed
Mở một terminal khác để kiểm tra cài đặt DNS.
Mã:
$ systemd-resolve --status tun0
Bạn sẽ nhận được kết quả sau, trong đó bạn có thể thấy các máy chủ DNS mà chúng tôi đã cấu hình trước đó. Điều này đảm bảo rằng VPN đang hoạt động chính xác.
Mã:
Link 4 (tun0) Current Scopes: DNS Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 208.67.222.222 DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.
Bạn có thể xác minh thêm kết nối bằng cách truy cập URL https://whatismyip.com trong trình duyệt của bạn và bạn sẽ thấy địa chỉ IP và vị trí máy chủ OpenVPN của mình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22468%22%20height=%22172%22%3E%3C/svg%3E


Bạn cũng có thể xác minh thêm bằng cách thực hiện một bài kiểm tra tiêu chuẩn trên trang web https://www.dnsleaktest.com/.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22398%22%3E%3C/svg%3E


Bạn có thể thấy tên máy chủ OpenDNS mà chúng tôi đã cấu hình trước đó và vị trí của máy chủ khớp với vị trí của máy chủ OpenVPN.

Lệnh trên chạy OpenVPN ở chế độ nền trước, nghĩa là thiết bị đầu cuối sẽ bị chặn. Để đóng kết nối, bạn cần nhấn Ctrl + C. Tuy nhiên, bạn cũng có thể chạy OpenVPN ở chế độ nền. Sử dụng lệnh sau để thực hiện điều đó.
Mã:
sudo openvpn --config client1.ovpn --daemon
Để tắt kết nối, hãy tìm ID tiến trình của tiến trình đó.
Mã:
$ ps aux | grep openvpn
Bạn sẽ nhận được thông báo tương tự đầu ra.
Mã:
nobody 4357 0.3 0.0 13468 8432 ? Ss 15:35 0:00 openvpn --config client1.ovpn --daemon
username 4406 0.0 0.0 17732 2432 pts/0 S+ 15:35 0:00 grep --color=auto openvpn
Như bạn có thể thấy, ID tiến trình tương ứng với tiến trình OpenVPN là 4357. Tắt kết nối VPN bằng lệnh sau để tắt tiến trình.
Mã:
$ sudo kill -9 4357
OpenVPN cung cấp các ứng dụng khách GUI cho Windows, macOS, Androidnền tảng iOS nơi bạn có thể nhập tệp cấu hình máy khách để kết nối.

Bước 14 - Thu hồi chứng chỉ máy khách​

Nếu bạn muốn thu hồi chứng chỉ của máy khách để ngăn chặn quyền truy cập, bạn có thể thực hiện bằng cách đăng nhập vào máy chủ CA.

Chuyển sang ~/easy-rsa thư mục.
Mã:
$ cd ~/easy-rsa
Chạy tập lệnh với tùy chọn revoke theo sau là máy khách name.
Mã:
$ ./easyrsa revoke client1
Bạn sẽ được nhắc nếu bạn muốn thu hồi chứng chỉ.
Mã:
Please confirm you wish to revoke the certificate with the following subject:
subject= commonName = client1
Type the word 'yes' to continue, or any other input to abort. Continue with revocation: yes
. . .
Revoking Certificate 8348B3F146A765581946040D5C4D590A
. . .
Điều này sẽ thu hồi chứng chỉ trên máy chủ CA. Tuy nhiên, máy chủ OpenVPN không có cách nào để kiểm tra trạng thái thu hồi. Để thực hiện được điều đó, chúng ta cần tạo Danh sách thu hồi chứng chỉ (CRL) và chuyển nó đến máy chủ OpenVPN.

Tạo CRL.
Mã:
$ ./easyrsa gen-crl
Bạn sẽ được nhắc nhập mật khẩu CA. Lệnh trên tạo ra một tệp crl.pem.

Sao chép tệp này vào máy chủ OpenVPN.
Mã:
$ scp ~/easy-rsa/pki/crl.pem username@your_server_ip:/tmp
Đăng nhập lại vào máy chủ OpenVPN và sao chép tệp CRL vào /etc/openvpn/server thư mục.
Mã:
$ sudo cp /tmp/crl.pem /etc/openvpn/server/
Mở tệp cấu hình máy chủ OpenVPN cho chỉnh sửa.
Mã:
$ sudo nano /etc/openvpn/server/server.conf
Thêm dòng sau vào cuối tệp. Thao tác này hướng dẫn máy chủ OpenVPN kiểm tra danh sách thu hồi đối với các máy khách đã bị hạn chế.
Mã:
crl-verify crl.pem
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại máy chủ OpenVPN để áp dụng thay đổi.
Mã:
sudo systemctl restart [emailprotected]
Máy khách không thể kết nối với máy chủ OpenVPN nữa.

Kết luận​

Như vậy là kết thúc hướng dẫn của chúng tôi về cách cài đặt và cấu hình máy chủ OpenVPN trên máy chủ Ubuntu 22.04. Chúng tôi cũng đã kết nối máy khách OpenVPN Linux với máy chủ. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên