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, giúp bạn có thể tự do truy cập internet an toàn trên các mạng không đáng tin cậy và tránh được các hạn chế về mặt địa lý cũng như 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 này, chúng ta sẽ cài đặt OpenVPN trên máy chủ Debian 12 và định cấu hình để có thể truy cập từ máy khách, đồng thời tạo kết nối VPN giữa chúng để chuyển hướng toàn bộ 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.
Tìm các biến sau và bỏ chú thích bằng cách xóa dấu thăng (#) ở phía trước và chỉnh sửa như hình minh họa bên dưới.
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 mật khẩu cho cặp khóa của mình. Chọn một mật khẩu mạnh và ghi chú lại để dùng sau. Tiếp theo, bạn sẽ được yêu cầu nhập mật khẩu PEM. 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.
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 cấp chứng chỉ và chứng chỉ công khai.
Mở thư mục
Tìm các biến sau và bỏ chú thích bằng cách xóa dấu thăng (#) trước chúng và thay đổi giá trị của chúng như bên dưới.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Vì chúng ta không sử dụng máy chủ là CA, đây là những giá trị duy nhất chúng ta 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ính toán nhanh hơn.
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 nó, 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 khóa Diffie-Hellman mạnh để sử dụng trong quá trình trao đổi khóa bằng cách sử dụng lệnh sau lệnh.
Tạo khóa chia sẻ trước
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ả đầu ra 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 mật khẩu CA.
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
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 của bạn Đị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
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ủ.
Tắt và bật tường lửa để áp dụng cấu hình mới.
Kiểm tra trạng thái của dịch vụ.
Bạn sẽ nhận được kết quả tương tự.
Cho phép dịch vụ OpenVPN khởi động khi khởi động.
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
Thiết lập giao thức bạn đã chọn trước đó bằng cách bỏ chú thích và chú thích ra
Bỏ chú thích
Tìm
Bình luận lệnh
So khớp
Thêm
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 mà 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 nó.
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 tệp đó.
Tập lệnh này tạo một bản sao của
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
Chạy tập lệnh để tạo tệp cấu hình máy khách.
Điều này sẽ tạo 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 để truyền tệp đến máy khách.
Kiểm tra xem hệ thống của bạn có đang sử dụng
Bạn sẽ nhận được kết quả tương tự.
Nếu hệ thống đang sử dụng
Nhưng trước tiên, hãy tải xuố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 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 ở phía 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 máy khách có
Đây là bước bạn cần thực hiện nếu bạn có hệ thống Debian. 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 tệp
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
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ự.
Bạn có thể xác minh 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=%22479%22%20height=%22284%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
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E
Bạn có thể thấy địa chỉ IP của Google vì địa chỉ IP mà chúng tôi lấy được từ
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 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ỉ.
Nếu khóa riêng CA của bạn được bảo vệ bằng cụm mật khẩu, hãy nhập cụm mật khẩu đó khi được nhắc.
Đ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 OpenVPN máy chủ.
Đă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 để 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 các 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 này, chúng ta sẽ cài đặt OpenVPN trên máy chủ Debian 12 và định cấu hình để có thể truy cập từ máy khách, đồng thời tạo kết nối VPN giữa chúng để chuyển hướng toàn bộ 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 Debian 12 hỗ trợ cả kết nối IPv4 và IPv6. Chúng ta 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ủ này.
-
Một máy chủ chạy Debian 12 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 Debian 12 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ỉ kỹ thuật 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 một cơ sở hạ tầng khóa công khai (PKI) trên máy chủ CA.
Mã:
$ mkdir ~/easy-rsa
easy-rsa
đã cài đặt tập tin.
Mã:
$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Mã:
$ chmod 700 /home//easy-rsa
Mã:
$ cd ~/easy-rsa
$ ./easyrsa init-pki
Mã:
* Notice: init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: * /home//easy-rsa/pki
* Notice: IMPORTANT: Easy-RSA 'vars' file has now been moved to your PKI above.
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ệp cấu hìnhvars
đã được tạo trong thư mục pki
. Mở nó để chỉnh sửa.
Mã:
$ cd ~/easy-rsa
$ nano pki/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ã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
Using configuration from /home//easy-rsa/pki/ab18123c/temp.918764ef
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
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]:
* Notice:
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/private/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
Bước tiếp theo là tạo thư mục PKI bằng cách sử dụng tùy chọninit-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ã:
$ cd ~/easy-rsa
$ ./easyrsa init-pki
Mở thư mục
~/easy-rsa/pki/vars
để lưu trữ thông tin cần thiết để tạo PKI và mở nó để chỉnh sửa.
Mã:
$ nano pki/vars
Mã:
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Vì chúng ta không sử dụng máy chủ là CA, đây là những giá trị duy nhất chúng ta 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ính toán nhanh hơn.
Bước 4 - Tạo Yêu cầu chứng chỉ máy chủ OpenVPN và Khóa riêng
Chuyển sang thư mục~/easy-rsa
trên OpenVPN máy chủ.
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ã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
-----
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]:
* Notice:
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ý máy chủ OpenVPN CSR
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 nó, 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ã:
* Notice:
Using Easy-RSA configuration from: /home/navjot/easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
* Notice:
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ã:
* Notice:
Using Easy-RSA configuration from: /home/navjot/easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
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/de50cb3f/temp.93caaa8c
Enter pass phrase for /home//easy-rsa/pki/private/ca.key:
00F7EDB7: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 Nov 10 07:48:56 2025 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
* Notice:
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 OpenVPN Cryptographic Material
Chúng tôi sẽ thêm một khóa bí mật chia sẻ bổ sung mà máy chủ và tất cả cá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 mạng OpenVPN trở nên khó khăn hơn.Chuyển sang thư mục
~/easy-rsa
.
Mã:
$ cd ~/easy-rsa
Mã:
$ ./easyrsa gen-dh
tls-crypt
. Thao tác này sẽ tạo một tệp có tên là ta.key
Mã:
$ sudo openvpn --genkey secret ta.key
ta.key
đến /etc/openvpn/server
thư mục.
Mã:
$ sudo cp ta.key /etc/openvpn/server
$ sudo cp pki/dh.pem /etc/openvpn/server
Bước 7 - Tạo Chứng chỉ máy khách và Cặp khóa
Tạo một thư mục trên máy chủ VPN của bạn để 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ã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
-----
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]:
* Notice:
Keypair and certificate request completed. Your files are:
req: /home//easy-rsa/pki/reqs/client1.req
key: /home//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ã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
* Notice:
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ã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
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/7bf6e9b1/temp.c01d673d
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 Nov 10 08:25:10 2025 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
* Notice:
Certificate created at: /home//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ã:
$ sudo 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 openvpn
và ;group openvpn
và thay đổi chúng thành đã hiển thị.
Mã:
user nobody
group nogroup
Chuyển hướng tất cả lưu lượng 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 lệnh./easy-rsa gen-req server
trước đó, bạn cần sửa đổi cert
và key
các dòng sao cho chúng trỏ đến các dòng .crt
và .key
thích hợp tệp. Vì chúng tôi đang sử dụng tên mặc định server
, 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 của máy chủ để cho phép OpenVPN định tuyến lưu lượng truy cập một cách 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
vm.swappiness = 0
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 vụ chuyển đổi đị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 69.28.90.1 dev ens3 onlink
ens3
. 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 ens3 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o ens3 -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
chỉ thị 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
Khởi động OpenVPN dịch vụ.
Mã:
$ sudo systemctl start [emailprotected]
Mã:
$ sudo systemctl status [emailprotected]
Mã:
? [emailprotected] - OpenVPN service for server Loaded: loaded (/lib/systemd/system/[emailprotected]; disabled; preset: enabled) Active: active (running) since Tue 2023-08-08 09:22:49 UTC; 7s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 4531 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 2315) Memory: 1.4M CPU: 27ms CGroup: /system.slice/system-openvpn\x2dserver.slice/[emailprotected] ??4531 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf
Aug 08 09:22:49 vpnserver openvpn[4531]: TCPv4_SERVER link local (bound): [AF_INET][undef]:443
Aug 08 09:22:49 vpnserver openvpn[4531]: TCPv4_SERVER link remote: [AF_UNSPEC]
Aug 08 09:22:49 vpnserver openvpn[4531]: UID set to nobody
Aug 08 09:22:49 vpnserver openvpn[4531]: GID set to nogroup
Aug 08 09:22:49 vpnserver openvpn[4531]: Capabilities retained: CAP_NET_ADMIN
Aug 08 09:22:49 vpnserver openvpn[4531]: MULTI: multi_init called, r=256 v=256
Aug 08 09:22:49 vpnserver openvpn[4531]: IFCONFIG POOL IPv4: base=10.8.0.4 size=62
Aug 08 09:22:49 vpnserver openvpn[4531]: IFCONFIG POOL LIST
Aug 08 09:22:49 vpnserver openvpn[4531]: MULTI: TCP INIT maxclients=1024 maxevents=1029
Aug 08 09:22:49 vpnserver openvpn[4531]: Initialization Sequence Completed
Mã:
$ sudo systemctl -f enable [emailprotected]
Bước 12 - Tạo cấu hình máy khách
Trước khi kiểm tra 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
. . .
proto udp
thiết lập.
Mã:
proto tcp
user
và group
chỉ thị bằng cách xóa dấu chấm phẩy ở phía trước chúng. Ngoài ra, hãy thay đổi các giá trị như sau.
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
thiết lập mà bạn đặt trong tệp `/etc/openvpn/server/server.conf
. Ngoài ra, hãy thêm cài đặt auth
ở cuối tệp.
Mã:
cipher AES-256-GCM
....
auth SHA256
key-direction
chỉ thị và đặt nó 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 độ phân giải.
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=/home//client-configs/keys
OUTPUT_DIR=/home//client-configs/files
BASE_CONFIG=/home//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 tệp đó.
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
~/client-configs
thư mục.
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 Debian 12. 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ã:
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4
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 không phải là 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.Nhưng trước tiên, hãy tải xuống
client1.ovpn
tệp từ máy chủ bằng lệnh sau.
Mã:
$ scp username@your_server_ip:/home//client-configs/files/client1.ovpn
Đố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 máy khách có update-resolv-conf
Đây là bước bạn cần thực hiện nếu bạn có hệ thống Debian. 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
, hãy 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
chỉ thị 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-08-08 16:23:29 Note: Kernel support for ovpn-dco missing, disabling data channel offload.
2023-08-08 16:23:29 OpenVPN 2.6.3 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] [DCO]
2023-08-08 16:23:29 library versions: OpenSSL 3.0.9 30 May 2023, LZO 2.10
2023-08-08 16:23:29 DCO version: N/A
2023-08-08 16:23:29 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
2023-08-08 16:23:29 TCP/UDP: Preserving recently used remote address: [AF_INET]69.28.91.204:443
2023-08-08 16:23:29 Socket Buffers: R=[131072->131072] S=[16384->16384]
2023-08-08 16:23:29 Attempting to establish TCP connection with [AF_INET]69.28.91.204:443
2023-08-08 16:23:29 TCP connection established with [AF_INET]69.28.91.204:443
2023-08-08 16:23:29 TCPv4_CLIENT link local: (not bound)
2023-08-08 16:23:29 TCPv4_CLIENT link remote: [AF_INET]69.28.91.204:443
2023-08-08 16:23:29 NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay
2023-08-08 16:23:29 TLS: Initial packet from [AF_INET]69.28.91.204:443, sid=6bd67e12 50ebf8bc
2023-08-08 16:23:30 VERIFY OK: depth=1, CN=Easy-RSA CA
2023-08-08 16:23:30 VERIFY KU OK
2023-08-08 16:23:30 Validating certificate extended key usage
2023-08-08 16:23:30 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
2023-08-08 16:23:30 VERIFY EKU OK
2023-08-08 16:23:30 VERIFY OK: depth=0, CN=server
2023-08-08 16:23:30 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 384 bit ECsecp384r1, signature: ecdsa-with-SHA512
2023-08-08 16:23:30 [server] Peer Connection Initiated with [AF_INET]69.28.91.204:443
2023-08-08 16:23:30 TLS: move_session: dest=TM_ACTIVE src=TM_INITIAL reinit_src=1
2023-08-08 16:23:30 TLS: tls_multi_process: initial untrusted session promoted to trusted
2023-08-08 16:23:31 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
2023-08-08 16:23:31 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,protocol-flags cc-exit tls-ekm dyn-tls-crypt,tun-mtu 1500'
2023-08-08 16:23:31 OPTIONS IMPORT: --ifconfig/up options modified
2023-08-08 16:23:31 OPTIONS IMPORT: route options modified
2023-08-08 16:23:31 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
2023-08-08 16:23:31 OPTIONS IMPORT: tun-mtu set to 1500
2023-08-08 16:23:31 net_route_v4_best_gw query: dst 0.0.0.0
2023-08-08 16:23:31 net_route_v4_best_gw result: via 10.0.2.2 dev enp0s3
2023-08-08 16:23:31 ROUTE_GATEWAY 10.0.2.2/255.255.255.0 IFACE=enp0s3 HWADDR=08:00:27:b7:cc:29
2023-08-08 16:23:31 TUN/TAP device tun0 opened
2023-08-08 16:23:31 net_iface_mtu_set: mtu 1500 for tun0
2023-08-08 16:23:31 net_iface_up: set tun0 up
2023-08-08 16:23:31 net_addr_ptp_v4_add: 10.8.0.6 peer 10.8.0.5 dev tun0
2023-08-08 16:23:31 /etc/openvpn/update-resolv-conf tun0 1500 0 10.8.0.6 10.8.0.5 init
2023-08-08 16:23:31 net_route_v4_add: 69.28.91.204/32 via 10.0.2.2 dev [NULL] table 0 metric -1
2023-08-08 16:23:31 net_route_v4_add: 0.0.0.0/1 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-08-08 16:23:31 net_route_v4_add: 128.0.0.0/1 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-08-08 16:23:31 net_route_v4_add: 10.8.0.1/32 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-08-08 16:23:31 UID set to nobody
2023-08-08 16:23:31 GID set to nogroup
2023-08-08 16:23:31 Capabilities retained: CAP_NET_ADMIN
2023-08-08 16:23:31 Initialization Sequence Completed
2023-08-08 16:23:31 Data Channel: cipher 'AES-256-GCM', peer-id: 0
2023-08-08 16:23:31 Timers: ping 10, ping-restart 120
2023-08-08 16:23:31 Protocol options: protocol-flags cc-exit tls-ekm dyn-tls-crypt
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=%22479%22%20height=%22284%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
https://www.dnsleaktest.com/
trang web.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E
Bạn có thể thấy địa chỉ IP của Google vì địa chỉ IP mà chúng tôi lấy được từ
resolv.conf
trên máy khách và vị trí của chúng nằm ở Hoa Kỳ, khớp với vị trí của máy chủ OpenVPN mà chúng tôi đã sử dụng.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 để kết thúc 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 tên.
Mã:
$ ./easyrsa revoke client1
Mã:
* Notice:
Using Easy-RSA configuration from: /home/navjot/easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023) Please confirm you wish to revoke the certificate with the following subject: subject= commonName = client1 serial-number: A38D324EC106628F53D1ADFCF8F2D706
Type the word 'yes' to continue, or any other input to abort. Continue with revocation: yes
Mã:
Using configuration from /home//easy-rsa/pki/a02dc925/temp.0b5d5ab5
Enter pass phrase for /home//easy-rsa/pki/private/ca.key:
Revoking Certificate A38D324EC106628F53D1ADFCF8F2D706.
Data Base Updated
* Notice:
IMPORTANT!!!
Revocation was successful. You must run gen-crl and upload a CRL to your
infrastructure in order to prevent the revoked cert from being accepted.
Tạo CRL.
Mã:
$ ./easyrsa gen-crl
crl.pem
.
Mã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
Using configuration from /home//easy-rsa/pki/bce6b789/temp.522aebf7
Enter pass phrase for /home//easy-rsa/pki/private/ca.key:
* Notice:
An updated CRL has been created.
CRL file: /home//easy-rsa/pki/crl.pem
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 các thay đổi.
Mã:
sudo systemctl restart [emailprotected]