Hướng dẫn thiết lập máy chủ OpenVPN trên Debian 10

Bạn muốn truy cập Internet một cách an toàn và bảo mật từ điện thoại thông minh hoặc máy tính xách tay của mình khi được kết nối với một số mạng mà bạn cho rằng nó không đáng tin cậy, như WiFi của khách sạn hoặc quán cà phê, mạng công cộng được cung cấp từ các dịch vụ miễn phí,...?

Hướng dẫn thiết lập máy chủ OpenVPN trên Debian 10

Một mạng riêng ảo (VPN) cho phép bạn thực hiện một số công việc của mình một cách hoàn toàn bảo mật và bạn có thể bỏ sự nghi ngờ của những kết nối mạng không tin cậy đó, nó hoàn toàn bảo mật và giúp bạn làm việc như thể bạn đang sở hữu một mạng riêng biệt. Lưu lượng xuất phát từ máy chủ VPN.
Khi được kết hợp với kết nối HTTPS, thiết lập này cho phép bạn bảo mật các thông tin đăng nhập và giao dịch của mình. Bạn có thể vượt qua các hạn chế và kiểm duyệt về địa lý, đồng thời che giấu vị trí của bạn cũng như bất kỳ lưu lượng truy cập nào bằng HTTP không được mã hóa trong liên kết mạng mà bạn cho rằng nó không đáng tin cậy.

OpenVPN là một giải pháp bảo mật (SSL) mã nguồn mở với lớp cổng VPN. Nó có đầy đủ tính năng, có thể đáp ứng nhiều loại cấu hình để phục vụ cho nhu cầu của bạn. Trong bài hướng dẫn này, chúng tôi sẽ giúp bạn thiết lập máy chủ OpenVPN trên máy chủ Debian 10 và sau đó  sẽ cấu hình, cấp quyền truy cập vào máy chủ đó của bạn từ các thiết bị sử dụng hệ điều hành khác như: Windows, macOS, iOS,  Android.... Hướng dẫn này của chúng tôi cũng sẽ đảm bảo giảm thiểu tối giản nhất về các bước cài đặt và cấu hình cho từng thiết lập để chúng ta làm quen và thực hiện nó một cách đơn giản nhất có thể.

Lưu ý: Nếu bạn định thiết lập máy chủ OpenVPN trên các dịch vụ máy chủ của những nhà cung cấp dịch vụ lưu trữ, họ sẽ tính phí băng thông trung bình cho hoạt động máy chủ của bạn. Vì lý do này, vui lòng lưu ý đến lượng lưu lượng truy cập mà máy chủ của bạn đang xử lý để giảm thiếu thiệt hại không đáng có về chi phí. Chúng tôi luôn muốn các bạn có thể tự thiết lập máy chủ của riêng mình, nó giúp các bạn có được nhiều trải nghiệm cũng như việc thanh toán phí dịch vụ cho những nhà cung cấp về lâu dài nó không tốt hơn việc bạn sở hữu một hệ thống máy chủ Mini mà chúng tôi đã hướng dẫn cài đặt, cấu hình,... Bạn có thể xem nó ở những bài viết ở dưới.

Điều kiện cần thiết
Để chúng ta có thể làm tốt và hoàn thành bài hướng dẫn này, bạn cần truy cập vào máy chủ Debian 10 của bạn để lưu trữ dịch vụ OpenVPN.
Bạn cần phải cấu hình người dùng có đặc quyền sudo, chúng tôi không hướng dẫn để sử dụng tài khoản người dùng root.
Nếu bạn chưa thiết lập máy chủ của mình, bạn có thể làm theo hướng dẫn thiết lập máy chủ Debian 10 khi mới cài đặt của chúng tôi để thực hiện thiết lập, cấu hình người dùng có quyền thích hợp. Hướng dẫn đó cũng được chúng tôi nói đến việc thiết lập tường lửa trên máy chủ của bạn, vì 2 yếu tố này sẽ được sử dụng xuyên suốt trong bài viết này. Vì vậy, hãy thực hiện công việc đó trước khi tiếp tục cùng chúng tôi thực hiện bài hướng dẫn này.

Ngoài ra, bạn cũng cần một máy riêng biệt để làm tổ chức phát hành chứng chỉ (CA) của mình. Mặc dù về mặt kỹ thuật, bạn có thể sử dụng máy chủ OpenVPN hoặc máy cục bộ làm CA của mình, nhưng điều này không được khuyến khích vì nó làm máy chủ VPN của bạn mắc phải vài lỗ hổng bảo mật. Theo tài liệu phát hành OpenVPN chính thức, chúng tacnên đặt CA của mình trên một máy độc lập chuyên dùng để nhập và xác thực các yêu cầu chứng chỉ.
Vì lý do trên, hướng dẫn này chúng tôi sẽ giả định rằng CA của bạn nằm trên một máy chủ Debian 10 riêng biệt đã có người dùng không phải root đặc quyền sử dụng sudo và đã được thiết lập tường lửa cơ bản.

