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.
Tạo liên kết tượng trưng trỏ đến gói
Hạn chế quyền truy cập vào thư mục PKI.
Khởi tạo PKI.
Bạn sẽ nhận được kết quả sau.
Dán mã sau vào đó.
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.
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.
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ế.
Điều này sẽ tạo ra hai tệp:
Tạo thư mục
Tạo liên kết tượng trưng từ
Hạn chế quyền truy cập vào thư mục.
Dán các dòng sau vào it.
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
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 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
Bạn sẽ nhận được kết quả đầu ra sau.
Đ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à
Yêu cầu ký chứng chỉ (CSR) hiện đã sẵn sàng để CA ký.
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
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
Bạn sẽ nhận được thông báo sau đầu ra.
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ó.
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
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 đó.
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.
Trên máy chủ OpenVPN của bạn, sao chép các tệp vào
Chuyển sang thư mục
Tạo
Sao chép
Hạn chế quyền đối với thư mục để bảo vệ nó.
Tiếp theo, chuyển sang
Tạo khóa máy khách với
Nhấn
Tiếp theo, sao chép tệp
Chuyển
Đăng nhập lại vào máy chủ CA và nhập máy chủ yêu cầu.
Bạn sẽ nhận được kết quả sau.
Ký yêu cầu bằng lệnh sau. Chúng tôi đang sử dụng
Khi được nhắc, hãy nhập
Bạn sẽ được nhắc nhập CA mật khẩu.
Chuyển chứng chỉ đã tạo trở lại máy chủ OpenVPN.
Trên máy chủ OpenVPN, sao chép chứng chỉ máy khách vào
Sao chép
Mở tệp để chỉnh sửa.
Tìm phần
vào đầu dòng. Thêm một dòng mới bên dưới như minh họa.
Tiếp theo, thay đổi giá trị mã hóa bằng cách tìm kiếm các dòng
Ngay bên dưới, thêm Chỉ thị
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
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
Ubuntu có
Tìm phần
Tìm dòng
Tìm
Vì chúng ta đang sử dụng giao thức TCP, chúng ta cần thay đổi giá trị của
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.
Mở tệp
Thêm dòng sau vào cuối tệp.
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.
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ả.
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.
Bạn sẽ nhận được thông báo tương tự đầu ra.
Điều này cho chúng ta biết rằng tên giao diện là
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.
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
Tìm chỉ thị
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ủ.
Vô hiệu hóa và kích hoạt tường lửa để áp dụng cấu hình mới.
Khởi động dịch vụ OpenVPN.
Kiểm tra trạng thái của dịch vụ.
Bạn sẽ nhận được kết quả tương tự.
Sao chép tệp cấu hình máy khách mẫu vào thư mục.
Mở tệp cấu hình cho chỉnh sửa.
Tìm lệnh
Đặt giao thức bạn đã chọn trước đó.
Bỏ chú thích
Tìm
Bình luận lệnh
So khớp
Thêm lệnh
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
Thêm tập hợp các dòng sau cho các máy khách sử dụng
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
Tạo và mở tệp
Dán mã sau vào đó.
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ó.
Tập lệnh này tạo một bản sao của tệp
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
Chạy tập lệnh để tạo máy khách tệp cấu hình.
Điều này sẽ tạo ra một tệp có tên
Đâ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.
Kiểm tra xem hệ thống của bạn có sử dụng
Bạn sẽ nhận được kết quả tương tự.
Nếu hệ thống đang sử dụng
Đối với Khách hàng có
Cài đặt gói
Mở tệp cấu hình Máy khách cho đang chỉnh sửa.
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.
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ó
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
Nếu hệ thống của bạn chứa
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.
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ị
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Bạn sẽ nhận được kết quả tương tự.
Mở một terminal khác để kiểm tra cài đặt DNS.
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.
Bạn có thể xác minh thêm kết nối bằng cách truy cập URL
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
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 đó.
Để tắt kết nối, hãy tìm ID tiến trình của tiến trình đó.
Bạn sẽ nhận được thông báo tương tự đầu ra.
Như bạn có thể thấy, ID tiến trình tương ứng với tiến trình OpenVPN là
OpenVPN cung cấp các ứng dụng khách GUI cho Windows, macOS, Android và nề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.
Chuyển sang
Chạy tập lệnh với tùy chọn
Bạn sẽ được nhắc nếu bạn muốn thu hồi chứng chỉ.
Đ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.
Bạn sẽ được nhắc nhập mật khẩu CA. Lệnh trên tạo ra một tệp
Sao chép tệp này vào máy chủ OpenVPN.
Đăng nhập lại vào máy chủ OpenVPN và sao chép tệp CRL vào
Mở tệp cấu hình máy chủ OpenVPN cho chỉnh sửa.
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ế.
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áy khách không thể kết nối với máy chủ OpenVPN nữa.
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ệnheasy-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
easy-rsa
đã cài đặt tệp.
Mã:
$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Mã:
$ chmod 700 /home//easy-rsa
Mã:
$ cd ~/easy-rsa
$ ./easyrsa init-pki
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ệpvars
để 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
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"
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
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
Mã:
$ ./easyrsa build-ca nopass
-
~/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ệpca.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ệpca.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
~/easy-rsa
.
Mã:
$ mkdir ~/easy-rsa
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/
Mã:
$ chmod 700 ~/easy-rsa
Bước 3 - Tạo PKI cho Máy chủ OpenVPN
Tạo tệpvars
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
Mã:
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
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
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
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
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
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/
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
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
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.
Mã:
$ ./easyrsa sign-req server server
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
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
Mã:
$ scp pki/issued/server.crt username@your_vpn_server_ip:/tmp
$ scp pki/ca.crt username@your_vpn_server_ip:/tmp
/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
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
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
Mã:
$ chmod -R 700 ~/client-configs
~/easy-rsa
thư mục.
Mã:
$ cd ~/easy-rsa
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
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
client1.key
vào ~/client-configs/keys
thư mục.
Mã:
$ cp pki/private/client1.key ~/client-configs/keys/
client1.req
tệp vào máy chủ CA.
Mã:
$ scp pki/reqs/client1.req username@your_ca_server_ip:/tmp
Mã:
$ cd ~/easy-rsa
$ ./easyrsa import-req /tmp/client1.req client1
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.
client
làm loại yêu cầu.
Mã:
$ ./easyrsa sign-req client client1
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
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
Mã:
$ scp pki/issued/client1.crt username@your_server_ip:/tmp
~/client-configs/keys
thư mục.
Mã:
$ cp /tmp/client1.crt ~/client-configs/keys/
ca.crt
và ta.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ẫuserver.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ã:
$ sudo nano /etc/openvpn/server/server.conf
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 (
Mã:
;tls-auth ta.key 0 # This file is secret
tls-crypt ta.key
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
auth
để chọn thuật toán tóm tắt thông điệp HMAC.
Mã:
auth SHA256
dh dh2048.pem
và thêm dh none
bên dưới nó.
Mã:
;dh dh2048.pem
dh none
user nobody
và group nobody
và thay đổi chúng thành đã hiển thị.
Mã:
user nobody
group nogroup
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òngpush "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"
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
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
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 cert
và key
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
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
Mã:
net.ipv4.ip_forward = 1
Để đọ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
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
Mã:
default via 64.225.64.1 dev eth0 proto static
eth0
. Mở tệp /etc/ufw/before.rules
để chỉnh sửa.
Mã:
$ sudo nano /etc/ufw/before.rules
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
. . .
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
DEFAULT_FORWARD_POLICY
và thay đổi giá trị của nó từ DROP
thành ACCEPT
.
Mã:
DEFAULT_FORWARD_POLICY="ACCEPT"
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
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]
Mã:
$ sudo systemctl start [emailprotected]
Mã:
$ sudo systemctl status [emailprotected]
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
Mã:
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
Mã:
$ nano ~/client-configs/base.conf
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
. . .
Mã:
proto tcp
user
và group
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
ca
, cert
và key
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
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
cipher
và auth
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
key-direction
và đặt lệnh này thành 1
để VPN hoạt động chính xác.
Mã:
key-direction 1
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
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 .
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
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à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
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
Mã:
$ ./make_config.sh client1
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
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
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
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 .
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ã:
$ nano client1.ovpn
Mã:
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .
Đố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
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
Mã:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
group
từ nogroup
đến nobody
.
Mã:
group nobody
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
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ã:
$ systemd-resolve --status tun0
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: ~.
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
Mã:
$ ps aux | grep openvpn
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
4357
. Tắt kết nối VPN bằng lệnh sau để tắt tiến trình.
Mã:
$ sudo kill -9 4357
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
revoke
theo sau là máy khách name.
Mã:
$ ./easyrsa revoke client1
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
. . .
Tạo CRL.
Mã:
$ ./easyrsa gen-crl
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
/etc/openvpn/server
thư mục.
Mã:
$ sudo cp /tmp/crl.pem /etc/openvpn/server/
Mã:
$ sudo nano /etc/openvpn/server/server.conf
Mã:
crl-verify crl.pem
Khởi động lại máy chủ OpenVPN để áp dụng thay đổi.
Mã:
sudo systemctl restart [emailprotected]