Mục lục

Không có mục lục
Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly

Cách thiết lập và định cấu hình máy chủ OpenVPN trên Ubuntu 20.04 (Phần 1/2)

Ngày đăng: 23 tháng 3 năm 2023

Ubuntu

Giới thiệu

Virtual Private Network (Mạng riêng ảo - VPN) cho phép bạn duyệt qua các mạng không đáng tin cậy như thể bạn đang ở trên một mạng riêng. Nó cho phép bạn tự do 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 mạng không đáng tin cậy, chẳng hạn như WiFi tại khách sạn hoặc quán cà phê.

Khi được kết hợp với các kết nối HTTPS, thiết lập này cho phép bạn bảo mật thông tin đăng nhập và giao dịch không dây của mình. Bạn có thể phá vỡ các hạn chế và kiểm duyệt địa lý, đồng thời bảo vệ vị trí của mình và mọi lưu lượng HTTP không được mã hóa khỏi các mạng không đáng tin cậy.

OpenVPN là một giải pháp Transport Layer Security VPN (Bảo mật tầng truyền tải - TLS) mã nguồn mở, đầy đủ tính năng, hỗ trợ nhiều loại cấu hình. Trong hướng dẫn này, bạn sẽ thiết lập OpenVPN trên máy chủ Ubuntu 20.04, sau đó thiết lập cấu hình để nó có thể truy cập được từ máy khách.

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

Để làm theo hướng dẫn này, bạn sẽ cần:

  • Một máy chủ Ubuntu 20.04 có sudo non-root user và bật tường lửa. Để thiết lập điều này, bạn có thể làm theo hướng dẫn Thiết lập máy chủ ban đầu với Ubuntu 20.04 của chúng tôi. Chúng tôi sẽ gọi đây là Máy chủ OpenVPN trong suốt hướng dẫn này.
  • Một máy chủ Ubuntu 20.04 riêng biệt được thiết lập làm Certificate Authority (Cơ quan cấp chứng chỉ - CA) riêng, mà chúng tôi sẽ gọi là Máy chủ CA trong suốt hướng dẫn này. Sau khi thực hiện các bước từ Hướng dẫn thiết lập máy chủ ban đầu trên máy chủ này, bạn có thể làm theo các bước từ 1 đến 3 trong hướng dẫn của chúng tôi về Cách thiết lập và định cấu hình Certificate Authority (CA) trên Ubuntu 20.04 để thực hiện điều đó.

Lưu ý: Mặc dù về mặt kỹ thuật có thể sử dụng Máy chủ OpenVPN hoặc máy cục bộ của bạn làm CA, nhưng điều này không được khuyến khích vì nó mở ra một số lỗ hổng bảo mật cho VPN của bạn. Theo tài liệu chính thức của OpenVPN, bạn nên đặt CA của mình trên một máy độc lập dành riêng cho việc nhập và ký các yêu cầu chứng chỉ. Vì lý do này, hướng dẫn này giả định rằng CA của bạn nằm trên một máy chủ Ubuntu 20.04 riêng biệt cũng có non-root user với đặc quyền sudo và bật tường lửa cơ bản.

Ngoài ra, bạn sẽ cần một máy khách mà bạn sẽ sử dụng để kết nối với Máy chủ OpenVPN của mình. Trong hướng dẫn này, chúng tôi sẽ gọi đây là Máy khách OpenVPN. Với mục đích của hướng dẫn này, bạn nên sử dụng máy cục bộ của mình làm ứng dụng khách OpenVPN.

Với những điều kiện tiên quyết này, bạn đã sẵn sàng bắt đầu thiết lập và định cấu hình Máy chủ OpenVPN trên Ubuntu 20.04.

Lưu ý: Xin lưu ý rằng nếu bạn tắt xác thực mật khẩu trong khi thiết lập cấu hình các máy chủ này, bạn có thể gặp khó khăn khi chuyển các tệp giữa chúng sau này trong hướng dẫn này. Để giải quyết vấn đề này, bạn có thể kích hoạt lại xác thực mật khẩu trên mỗi máy chủ. Ngoài ra, bạn có thể tạo một cặp khóa SSH cho mỗi máy chủ, sau đó thêm khóa SSH công khai của Máy chủ OpenVPN vào tệp authorized_keys của máy CA và ngược lại. Xem Cách thiết lập khóa SSH trên Ubuntu 20.04 để biết hướng dẫn về cách thực hiện một trong hai giải pháp này.