Xin lưu ý rằng nếu bạn tắt xác thực mật khẩu trong khi cấu hình các máy chủ này, bạn có thể gặp rắc rối khi chuyển dữ liệu giữa chúng trong hướng dẫn này của chúng tôi. Vì vậy, bạn có thể kiểm tra và bật lại xác thực mật khẩu trên mỗi máy chủ nếu đã tắt đi. Ngoài ra, bạn có thể tạo thêm cặp khóa SSH cho mỗi máy chủ của bạn, sau đó thêm khóa SSH công khai máy chủ OpenVPN vào tệp authorized_keys của máy CA và ngược lại. Nếu cần thiết, bạn có thể xem Cách thiết lập khóa SSH trên Debian 10 của chúng tôi để biết hướng dẫn về cách thực hiện một trong các giải pháp chúng tôi vừa nhắc đến.

Khi chúng ta đã đầy đủ những điều kiện cần thiết ở trên, bây giờ chúng ta sẽ tiến hành từng bước để thực hiện việc thiết lập máy chủ OpenVPN trên máy chủ của chúng ta.

Bước 1. Cài đặt phần mềm OpenVPN và EasyRSA lên máy chủ

Để bắt đầu, chúng ta sẽ cập nhật thư viện cài đặt apt trên máy chủ của mình và tiến hành cài đặt phần mềm OpenVPN. OpenVPN luôn sẵn trong kho lưu trữ mặc định của Debian, vì vậy chúng ta có thể sử dụng apt để cài đặt nó một cách dễ dàng
sudo apt update sudo apt install openvpn


OpenVPN là một VPN TLS / SSL. Điều này có nghĩa là nó sử dụng các chứng chỉ để mã hóa lưu lượng giữa máy chủ và máy khách. Để cấp chứng chỉ đáng tin cậy, bạn sẽ thiết lập tổ chức phát hành chứng chỉ  (CA) của riêng mình rất đơn giản. Để thực hiện việc này, chúng ta sẽ tải xuống phiên bản EasyRSA mới nhất hiện tại, phiên bản mà chúng ta sẽ sử dụng để xây dựng cơ sở hạ tầng CA (PKI) khóa công khai. Từ kho lưu trữ GitHub truyền thống của dự án này.

Như đã đề cập trong điều kiện cần thiết, chúng tôi ta xây dựng chứng chỉ CA trên một máy chủ độc lập. Lý do cho cách tiếp cận này là nếu kẻ tấn công có thể xâm nhập vào máy chủ của bạn, chúng sẽ có thể truy cập vào khóa cá nhân CA của bạn và sử dụng nó để ký các chứng chỉ mới, cấp cho họ quyền truy cập vào VPN của bạn. Lúc này, quản lý chứng chỉ CA từ máy độc lập của bạn sẽ giúp ngăn người dùng trái phép truy cập VPN của bạn. Cũng xin lưu ý rằng bạn nên tắt máy chủ CA khi không được sử dụng để ký khóa như một biện pháp phòng ngừa khác.

Để bắt đầu xây dựng cơ sở hạ tầng CA và PKI, chúng ta sẽ sử dụng lệnh wget để tải xuống phiên bản EasyRSA mới nhất trên cả máy CA và máy chủ OpenVPN của bạn . Để tải phiên bản mới nhất, bây giờ chúng ta truy cập trang phát hành của nó trên dự án EasyRSA chính thức từ GitHub, sao chép liên kết tải xuống cho tệp tin có đuôi định dạng .tgz, sau đó thực hiện lệnh sau:
wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz

Tiếp tục giải nén:
 

cd ~tar xvf EasyRSA-unix-v3.0.6.tgz
Bạn đã cài đặt thành công tất cả phần mềm cần thiết trên máy chủ và máy CA của mình.Tiếp tục cấu hình các biến được sử dụng trên EasyRSA  và thiết lập thư mục CA, từ đó bạn sẽ tạo các khóa và chứng chỉ cần thiết để máy chủ và máy khách của bạn truy cập VPN.

Bước 2 - Cấu hình các biến EasyRSA và xây dựng CA

EasyRSA được cài đặt với một tệp cấu hình mà bạn có thể chỉnh sửa để xác định một số biến cho CA của mình.
Trên máy CA của bạn, điều hướng đến thư mục EasyRSA: 
cd ~/EasyRSA-v3.0.6/
Bên trong thư mục này có một tệp có tên vars.example. Tạo một bản sao của tệp này và đặt tên cho bản sao không có phần mở rộng, cụ thể là vars:
cp vars.example vars
Mở tệp mới này bằng trình soạn thảo văn bản ưa thích của bạn, ở bài viết này chúng tôi sử dụng nano:
nano vars 
Tìm các dòng cài đặt đặt giá trị mặc định cho chứng chỉ mới. Nó sẽ trông giống như sau:
. . .#set_var EASYRSA_REQ_COUNTRY    "US"#set_var EASYRSA_REQ_PROVINCE   "California"#set_var EASYRSA_REQ_CITY       "San Francisco"#set_var EASYRSA_REQ_ORG        "Copyleft Certificate Co"#set_var EASYRSA_REQ_EMAIL      "me@example.net"#set_var EASYRSA_REQ_OU         "My Organizational Unit". . .
  Bây giờ hãy bỏ ghi chú những dòng này và cập nhật các giá trị được đánh dấu thành bất kỳ giá trị nào bạn muốn, nhưng đừng để trống chúng, ví dụ:
. . .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        "DigitalOcean"set_var EASYRSA_REQ_EMAIL      "admin@example.com"set_var EASYRSA_REQ_OU         "Community". . .
Khi bạn hoàn tất, hãy lưu và đóng tệp.
Trong thư mục EasyRSA là một tập lệnh easyrsa được gọi để thực hiện nhiều nhiệm vụ liên quan đến việc xây dựng và quản lý CA.Chạy tập lệnh này với tùy chọn init-pki để khởi tạo cơ sở hạ tầng khóa công khai trên máy chủ CA:
./easyrsa init-pki Output . . . init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/sammy/EasyRSA-v3.0.6/pki 

Sau đó, hãy gọi lại tập lệnh easyrsa,với tùy chọn build-ca. Điều này sẽ xây dựng CA và tạo hai tệp quan trọng với tên - ca.crt và ca.key- tạo nên các khóa công khai và riêng tư của chứng chỉ SSL.
  • ca.crt là tệp chứng chỉ công khai của CA trong OpenVPN, máy chủ và máy khách sử dụng nó để thông báo cho nhau rằng họ là một phần của cùng một trang web tin cậy và không phải ai đó thực hiện tấn công trung gian. Vì lý do này, máy chủ của bạn và tất cả các máy khách của bạn sẽ cần một bản sao của tệp ca.crt.
  • ca.key là khóa riêng mà máy CA sử dụng để ký các khóa và chứng chỉ cho máy chủ và máy khách. Nếu kẻ tấn công giành được quyền truy cập vào CA của bạn và lần này tệp ca.key sẽ có thể chấp nhận quyền truy cập vào VPN của bạn, tất nhiên nó sẽ cản trở nếu không đúng với những thông tin bảo mật nó nó được cung cấp. Đây là lý do tại sao ca.key tệp của bạn chỉ nên ở trên máy CA của bạn và tốt 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.
Nếu bạn không muốn được nhắc nhập mật khẩu mỗi khi tương tác với CA của mình, bạn có thể chạy lệnh build-ca với tùy chọn nopass như sau: 
./easyrsa build-ca nopass
Trên màn hình, bạn sẽ nhận được yêu cầu xác nhận tên chung cho chứng chỉ về chữ ký CA của mình: 
Output. . . Common Name (eg: your user, host, or server name) [Easy-RSA CA]: 
Tên chung là tên được sử dụng để chỉ máy này trong ngữ cảnh của tổ chức phát hành chứng chỉ. Bạn có thể nhập bất kỳ chuỗi ký tự nào cho tên chung của CA, nhưng để đơn giản hơn, hãy nhấn ENTER để chấp nhận tên mặc định.
Lúc này, CA của bạn đã sẵn sàng hoạt động và nó đã sẵn sàng để bắt đầu ký các yêu cầu chứng chỉ.

Bước 3 - Tạo chứng chỉ máy chủ, khóa và tệp mã hóa

Bây giờ bạn đã có một CA sẵn sàng hoạt động, bạn có thể tạo khóa riêng tư và yêu cầu chứng chỉ từ máy chủ của mình, sau đó chuyển yêu cầu đến CA của bạn để được ký, tạo chứng chỉ cần thiết. Bạn cũng có thể tự tạo một số tệp bổ sung được sử dụng trong quá trình mã hóa.
Bắt đầu bằng cách truy cập đến thư mục EasyRSA trên máy chủ OpenVPN của bạn :
cd EasyRSA-v3.0.6/
Từ đó, chạy lệnh easyrsa với tùy chọn init-pki. Mặc dù bạn đã chạy lệnh này trên máy CA, bạn cần phải chạy lệnh này ở đây vì máy chủ và CA của bạn sẽ có các thư mục PKI riêng biệt như bên dưới:
./easyrsa init-pki 
Sau đó chúng ta cần gọi lại easyrsa , lần này với tùy chọn gen-req phía sau là tên chung cho máy. Đây có thể là bất cứ thứ nội dung gì bạn thích, trong hướng dẫn này tên chung của máy chủ OpenVPN sẽ chỉ đơn giản là “server”. Bao gồm cả tùy chọn nopass, nếu không thiết lập như vậy thì bạn sẽ được yêu cầu bảo vệ bằng mật khẩu, điều này có thể dẫn đến các vấn đề về quyền sau này:

Lưu ý : Nếu bạn chọn tên ở đây không phải là "server", bạn sẽ phải điều chỉnh một số hướng dẫn như bên dưới. Ví dụ, khi sao chép các tệp đã tạo vào 
thư mục /etc/openvpn, bạn sẽ phải thay thế các tên chính xác. Bạn cũng sẽ phải sửa đổi tệp /etc/openvpn/server.conf sau đó để trỏ đến tệp .crt và tệp .key chính xác.
./easyrsa gen-req server nopass
Thao tác này sẽ tạo khóa riêng tư cho máy chủ và tệp yêu cầu chứng chỉ được gọi server.req. Sao chép khóa máy chủ  vào thư mục /etc/openvpn/:
sudo cp ~/EasyRSA-v3.0.6/pki/private/server.key /etc/openvpn/
Sử dụng phương pháp bảo mật (như SCP, trong ví dụ của chúng tôi ở bên dưới), chuyển tệp server.req sang máy CA của bạn: 
scp ~/EasyRSA-v3.0.6/pki/reqs/server.req sammy@your_CA_ip:/tmp
Tiếp theo, trên máy CA của bạn , điều hướng đến thư mục EasyRSA: 
cd EasyRSA-v3.0.6/
Sử dụng lại tập lệnh easyrsa , nhập tệp server.req, theo đường dẫn tệp với tên thông thường của nó: 
 ./easyrsa import-req /tmp/server.req server 
Sau đó, ký yêu cầu bằng cách chạy tập lệnh easyrsa vớ tùy chọn isign-req, tiếp theo là loại yêu cầu và tên thông thường. Loại yêu cầu có thể là client hoặc server. Đối với yêu cầu chứng chỉ của máy chủ OpenVPN, chúng ta sẽ sử dụng loại yêu cầu server:
./easyrsa sign-req server server 
Trên màn hình, bạn sẽ được yêu cầu xác minh rằng yêu cầu đến từ một nguồn đáng tin cậy. Nhập yes rồi nhấn ENTER để xác nhận điều này:
You are about to sign the following certificate.Please check over the details shown below for accuracy. Note that this requesthas not been cryptographically verified. Please be sure it came from a trustedsource or that you have verified the request checksum with the sender.Request subject, to be signed as a server certificate for 1080 days:subject=    commonName                = serverType the word 'yes' to continue, or any other input to abort.  Confirm request details: yes
 Nếu bạn đã mã hóa khóa CA của mình, bạn sẽ được nhắc nhập mật khẩu của mình tại thời điểm này.
Tiếp theo, chuyển chứng chỉ đã ký trở lại máy chủ VPN của bạn bằng phương pháp bảo mật:
scp pki/issued/server.crt sammy@your_server_ip:/tmp 
Trước khi đăng xuất khỏi máy CA của bạn, hãy chuyển cả tệp ca.crt đến máy chủ của bạn: 
scp pki/ca.crt sammy@your_server_ip:/tmp 
Tiếp theo, đăng nhập lại vào máy chủ OpenVPN của bạn và sao chép tệp server.crt và ca.crt vào thư mục /etc/openvpn của bạn :
sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/
Sau đó truy cập đến thư mục EasyRSA của bạn:
cd EasyRSA-v3.0.6/ 
Từ đây, tạo một khóa Diffie-Hellman mạnh mẽ để sử dụng trong quá trình trao đổi khóa bằng cách nhập:
./easyrsa gen-dh 
Quá trình này có thể mất vài phút để hoàn thành. Sau khi làm như vậy, hãy tạo chữ ký HMAC để tăng cường khả năng xác minh tính toàn vẹn TLS của máy chủ:
sudo openvpn --genkey --secret ta.key
Khi lệnh kết thúc, hãy sao chép hai tệp mới vào thư mục /etc/openvpn/ của bạn :
sudo cp ~/EasyRSA-v3.0.6/ta.key /etc/openvpn/sudo cp ~/EasyRSA-v3.0.6/pki/dh.pem /etc/openvpn/
Tất cả chứng chỉ và tệp khóa mà máy chủ của bạn cần đã được tạo. Bạn đã sẵn sàng tạo các chứng chỉ và khóa tương ứng mà máy khách của bạn sẽ sử dụng để truy cập máy chủ OpenVPN của bạn.

 Bước 4 - Tạo chứng chỉ và khóa cho ứng dụng khách
Mặc dù bạn có thể tạo khóa cá nhân và yêu cầu chứng chỉ trên máy khách của mình và sau đó gửi đến CA để được ký, hướng dẫn này phác thảo quy trình tạo yêu cầu chứng chỉ trên máy chủ. Lợi ích của việc này là chúng ta có thể tạo một tập lệnh sẽ tự động tạo các tệp cấu hình máy khách chứa tất
cả các khóa và chứng chỉ cần thiết. Điều này cho phép bạn tránh phải chuyển khóa, chứng chỉ và tệp cấu hình cho máy khách và hợp lý hóa quá trình tham gia VPN.
Chúng tôi sẽ tạo một khóa ứng dụng khách và cặp chứng chỉ cho hướng dẫn này. Nếu bạn có nhiều khách hàng, bạn có thể lặp lại quy trình này cho từng khách hàng. Tuy nhiên, xin lưu ý rằng bạn sẽ cần chuyển một giá trị tên duy nhất cho tập lệnh cho mọi ứng dụng khách. Trong suốt hướng dẫn
này, cặp khóa/chứng chỉ đầu tiên được gọi là client1.

Bắt đầu bằng cách tạo cấu trúc thư mục trong thư mục chính của bạn để lưu trữ chứng chỉ ứng dụng khách và các tệp khóa:
mkdir -p ~/client-configs/keys
Vì bạn sẽ lưu trữ chứng chỉ / cặp khóa và tệp cấu hình của khách hàng trong thư mục này, bạn nên khóa các quyền của nó ngay bây giờ như một biện pháp bảo mật:
chmod -R 700 ~/client-configs
Tiếp theo, điều hướng trở lại thư mục EasyRSA và chạy tập lệnh easyrsa với các tùy chọn gen-req nopass, cùng với tên chung cho ứng dụng khách:
cd ~/EasyRSA-v3.0.6/./easyrsa gen-req client1 nopass

Nhấn ENTER để xác nhận tên thông thường. Sau đó, sao chép tệp client1.key vào thư mục /client-configs/keys/ bạn đã tạo trước đó: 
cp pki/private/client1.key ~/client-configs/keys/
Tiếp theo, chuyển tệp client1.req sang máy CA của bạn bằng phương pháp bảo mật: 
scp pki/reqs/client1.req sammy@your_CA_ip:/tmp
Đăng nhập vào máy CA của bạn, truy cập đến thư mục EasyRSA và nhập yêu cầu chứng chỉ:
ssh sammy@your_CA_ipcd EasyRSA-v3.0.6/./easyrsa import-req /tmp/client1.req client1
Sau đó ký vào yêu cầu như bạn đã làm đối với máy chủ ở bước trước. Tuy nhiên, lần này, hãy nhớ chỉ định loại yêu cầu client :  
./easyrsa sign-req client client1
Nó sẽ hiển thị những lời nhắc thông báo, hãy bấm enter hoặc yes để xác nhận rằng bạn định ký vào yêu cầu chứng chỉ và nó đến từ một nguồn đáng tin cậy:
OutputType the word 'yes' to continue, or any other input to abort.  Confirm request details: yes
Một lần nữa, nếu bạn đã mã hóa khóa CA của mình, bạn sẽ được nhắc nhập mật khẩu của mình tại đây. Điều này sẽ tạo một tệp chứng chỉ ứng dụng khách có tên client1.crt. Chuyển tệp này trở lại máy chủ: 
scp pki/issued/client1.crt sammy@your_server_ip:/tmp
SSH trở lại máy chủ OpenVPN của bạn và sao chép chứng chỉ ứng dụng khách vào thư mục /client-configs/keys
cp /tmp/client1.crt ~/client-configs/keys/
Tiếp theo, sao chép cả tệp ca.crt ta.key vào thư mục /client-configs/keys/
sudo cp ~/EasyRSA-v3.0.6/ta.key ~/client-configs/keys/sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/

Lúc này, tất cả các chứng chỉ và khóa của máy chủ và máy khách của bạn đã được tạo và được lưu trữ trong các thư mục thích hợp trên máy chủ của bạn. Vẫn còn một số thao tác cần được thực hiện với các tệp này, nhưng chúng sẽ có ở bước sau. Hiện tại, bạn có thể chuyển sang cấu hình OpenVPN trên máy chủ của mình.

Bước 5 - Định cấu hình Dịch vụ Open VPN
Bây giờ cả chứng chỉ và khóa của máy khách và máy chủ của bạn đã được tạo, bạn có thể bắt đầu định cấu hình dịch vụ OpenVPN để sử dụng các  thông tin xác thực này.
Bắt đầu bằng cách sao chép tệp cấu hình OpenVPN mẫu vào thư mục cấu hình và sau đó giải nén để sử dụng nó làm cơ sở cho thiết lập của bạn:
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz
Mở tệp cấu hình máy chủ trong trình soạn thảo văn bản ưa thích của bạn: 
sudo nano /etc/openvpn/server.conf 
Tìm phần HMAC bằng cách xách định tls-auth. Dòng này đã được bỏ ghi chú, nhưng nếu bạn quên làm điều đó, hãy xóa dấu “ ; ” Để bỏ ghi chú cho nó như bên dưới:                                      
tls-auth ta.key 0 # This file is secret

Tiếp theo, tìm phần về mật mã bằng cách tìm các dòng được chú thích có tên cipher. Vời mật mã AES-256-CBC một mức độ tốt của mã hóa và cũng được hỗ trợ.
Vui lòng để ý, dòng này đã được bỏ ghi chú như hướng dẫn ở trên, nhưng nếu bạn chưa thiết lập thì chỉ cần loại bỏ dấu “ ; ” Trước dòng này như bên dưới
cipher AES-256-CBC
Bây giờ, thêm auth để chọn thuật toán thông báo thông báo HMAC. Đối với điều này, SHA256 là một lựa chọn tốt:
auth SHA256 
Tiếp theo, tìm dòng chứa dh để xác định các tham số Diffie-Hellman. Do một số thay đổi gần đây được thực hiện đối với EasyRSA, tên tệp cho khóa Diffie-Hellman có thể khác với tên được liệt kê trong tệp cấu hình máy chủ mẫu. Nếu cần, hãy thay đổi tên tệp được liệt kê ở đây bằng cách xóa tên 2048 để nó phù hợp với khóa bạn đã tạo ở bước trước:
dh dh.pem 
Cuối cùng, tìm cài đặt user group và xóa dấu “ ; ” ở đầu mỗi dòng để cấu hình cho nó hoạt động:
user nobody group nogroup
Những thay đổi bạn đã thực hiện những thay đối với tệp cấu hình server.conf  trên OpenVPN đã hoạt động. Những thay đổi được nêu dưới đây là chúng tôi hướng dẫn thêm để bạn có một khái quát về OpenVPN đầy đủ, tuy nhiên chúng cũng cần thiết cho nhiều trường hợp sử dụng. Và dưới đây mới là kết quả cuối cùng của bài viết này mà chúng tôi muốn hướng dẫn bạn thực hiện nó.

Cấu hình DNS để chuyển hướng tất cả lưu lượng truy cập thông qua máy chủ OpenVPN

Cài đặt ở trên sẽ tạo kết nối VPN giữa hai máy, nhưng sẽ không buộc bất kỳ kết nối nào sử dụng tunnel. Nếu bạn muốn sử dụng VPN để định tuyến tất cả lưu lượng truy cập của mình, bạn có thể muốn đẩy cài đặt DNS cho các máy khách.

Có một số dòng trong tệp server.conf mà bạn phải thay đổi để kích hoạt chức năng này. Tìm phần redirect-gateway và bỏ dấu chấm phẩy “ ; ” để cấu hình nó, khi được thay đổi nó giống như bên dưới:
push "redirect-gateway def1 bypass-dhcp" 
Lúc này, hãy tìm phần dhcp-option. Tiếp tục loại bỏ dấu “ ; ” để hoàn tất việc cấu hình chúng, ví dụ chúng tôi thực hiện bỏ ghi chú và cấu hình như sau:
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
Điều này sẽ hỗ trợ khách hàng trong việc định cấu hình lại cài đặt DNS của họ để sử dụng  VPN làm cổng mặc định.

Điều chỉnh Cổng và Giao thức

Theo mặc định, máy chủ OpenVPN sử dụng cổng 1194  và giao thức UDP để chấp nhận các kết nối máy khách. Nếu bạn cần sử dụng một cổng khác vì môi trường mạng hạn chế mà máy khách của bạn có thể ở trong, bạn có thể thay đổi tùy chọn port. Nếu bạn không lưu trữ nội dung web trên máy chủ OpenVPN của mình, cổng 443 là một lựa chọn phổ biến vì nó thường được phép thông qua các quy tắc tường lửa.
# Optional! port 443
Thông thường, giao thức cũng bị hạn chế đối với cổng đó. Vì vậy, chúng ta sẽ thay đổi proto từ UDP sang TCP:
# Optional! proto tcp
Nếu bạn thực hiện chuyển đổi giao thức TCP, bạn sẽ cần phải thay đổi giá trị của dòng explicit-exit-notify từ 1 tới 0, khi thực hiện điều này chỉ được sử dụng bởi UDP. Chúng ta không làm như vậy, vì khi sử dụng giao thức TCP sẽ gây ra lỗi khởi động dịch vụ OpenVPN:
# Optional!explicit-exit-notify 0
Nếu bạn không có nhu cầu sử dụng cổng và giao thức khác, tốt nhất nên để hai cài đặt này làm mặc định.

Chuyển đến thông tin đăng nhập không mặc định
Nếu bạn đã chọn một tên khác trong lệnh  ./easyrsa gen-req ở Bước 3 trong bài hướng dẫn này, hãy sửa đổi dòng cert và dòng key mà bạn thấy để trỏ đến tệp .crt và tệp .key thích hợp . Nếu bạn sử dụng tên mặc định, "máy chủ", tên này đã được đặt chính xác:
cert/server.crt key server.key
Khi bạn hoàn tất, hãy lưu và đóng tệp.

Sau khi hoàn thành và thực hiện bất kỳ thay đổi nào đối với cấu hình OpenVPN trên máy chủ của bạn và bất kỳ trường hợp sử dụng cụ thể nào với mục đích của bạn, bạn có thể bắt đầu thực hiện một số thay đổi đối với mạng trên máy chủ của mình.

Bước 6 - Điều chỉnh cấu hình mạng máy chủ
Có một số khía cạnh của cấu hình mạng của máy chủ cần được điều chỉnh để OpenVPN có thể định tuyến chính xác lưu lượng truy cập thông qua VPN. Đầu tiên trong số này là chuyển tiếp IP, một phương pháp để xác định nơi lưu lượng truy cập IP nên được định tuyến. Đây là điều cần thiết đối với chức năng VPN mà máy chủ của bạn sẽ cung cấp.
Điều chỉnh cài đặt chuyển tiếp IP mặc định của máy chủ của bạn bằng cách sửa đổi  tệp /etc/sysctl.conf
sudo nano /etc/sysctl.conf 
Lúc này, hãy tìm dòng net.ipv4.ip_forward. Xóa ký tự “ # ” ở đầu dòng để nó hoạt động trong cài đặt này:
ipv4.ip_forward=1 
Lưu và đóng tệp khi bạn hoàn tất.
Để đọc tệp và điều chỉnh các giá trị cho quá trình làm việc hiện tại, hãy nhập:
sudo sysctl -p
Output net.ipv4.ip_forward = 1 

Nếu bạn đã làm theo hướng dẫn thiết lập máy chủ trên Debian 10 khi mới cài đặt của chúng tôi được liệt kê trong điều kiện cần thiết, bạn đã có tường lửa UFW hoạt động trên máy chủ của mình. Bất kể bạn có sử dụng tường lửa để chặn lưu lượng truy cập không mong muốn hay không (điều mà bạn hầu như luôn làm), đối với hướng dẫn này, bạn cần có tường lửa để thao tác một số lưu lượng truy cập vào máy chủ đảm bảo an toàn. Một số quy tắc tường lửa phải được sửa đổi để cho phép nó hoạt động theo ý muốn của chúng ta, một khái niệm iptables cung cấp bản dịch địa chỉ mạng động (NAT) nhanh chóng để định tuyến chính xác các kết nối 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 của chúng ta, trước tiên bạn phải tìm giao diện mạng công cộng của máy mình. Để làm điều này, hãy nhập:
ip route | grep default 
Giao diện công khai của bạn là chuỗi được tìm thấy trong đầu ra của lệnh này theo sau từ “dev”. Ví dụ: kết quả này hiển thị giao diện được đặt tên  eth0, được đánh dấu bên dưới;
Outputdefault via 203.0.113.1 dev eth0 proto static
Khi bạn có giao diện được liên kết với tuyến đường mặc định của mình, hãy mở  tệp /etc/ufw/before.rules để thêm cấu hình có liên quan: 
sudo nano /etc/ufw/before.rules 
Các quy tắc UFW thường được thêm vào bằng lệnh ufw. Tuy nhiên, các quy tắc được liệt kê trong tệp before.rules  được đọc và đưa vào vị trí trước khi các quy tắc UFW thông thường được tải. Về đầu tệp, thêm các dòng được đánh dấu bên dưới. Điều này sẽ đặt chính sách mặc định cho OSTROUTING chuỗi trong bảng nat masquerading (che giấu) bất kỳ lưu lượng nào đến từ VPN. Hãy nhớ thay thế eth0 ở -A POSTROUTING dòng bên dưới bằng giao diện bạn tìm thấy trong lệnh trên:
## 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 MASQUERADECOMMIT# END OPENVPN RULES# Don't delete these required lines, otherwise there will be errors*filter. . .
Lưu và đóng tệp khi bạn hoàn tất.
Tiếp theo, bạn cần yêu cầu UFW cho phép các gói được chuyển tiếp theo mặc định. Để thực hiện việc này, hãy mở tệp /etc/default/ufw :
sudo nano /etc/default/ufw 
Bên trong, tìm DEFAULT_FORWARD_POLICY chỉ thị và thay đổi giá trị từ DROP thành ACCEPT:
ufw DEFAULT_FORWARD_POLICY="ACCEPT" 
 Lưu và đóng tệp khi bạn hoàn tất. 
Tiếp theo, điều chỉnh tường lửa để cho phép lưu lượng truy cập vào OpenVPN. Nếu bạn không thay đổi cổng và giao thức trong tệp etc/openvpn/server.conf, bạn sẽ cần mở lưu lượng UDP tới cổng 1194. Nếu bạn đã sửa đổi cổng và/hoặc giao thức, hãy thay thế các giá trị bạn đã
chọn ở đây.

Ngoài ra, trong trường hợp bạn không thêm cổng SSH khi hoàn thành hướng dẫn điều kiện tiên quyết, hãy thêm nó vào đây:
sudo ufw allow 1194/ udp sudo ufw allow OpenSSH 
Sau khi thêm các quy tắc đó, hãy tắt và bật lại UFW để khởi động lại nó và tải các thay đổi từ tất cả các tệp bạn đã sửa đổi:
sudo ufw disable sudo ufw enable 
Máy chủ của bạn hiện đã được định cấu hình để xử lý chính xác lưu lượng OpenVPN.
Bước 7 - Khởi động và kích hoạt dịch vụ OpenVPN

Cuối cùng, bạn đã sẵn sàng để bắt đầu dịch vụ OpenVPN trên máy chủ của mình. Điều này được thực hiện bằng cách sử dụng tiện ích systemd systemctl.
Khởi động máy chủ OpenVPN bằng cách chỉ định tên tệp cấu hình của bạn với systemd. Tệp cấu hình cho máy chủ của bạn được gọi, vì vậy hãy thêm vào cuối tệp đơn vị của bạn khi gọi nó:
sudo systemctl start openvpn@server
Kiểm tra kỹ xem dịch vụ đã bắt đầu thành công hay chưa bằng cách nhập: sudo systemctl status openvpn@server
Nếu mọi thứ diễn ra tốt đẹp, màn hình của bạn sẽ giống như sau:
 
Output● openvpn@server.service - OpenVPN connection to server   Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)   Active: active (running) since Wed 2019-07-17 03:39:24 UTC; 29s ago     Docs: man:openvpn(8)           https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage           https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 3371 (openvpn)   Status: "Initialization Sequence Completed"    Tasks: 1 (limit: 3587)   Memory: 1.2M   CGroup: /system.slice/system-openvpn.slice/openvpn@server.service           └─3371 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --config /etc/openvpn/server.conf --writepid /run/openvpn/
Bạn cũng có thể kiểm tra xem giao diện tun0 trên OpenVPN có làm việc không, bằng cách nhập:
ip addr show tun0
Điều này sẽ xuất ra một giao diện được định cấu hình;
Output3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100    link/none     inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0       valid_lft forever preferred_lft forever    inet6 fe80::dd60:3a78:b0ca:1659/64 scope link stable-privacy        valid_lft forever preferred_lft forever
Sau khi khởi động dịch vụ, hãy kích hoạt nó để nó tự động khởi động trong mỗi lần mà bạn khởi động lại máy của mình:
sudo systemctl enable openvpn@server
Dịch vụ OpenVPN của bạn hiện đã hoạt động. Tuy nhiên, trước khi bạn có thể bắt đầu sử dụng nó, bạn phải tạo một tệp cấu hình cho máy khách. Hướng ở những bước ở trên chúng tôi đã trình bày về cách tạo các cặp khóa/chứng chỉ cho máy khách hoàn chỉnh và trong bài viết tiếp theo, chúng tôi sẽ trình bày cách tạo cơ sở hạ tầng để dễ dàng tạo các tệp cấu hình máy khách, vui lòng đọc nó cẩn thận để máy chủ của bạn hoạt động tốt.

Tác giả bài viết: Hoàng Sơn

Đừng quên để lại cho chúng tôi bình luận nếu bạn gặp khó khăn hoặc cần bất kỳ giúp đỡ nào. Chúng tôi sẽ trả lời tất cả những ý kiến cũng như luôn lắng nghe đóng góp của mọi người tại bình luận dưới này, điều này sẽ cần thiết cho một vài người bạn khác cũng cần được trao đổi thêm thông tin.
Cám ơn các bạn đã quan tâm và dành thời gian xem hết bài viết này của chúng tôi.

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

Click để đánh giá bài viết

  Ý kiến bạn đọc

Góc nhìn

Xem tất cả
Cách đơn giản để quản lý cảm xúc của bạn và sống hạnh phúc mỗi ngày

Cách đơn giản để quản lý cảm xúc của bạn và sống hạnh phúc mỗi ngày

Mọi người đều đã trải qua sự tức giận, buồn bã, thất vọng và thất vọng. Nếu quản lý không đúng cách, những cảm xúc tiêu cực này có thể phá vỡ mối quan...

Làm thế nào để thành công?

Làm thế nào để thành công?

Hôm nay, chúng ta tạm gác lại những chia sẻ phục vụ cho mục đích hỗ trợ kỹ thuật. Cùng nghĩ một tí xíu về thời gian đã qua và định hướng sơ bộ cho câu...

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây