Hướng dẫn cài đặt openvpn server trên ubuntu

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ê.

Show

    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.

    Để 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

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

    9 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 đầ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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    0 để 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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    1:

    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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    2 mà gói đã cài đặt vào thư mục

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    1 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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    4 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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    4 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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    6:

    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.

    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à

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    7 với một số giá trị mặc định. Trước tiên, bạn sẽ

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    8 vào thư mục

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    4, sau đó bạn sẽ tạo và chỉnh sửa tệp

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    7 bằng cách sử dụng

    1. ./easyrsa init-pki

    1 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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    7 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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    7, 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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    2 với tùy chọn

    1. ./easyrsa init-pki

    5. 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â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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    1 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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    2 với tùy chọn

    1. ./easyrsa init-pki

    8 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à

    1. ./easyrsa init-pki

    9. Hãy chắc chắn bao gồm cả tùy chọn

    1. cd ~/easy-rsa

    0. 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

    1. ./easyrsa init-pki

    9 ở đâ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

    1. cd ~/easy-rsa

    2, 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

    1. cd ~/easy-rsa

    3 sau đó để trỏ đến đúng tệp

    1. cd ~/easy-rsa

    4 và

    1. cd ~/easy-rsa

    5.

    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

    1. cd ~/easy-rsa

    6. Sao chép khóa máy chủ vào thư mục

    1. cd ~/easy-rsa

    7:

    1. mkdir ~/easy-rsa

    0

    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 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ỉ

    1. ./easyrsa init-pki

    9 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ỉ

    1. cd ~/easy-rsa

    6 sang máy chủ CA để ký:

    1. mkdir ~/easy-rsa

    1

    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ẽ

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    8 vào thư mục

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    1 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

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    2:

    1. mkdir ~/easy-rsa

    2

    1. mkdir ~/easy-rsa

    3

    Tiếp theo, ký yêu cầu bằng cách chạy tập lệnh

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    2 với tùy chọn

    1. ./easyrsa gen-req server nopass

    4, tiếp theo là loại yêu cầu và Common Name. Loại yêu cầu có thể là

    1. ./easyrsa gen-req server nopass

    5 hoặc

    1. ./easyrsa init-pki

    9. 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

    1. ./easyrsa init-pki

    9:

    1. mkdir ~/easy-rsa

    4

    Ở đầ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

    1. ./easyrsa gen-req server nopass

    8 rồi nhấn

    1. ./easyrsa gen-req server nopass

    9 để xác nhận:

    1. mkdir ~/easy-rsa

    5

    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

    
    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
    

    0 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

    
    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
    

    0 và

    
    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
    

    2 từ máy chủ CA sang máy chủ OpenVPN:

    1. mkdir ~/easy-rsa

    6

    Bây giờ, hãy quay lại máy chủ OpenVPN của bạn, sao chép các tệp từ

    
    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
    

    3 sang

    1. cd ~/easy-rsa

    7:

    1. mkdir ~/easy-rsa

    7

    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ủ.

    Để 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ị

    
    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
    

    5 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

    
    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
    

    5, hãy chạy phần sau trên máy chủ OpenVPN trong thư mục

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    1:

    1. mkdir ~/easy-rsa

    8

    Kết quả sẽ là một tệp có tên

    
    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
    

    8. Sao chép nó vào thư mục

    
    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
    

    9:

    1. mkdir ~/easy-rsa

    9

    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.

    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à

    1. mkdir ~/easy-rsa

    00.

    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. ln -s /usr/share/easy-rsa/* ~/easy-rsa/

    0

    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. ln -s /usr/share/easy-rsa/* ~/easy-rsa/

    1

    Tiếp theo, điều hướng trở lại thư mục EasyRSA và chạy tập lệnh

    set_var EASYRSA_ALGO "ec"
    set_var EASYRSA_DIGEST "sha512"
    

    2 với các tùy chọn

    1. ./easyrsa init-pki

    8 và

    1. cd ~/easy-rsa

    0, cùng với tên chung cho máy khách:

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

    2

    Nhấn

    1. ./easyrsa gen-req server nopass

    9 để xác nhận tên chung. Sau đó, sao chép tệp

    1. mkdir ~/easy-rsa

    05 vào thư mục

    1. mkdir ~/easy-rsa

    06 mà bạn đã tạo trước đó:

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

    3

    Tiếp theo, chuyển tệp

    1. mkdir ~/easy-rsa

    07 sang Máy chủ CA của bạn bằng phương pháp bảo mật:

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

    4

    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. ln -s /usr/share/easy-rsa/* ~/easy-rsa/

    5

    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

    1. ./easyrsa gen-req server nopass

    5:

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

    6

    Khi được nhắc, hãy nhập

    1. ./easyrsa gen-req server nopass

    8 để 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:

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

    7

    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

    1. mkdir ~/easy-rsa

    10. Chuyển tệp này trở lại máy chủ:

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

    8

    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

    1. mkdir ~/easy-rsa

    06:

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

    9

    Tiếp theo, sao chép các tệp

    
    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
    

    2 và

    
    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
    

    8 vào thư mục

    1. mkdir ~/easy-rsa

    06 và đặt các quyền thích hợp cho sudo user của bạn:

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

    0

    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.

    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

    1. mkdir ~/easy-rsa

    15 làm điểm bắt đầu cho tệp cấu hình của riêng bạn:

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

    1

    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

    1. ./easyrsa init-pki

    1 trong ví dụ của mình:

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

    2

    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

    1. mkdir ~/easy-rsa

    17 của cấu hình bằng cách tìm kiếm lệnh

    1. mkdir ~/easy-rsa

    18. 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

    1. mkdir ~/easy-rsa

    19 đến đầu dòng. Sau đó, thêm một dòng mới sau nó chỉ chứa giá trị

    1. mkdir ~/easy-rsa

    20:

    /etc/openvpn/server/server.conf

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

    3

    Tiếp theo, tìm phần về mật mã bằng cách tìm các dòng

    1. mkdir ~/easy-rsa

    21. Giá trị mặc định được đặt thành

    1. mkdir ~/easy-rsa

    22, tuy nhiên, mật mã

    1. mkdir ~/easy-rsa

    23 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ý

    1. mkdir ~/easy-rsa

    19 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

    1. mkdir ~/easy-rsa

    23:

    /etc/openvpn/server/server.conf

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

    4

    Ngay sau dòng này, hãy thêm một lệnh

    1. mkdir ~/easy-rsa

    26 để chọn thuật toán phân loại thông báo HMAC. Đối với điều này,

    1. mkdir ~/easy-rsa

    27 là một lựa chọn tốt:

    /etc/openvpn/server/server.conf

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

    5

    Tiếp theo, tìm dòng chứa chỉ thị

    1. mkdir ~/easy-rsa

    28, đị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ư

    1. mkdir ~/easy-rsa

    29 hoặc

    1. mkdir ~/easy-rsa

    30. 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

    1. mkdir ~/easy-rsa

    31:

    /etc/openvpn/server/server.conf

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

    6

    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ú

    1. mkdir ~/easy-rsa

    32 và

    1. mkdir ~/easy-rsa

    33 bằng cách xóa ký

    1. mkdir ~/easy-rsa

    19 từ đầu mỗi dòng:

    /etc/openvpn/server/server.conf

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

    7

    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

    1. mkdir ~/easy-rsa

    35. 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

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

    8

    Ngay bên dưới dòng này, tìm phần tùy chọn

    1. mkdir ~/easy-rsa

    36. Một lần nữa, loại bỏ

    1. mkdir ~/easy-rsa

    19 từ đầu của cả hai dòng để bỏ ghi chú chúng:

    /etc/openvpn/server/server.conf

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

    9

    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.

    Theo mặc định, máy chủ OpenVPN sử dụng cổng

    1. mkdir ~/easy-rsa

    38 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

    1. mkdir ~/easy-rsa

    39. 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

    1. mkdir ~/easy-rsa

    40 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

    1. mkdir ~/easy-rsa

    40, hãy mở tệp

    1. mkdir ~/easy-rsa

    15 và tìm dòng giống như sau:

    /etc/openvpn/server/server.conf

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

    0

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

    /etc/openvpn/server/server.conf

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

    1

    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

    1. mkdir ~/easy-rsa

    43 bên dưới dòng

    1. mkdir ~/easy-rsa

    39 và thay đổi giao thức từ

    1. mkdir ~/easy-rsa

    45 thành

    1. mkdir ~/easy-rsa

    46:

    /etc/openvpn/server/server.conf

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

    2

    Nếu bạn chuyển giao thức sang TCP, bạn sẽ cần thay đổi giá trị của chỉ thị

    1. mkdir ~/easy-rsa

    47 từ

    1. mkdir ~/easy-rsa

    48 thành

    1. mkdir ~/easy-rsa

    49, 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

    1. mkdir ~/easy-rsa

    47 ở cuối tệp và thay đổi giá trị thành

    1. mkdir ~/easy-rsa

    49:

    /etc/openvpn/server/server.conf

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

    3

    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.

    Nếu bạn đã chọn một tên khác trong lệnh

    1. mkdir ~/easy-rsa

    52 trước đó, hãy sửa đổi các dòng

    1. mkdir ~/easy-rsa

    53 và

    1. mkdir ~/easy-rsa

    54 trong tệp cấu hình

    1. mkdir ~/easy-rsa

    15 để chúng trỏ đến các tệp

    1. cd ~/easy-rsa

    4 và

    1. cd ~/easy-rsa

    5 thích hợp. Nếu bạn đã sử dụng tên mặc định,

    1. ./easyrsa init-pki

    9, thì tên này đã được đặt chính xác:

    /etc/openvpn/server/server.conf

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

    4

    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ủ.

    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

    1. mkdir ~/easy-rsa

    59 bằng

    1. ./easyrsa init-pki

    1 hoặc trình chỉnh sửa ưa thích của bạn:

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

    5

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

    /etc/sysctl.conf

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

    6

    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. cd ~/easy-rsa
    2. nano vars

    7

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

    8

    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.