Bước 1 — Cài đặt OpenVPN và Easy-RSA

Bước đầu tiên trong hướng dẫn này là cài đặt OpenVPN và Easy-RSA. Easy-RSA là công cụ quản lý cơ sở hạ tầng khóa công khai (PKI) mà bạn sẽ sử dụng trên Máy chủ OpenVPN để tạo yêu cầu chứng chỉ mà sau đó bạn sẽ xác minh và đăng nhập trên Máy chủ CA.

Để bắt đầu, hãy cập nhật chỉ mục gói Máy chủ OpenVPN của bạn và cài đặt OpenVPN và Easy-RSA. Cả hai gói đều có sẵn trong kho lưu trữ mặc định của Ubuntu, vì vậy bạn có thể sử dụng apt để cài đặt:

  1. sudo apt update
  2. sudo apt install openvpn easy-rsa

Tiếp theo, bạn sẽ cần tạo một thư mục mới trên Máy chủ OpenVPN với tư cách là non-root user của bạn có tên ~/easy-rsa:

  1. mkdir ~/easy-rsa

Bây giờ bạn sẽ cần tạo một liên kết tượng trưng từ tập lệnh easyrsa mà gói đã cài đặt vào thư mục ~/easy-rsa mà bạn vừa tạo:

  1. ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Lưu ý: Mặc dù các hướng dẫn khác có thể hướng dẫn bạn sao chép các tệp gói easy-rsa vào thư mục PKI của bạn, nhưng hướng dẫn này sử dụng phương pháp liên kết tượng trưng. Do đó, mọi cập nhật đối với gói easy-rsa sẽ tự động được phản ánh trong tập lệnh PKI của bạn.

Cuối cùng, đảm bảo chủ sở hữu của thư mục là non-root sudo user của bạn và hạn chế quyền truy cập đối với người dùng đó bằng chmod:

  1. sudo chown sammy ~/easy-rsa
  2. chmod 700 ~/easy-rsa

Khi các chương trình này được cài đặt và đã được di chuyển đến đúng vị trí trên hệ thống của bạn, bước tiếp theo là tạo Public Key Infrastructure (Cơ sở hạ tầng khóa công khai - PKI) trên máy chủ OpenVPN để bạn có thể yêu cầu và quản lý chứng chỉ TLS cho máy khách và các máy chủ khác sẽ kết nối với VPN của bạn.

Bước 2 — Tạo PKI cho OpenVPN

Trước khi bạn có thể tạo chứng chỉ và khóa riêng của máy chủ OpenVPN, bạn cần tạo một thư mục Public Key Infrastructure cục bộ trên máy chủ OpenVPN của mình. Bạn sẽ sử dụng thư mục này để quản lý các yêu cầu chứng chỉ của máy chủ và máy khách thay vì thực hiện chúng trực tiếp trên máy chủ CA của bạn.

Để tạo thư mục PKI trên máy chủ OpenVPN của bạn, bạn sẽ cần điền vào một tệp có tên là vars với một số giá trị mặc định. Trước tiên, bạn sẽ cd vào thư mục easy-rsa, sau đó bạn sẽ tạo và chỉnh sửa tệp vars bằng cách sử dụng nano hoặc trình soạn thảo văn bản ưa thích của bạn.

  1. cd ~/easy-rsa
  2. nano vars

Khi tệp được mở, hãy dán vào hai dòng sau:

~/easy-rsa/vars
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"

Đây là hai dòng duy nhất bạn cần trong tệp vars này trên máy chủ OpenVPN của mình vì nó sẽ không được sử dụng làm Certificate Authority. Họ sẽ đảm bảo rằng các khóa riêng và yêu cầu chứng chỉ của bạn được thiết lập cấu hình để sử dụng Elliptic Curve Cryptography (Mật mã đường cong Elliptic - ECC) hiện đại nhằm tạo khóa và chữ ký bảo mật cho máy khách và máy chủ OpenVPN của bạn.

Thiết lập cấu hình máy chủ OpenVPN & CA của bạn để sử dụng ECC có nghĩa là khi máy khách và máy chủ cố gắng thiết lập khóa đối xứng dùng chung, họ có thể sử dụng thuật toán Elliptic Curve để thực hiện trao đổi của mình. Sử dụng ECC để trao đổi khóa nhanh hơn đáng kể so với sử dụng Diffie-Hellman thuần túy 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ối cảnh: Khi khách hàng kết nối với OpenVPN, họ sử dụng mã hóa bất đối xứng (còn được gọi là khóa chung/riêng tư) để thực hiện TLS handshake. Tuy nhiên, khi truyền lưu lượng VPN được mã hóa, máy chủ và máy khách sử dụng mã hóa đối xứng, còn được gọi là mã hóa khóa dùng chung.

Chi phí tính toán với mã hóa đối xứng ít hơn nhiều so với mã hóa bất đối xứng: các số được sử dụng nhỏ hơn nhiều và các CPU hiện đại tích hợp các hướng dẫn để thực hiện các hoạt động mã hóa đối xứng được tối ưu hóa. Để thực hiện chuyển đổi từ mã hóa bất đối xứng sang mã hóa đối xứng, máy chủ OpenVPN và máy khách sẽ sử dụng thuật toán Elliptic Curve Diffie-Hellman (ECDH) để đồng ý về khóa bí mật dùng chung càng nhanh càng tốt.

Khi bạn đã điền vào tệp vars, bạn có thể tiến hành tạo thư mục PKI. Để làm như vậy, hãy chạy tập 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 chủ CA như một phần của điều kiện tiên quyết, nhưng cần phải chạy nó ở đâ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:

  1. ./easyrsa init-pki

Lưu ý rằng trên máy chủ OpenVPN của bạn không cần tạo Certificate Authority. Máy chủ CA của bạn hoàn toàn chịu trách nhiệm xác thực và ký chứng chỉ. PKI trên máy chủ VPN của bạn chỉ được sử dụng như một nơi thuận tiện và tập trung để lưu trữ các yêu cầu chứng chỉ và chứng chỉ công khai.

Sau khi bạn đã khởi tạo PKI của mình trên máy chủ OpenVPN, bạn đã sẵn sàng chuyển sang bước tiếp theo, đó là tạo yêu cầu chứng chỉ máy chủ OpenVPN và khóa riêng.

Bước 3 — Tạo yêu cầu chứng chỉ máy chủ OpenVPN và khóa riêng

Bây giờ máy chủ OpenVPN của bạn đã cài đặt tất cả các điều kiện tiên quyết, bước tiếp theo là tạo khóa riêng và Certificate Signing Request (Yêu cầu ký chứng chỉ - CSR) trên máy chủ OpenVPN của bạn. Sau đó, bạn sẽ chuyển yêu cầu tới CA của mình để được ký, tạo chứng chỉ bắt buộc. Sau khi bạn có chứng chỉ đã ký, bạn sẽ chuyển nó trở lại máy chủ OpenVPN và cài đặt nó để máy chủ sử dụng.

Để bắt đầu, hãy điều hướng đến thư mục ~/easy-rsa trên Máy chủ OpenVPN của bạn với tư cách là non-root user của bạn:

  1. cd ~/easy-rsa

Bây giờ, bạn sẽ gọi easyrsa với tùy chọn gen-req theo sau là Common Name (Tên chung - CN) cho máy. CN có thể là bất cứ thứ gì bạn thích nhưng có thể hữu ích nếu biến nó thành thứ gì đó mang tính mô tả. Trong suốt hướng dẫn này, CN của Máy chủ OpenVPN sẽ là server. Hãy chắc chắn bao gồm cả tùy chọn nopass. Nếu không làm như vậy, tệp yêu cầu sẽ được 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 một tên khác với server ở đây, bạn sẽ phải điều chỉnh một số hướng dẫn bên dưới. Chẳng hạn, 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 đúng tệp .crt.key.

  1. ./easyrsa gen-req server nopass
Output
Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

Thao tác này sẽ tạo khóa riêng cho máy chủ và tệp yêu cầu chứng chỉ có tên server.req. Sao chép khóa máy chủ vào thư mục /etc/openvpn/server:

  1. sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

Sau khi hoàn thành các bước này, bạn đã tạo thành công khóa riêng cho máy chủ OpenVPN của mình. Bạn cũng đã tạo Certificate Signing Request (Yêu cầu ký chứng chỉ) cho máy chủ OpenVPN. CSR hiện đã sẵn sàng để CA của bạn ký. Trong phần tiếp theo của hướng dẫn này, bạn sẽ tìm hiểu cách ký CSR bằng khóa riêng của máy chủ CA của bạn.

Bước 4 — Ký yêu cầu chứng chỉ của máy chủ OpenVPN

Ở bước trước, bạn đã tạo Certificate Signing Request (CSR) và khóa riêng cho máy chủ OpenVPN. Bây giờ máy chủ CA cần biết về chứng chỉ server và xác thực nó. Sau khi CA xác thực và chuyển tiếp chứng chỉ trở lại máy chủ OpenVPN, các máy khách tin tưởng CA của bạn cũng sẽ có thể tin tưởng máy chủ OpenVPN.

Trên máy chủ OpenVPN, với tư cách là non-root user của bạn, hãy sử dụng SCP hoặc phương thức truyền khác để sao chép yêu cầu chứng chỉ server.req sang máy chủ CA để ký:

  1. scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

Nếu bạn đã làm theo điều kiện tiên quyết Cách thiết lập và định cấu hình tổ chức phát hành chứng chỉ (CA) trên hướng dẫn Ubuntu 20.04, bước tiếp theo là đăng nhập vào máy chủ CA với tư cách là non-root user mà bạn đã tạo để quản lý CA của mình. Bạn sẽ cd vào thư mục ~/easy-rsa nơi bạn đã tạo PK của mình và sau đó nhập yêu cầu chứng chỉ bằng cách sử dụng tập lệnh easyrsa:

  1. cd ~/easy-rsa
  2. ./easyrsa import-req /tmp/server.req server
Output
. . . 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.

Tiếp theo, ký yêu cầu bằng cách chạy tập lệnh easyrsa với tùy chọn sign-req, tiếp theo là loại yêu cầu và Common Name. Loại yêu cầu có thể là client hoặc server. Vì chúng tôi đang làm việc với yêu cầu chứng chỉ của máy chủ OpenVPN, hãy đảm bảo sử dụng loại yêu cầu server:

  1. ./easyrsa sign-req server server

Ở đầu ra, bạn sẽ được nhắc 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:

Output
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 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

Lưu ý rằng nếu bạn đã mã hóa khóa riêng CA của mình, thì bạn sẽ được nhắc nhập mật khẩu vào thời điểm này.

Khi hoàn thành các bước đó, bạn đã ký yêu cầu chứng chỉ của máy chủ OpenVPN bằng khóa riêng của máy chủ CA. Tệp server.crt 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. Mục đích của chữ ký là nói với bất kỳ ai tin tưởng máy chủ CA rằng họ cũng có thể tin tưởng máy chủ OpenVPN khi họ kết nối với nó.

Để hoàn tất việc định cấu hình chứng chỉ, hãy sao chép các tệp server.crtca.crt từ máy chủ CA sang máy chủ OpenVPN:

  1. scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
  2. scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

Bây giờ, hãy quay lại máy chủ OpenVPN của bạn, sao chép các tệp từ /tmp sang /etc/openvpn/server:

  1. sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

Bây giờ máy chủ OpenVPN của bạn gần như sẵn sàng chấp nhận các kết nối. Trong bước tiếp theo, bạn sẽ thực hiện một số bước bổ sung để tăng cường bảo mật cho máy chủ.

Bước 5 — Định cấu hình OpenVPN Cryptographic Material

Để có lớp bảo mật bổ sung, chúng tôi sẽ thêm một khóa bí mật dùng chung bổ sung 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. Tùy chọn này được sử dụng để xáo trộn chứng chỉ TLS được sử dụng khi máy chủ và máy khách kết nối với nhau ban đầu. Nó cũng được máy chủ OpenVPN sử dụng để thực hiện kiểm tra nhanh các gói đến: nếu một gói được ký bằng khóa chia sẻ trước, thì máy chủ sẽ xử lý nó; nếu nó không được ký, thì máy chủ sẽ biết nó đến từ một nguồn không đáng tin cậy và có thể loại bỏ nó mà không phải thực hiện thêm công việc giải mã.

Tùy chọn này sẽ giúp đảm bảo rằng máy chủ OpenVPN của bạn có thể đối phó với lưu lượng truy cập chưa được xác thực, quét cổng và các cuộc tấn công Từ chối dịch vụ (Denial of Service), có thể làm tắc nghẽn tài nguyên máy chủ. Nó cũng khiến việc xác định lưu lượng mạng OpenVPN trở nên khó khăn hơn.

Để tạo khóa chia sẻ trước tls-crypt, hãy chạy phần sau trên máy chủ OpenVPN trong thư mục ~/easy-rsa:

  1. cd ~/easy-rsa
  2. openvpn --genkey --secret ta.key

Kết quả sẽ là một tệp có tên ta.key. Sao chép nó vào thư mục /etc/openvpn/server/:

  1. sudo cp ta.key /etc/openvpn/server

Với các tệp này tại chỗ trên máy chủ OpenVPN, bạn đã sẵn sàng tạo chứng chỉ ứng dụng khách và tệp chính cho người dùng của mình, những tệp mà bạn sẽ sử dụng để kết nối với VPN.

Bước 6 — Tạo chứng chỉ ứng dụng khách và cặp khóa

Mặc dù bạn có thể tạo khóa riêng và yêu cầu chứng chỉ trên máy khách của mình, sau đó gửi nó tới CA để được ký, nhưng 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ủ OpenVPN. Lợi ích của phương pháp 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 có chứa tất cả các khóa và chứng chỉ bắt buộc. Đ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 quy trình tham gia VPN.

Chúng tôi sẽ tạo một cặp chứng chỉ và khóa ứng dụng khách duy nhất 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 chứng chỉ/khóa đầ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 chính:

  1. mkdir -p ~/client-configs/keys

Vì bạn sẽ lưu trữ các cặp chứng chỉ/khóa và tệp cấu hình của khách hàng trong thư mục này, nên 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:

  1. 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-reqnopass, cùng với tên chung cho máy khách:

  1. cd ~/easy-rsa
  2. ./easyrsa gen-req client1 nopass

Nhấn ENTER để xác nhận tên chung. Sau đó, sao chép tệp client1.key vào thư mục ~/client-configs/keys/ mà bạn đã tạo trước đó:

  1. cp pki/private/client1.key ~/client-configs/keys/

Tiếp theo, chuyển tệp client1.req sang Máy chủ CA của bạn bằng phương pháp bảo mật:

  1. scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

Bây giờ hãy đăng nhập vào Máy chủ CA của bạn. Sau đó, điều hướng đến thư mục EasyRSA và nhập yêu cầu chứng chỉ:

  1. cd ~/easy-rsa
  2. ./easyrsa import-req /tmp/client1.req client1

Tiếp theo, hãy ký vào yêu cầu giống như cách bạn đã làm đối với máy chủ ở bước trước. Tuy nhiên, lần này, hãy đảm bảo chỉ định loại yêu cầu của client:

  1. ./easyrsa sign-req client client1

Khi được nhắc, hãy nhập yes để xác nhận rằng bạn định ký vào yêu cầu chứng chỉ và yêu cầu đó đến từ một nguồn đáng tin cậy:

Output
Type 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.

Thao tác này sẽ tạo 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ủ:

  1. scp pki/issued/client1.crt sammy@your_server_ip:/tmp

Quay lại máy chủ OpenVPN của bạn, sao chép chứng chỉ ứng dụng khách vào thư mục ~/client-configs/keys/:

  1. cp /tmp/client1.crt ~/client-configs/keys/

Tiếp theo, sao chép các tệp ca.crtta.key vào thư mục ~/client-configs/keys/ và đặt các quyền thích hợp cho sudo user của bạn:

  1. cp ~/easy-rsa/ta.key ~/client-configs/keys/
  2. sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
  3. sudo chown sammy.sammy ~/client-configs/keys/*

Cùng với đó, 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ủ OpenVPN của bạn. Vẫn còn một số hành động cần được thực hiện với những tệp này, nhưng những hành động đó sẽ đến ở bước sau. Hiện tại, bạn có thể chuyển sang cấu hình OpenVPN.

Bước 7 — Cấu hình OpenVPN

Giống như nhiều công cụ nguồn mở được sử dụng rộng rãi khác, OpenVPN có sẵn nhiều tùy chọn cấu hình để tùy chỉnh máy chủ cho các nhu cầu cụ thể của bạn. Trong phần này, chúng tôi sẽ cung cấp hướng dẫn về cách thiết lập cấu hình máy chủ OpenVPN dựa trên một trong các tệp cấu hình mẫu có trong tài liệu của phần mềm này.

Đầu tiên, sao chép tệp mẫu server.conf làm điểm bắt đầu cho tệp cấu hình của riêng bạn:

  1. sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
  2. sudo gunzip /etc/openvpn/server/server.conf.gz

Mở tệp mới để chỉnh sửa bằng trình soạn thảo văn bản bạn chọn. Chúng tôi sẽ sử dụng nano trong ví dụ của mình:

  1. sudo nano /etc/openvpn/server/server.conf

Chúng ta sẽ cần thay đổi một vài dòng trong tệp này. Trước tiên, hãy tìm phần HMAC của cấu hình bằng cách tìm kiếm lệnh tls-auth. Dòng này sẽ được bật theo mặc định. Nhận xét nó bằng cách thêm một ; đến đầu dòng. Sau đó, thêm một dòng mới sau nó chỉ chứa giá trị tls-crypt ta.key:

/etc/openvpn/server/server.conf
;tls-auth ta.key 0 # This file is secret
tls-crypt ta.key

Tiếp theo, tìm phần về mật mã bằng cách tìm các dòng cipher. Giá trị mặc định được đặt thành AES-256-CBC, tuy nhiên, mật mã AES-256-GCM cung cấp mức mã hóa, hiệu suất tốt hơn và được hỗ trợ tốt trong các máy khách OpenVPN cập nhật. Chúng tôi sẽ nhận xét giá trị mặc định bằng cách thêm ký ; vào đầu dòng này, sau đó chúng tôi sẽ thêm một dòng khác sau dòng chứa giá trị cập nhật của AES-256-GCM:

/etc/openvpn/server/server.conf
;cipher AES-256-CBC
cipher AES-256-GCM

Ngay sau dòng này, hãy thêm một lệnh auth để chọn thuật toán phân loại thông báo HMAC. Đối với điều này, SHA256 là một lựa chọn tốt:

/etc/openvpn/server/server.conf
auth SHA256

Tiếp theo, tìm dòng chứa chỉ thị dh, định nghĩa các tham số Diffie-Hellman. Vì chúng tôi đã thiết lập cấu hình tất cả các chứng chỉ để sử dụng Elliptic Curve Cryptography nên không cần tệp gốc Diffie-Hellman. Nhận xét dòng hiện có giống như dh dh2048.pem hoặc dh dh.pem. 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ủ ví dụ. Sau đó thêm một dòng sau nó với nội dung dh none:

/etc/openvpn/server/server.conf
;dh dh2048.pem
dh none

Tiếp theo, chúng tôi muốn OpenVPN chạy mà không có đặc quyền khi nó đã bắt đầu, vì vậy chúng tôi cần yêu cầu nó chạy với người dùng nobody và nhóm nogroup. Để kích hoạt tính năng này, hãy tìm và bỏ ghi chú user nobodygroup nogroup bằng cách xóa ký ; từ đầu mỗi dòng:

/etc/openvpn/server/server.conf
user nobody
group nogroup

(Tùy chọn) Đẩy các thay đổi DNS để chuyển hướng tất cả lưu lượng truy cập qua VPN

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

Để bắt đầu, tìm và bỏ ghi chú dòng chứa push "redirect-gateway def1 bypass-dhcp". Làm điều này sẽ yêu cầu khách hàng của bạn chuyển hướng tất cả lưu lượng truy cập của nó thông qua Máy chủ OpenVPN của bạn. Xin lưu ý rằng việc bật chức năng này có thể gây ra sự cố kết nối với các dịch vụ mạng khác, chẳng hạn như SSH:

/etc/openvpn/server/server.conf
push "redirect-gateway def1 bypass-dhcp"

Ngay bên dưới dòng này, tìm phần tùy chọn dhcp. Một lần nữa, loại bỏ ; từ đầu của cả hai dòng để bỏ ghi chú chúng:

/etc/openvpn/server/server.conf
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Những dòng này sẽ yêu cầu khách hàng của bạn sử dụng trình phân giải OpenDNS miễn phí tại các địa chỉ IP được liệt kê. Nếu bạn thích các trình phân giải DNS khác, bạn có thể thay thế chúng thay cho các IP được đánh dấu.

Điều này sẽ hỗ trợ khách hàng thiết lập cấu hình lại cài đặt DNS của họ để sử dụng đường hầm VPN làm cổng mặc định.

(Tùy chọn) Đ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 do môi trường mạng hạn chế mà máy khách của bạn có thể sử dụng, 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 cho phép thông qua các quy tắc tường lửa.

Để thay đổi OpenVPN nghe trên cổng 443, hãy mở tệp server.conf và tìm dòng giống như sau:

/etc/openvpn/server/server.conf
port 1194

Chỉnh sửa nó để cổng là 443:

/etc/openvpn/server/server.conf
# Optional!
port 443

Thông thường, giao thức cũng bị giới hạn ở cổng đó. Nếu vậy, hãy tìm dòng proto bên dưới dòng port và thay đổi giao thức từ udp thành tcp:

/etc/openvpn/server/server.conf
# Optional!
proto tcp

Nếu bạn chuyển giao thức sang TCP, bạn sẽ cần thay đổi giá trị của chỉ thị explicit-exit-notify từ 1 thành 0, vì chỉ thị này chỉ được sử dụng bởi UDP. Không làm như vậy trong khi sử dụng TCP sẽ gây ra lỗi khi bạn khởi động dịch vụ OpenVPN.

Tìm dòng explicit-exit-notify ở cuối tệp và thay đổi giá trị thành 0:

/etc/openvpn/server/server.conf
# Optional!
explicit-exit-notify 0

Nếu bạn không có nhu cầu sử dụng một cổng và giao thức khác, tốt nhất là giữ nguyên các cài đặt này.

(Tùy chọn) Trỏ tới 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 server trước đó, hãy sửa đổi các dòng certkey trong tệp cấu hình server.conf để chúng trỏ đến các tệp .crt.key thích hợp. Nếu bạn đã sử dụng tên mặc định, server, thì tên này đã được đặt chính xác:

/etc/openvpn/server/server.conf
cert server.crt
key server.key

Khi bạn hoàn tất, hãy lưu và đóng tệp.

Bây giờ bạn đã hoàn tất việc thiết lập cấu hình cài đặt chung cho OpenVPN của mình. Trong bước tiếp theo, chúng tôi sẽ tùy chỉnh các tùy chọn kết nối mạng của máy chủ.

Bước 8 — Điều chỉnh cấu hình mạng máy chủ OpenVPN

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 qua VPN. Đầu tiên trong số này là IP forwarding, một phương pháp để xác định nơi lưu lượng IP sẽ được định tuyến. Điều này rất cần thiết cho 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ủ OpenVPN của bạn, hãy mở tệp /etc/sysctl.conf bằng nano hoặc trình chỉnh sửa ưa thích của bạn:

  1. sudo nano /etc/sysctl.conf

Sau đó thêm dòng sau vào cuối tệp:

/etc/sysctl.conf
net.ipv4.ip_forward = 1

Lưu và đóng tệp khi bạn hoàn tất.

Để đọc tệp và tải các giá trị mới cho phiên hiện tại, hãy nhập:

  1. sudo sysctl -p
Output
net.ipv4.ip_forward = 1

Bây giờ máy chủ OpenVPN của bạn sẽ có thể chuyển tiếp lưu lượng truy cập đến từ thiết bị ethernet này sang thiết bị ethernet khác. Cài đặt này đảm bảo máy chủ có thể hướng lưu lượng truy cập từ các máy khách kết nối trên giao diện VPN ảo qua các thiết bị ethernet vật lý khác của nó. 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 thông qua địa chỉ IP của máy chủ và địa chỉ IP công cộng của máy khách của bạn sẽ bị ẩn một cách hiệu quả.

Trong bước tiếp theo, bạn sẽ cần thiết lập cấu hình một số quy tắc tường lửa để đảm bảo rằng lưu lượng truy cập đến và đi từ máy chủ OpenVPN của bạn diễn ra bình thường.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời