Mạng riêng ảo (VPN) cho phép bạn ẩn các truyền dữ liệu trực tuyến và tăng cường bảo mật trong khi duyệt Internet từ những nơi công cộng. Nhiều nhà cung cấp dịch vụ trực tuyến cung cấp cả tùy chọn VPN miễn phí và trả phí để bạn sử dụng. Tuy nhiên, ngay cả các kế hoạch trả tiền tốt nhất có thể không đáng tin cậy hoặc chậm ở lần.

Nếu chỉ bạn mới có thể tạo VPN của riêng bạn giữa máy tính di động và máy tính ở nhà của bạn.

Trên thực tế, quá trình đó dễ dàng hơn bạn nghĩ. Hôm nay chúng ta sẽ thảo luận cách bạn có thể sử dụng OpenVPN để tạo kết nối an toàn giữa máy khách và máy chủ trên máy Linux.

Hãy nhớ rằng chúng ta sẽ tạo một cấu hình định tuyến và không phải là một cấu hình cầu nối, điều này sẽ tốt cho hầu hết các trường hợp sử dụng. Người dùng Windows có thể theo dõi bằng cách đọc tài liệu OpenVPN, bắt đầu bằng phần thiết lập Tổ chức phát hành chứng chỉ. Các lệnh được sử dụng trong Windows sẽ giống với các lệnh được hiển thị bên dưới.

Những gì bạn cần

Bạn sẽ cần hai máy tính - một là máy chủ trong khi máy kia là máy khách. Máy chủ có thể là máy tính để bàn tại nhà của bạn hoặc một phiên bản Linux từ DigitalOcean hoặc Linode. Máy khách là máy tính mà bạn đang sử dụng thường xuyên. Khi hướng dẫn này được thực hiện trên Linux, cả hai máy tính đều cần chạy Linux.

Lưu ý : Trong hướng dẫn này, chúng tôi sẽ sử dụng Ubuntu làm bản phân phối cho cả máy chủ và máy khách.

Cài đặt OpenVPN

Để bắt đầu, bạn cần phải cài đặt OpenVPN và Easy-RSA trên máy chủ của bạn. Sau đó cài đặt OpenVPN trên máy khách của bạn.

Trên Ubuntu, bạn nên cài đặt Easy-RSA từ trang Github này. Ubuntu bao gồm Easy-RSA phiên bản 2 trong kho của nó. Liên kết Github cung cấp Easy-RSA phiên bản 3, theo các lệnh mà tôi sẽ sử dụng trong bài viết này.

 sudo apt-get cài đặt openvpn git clone https://github.com/OpenVPN/easy-rsa.git 

Trong thư mục bạn đã sao chép kho lưu trữ Github vào, sao chép thư mục “easyrsa3” nó chứa vào “/ etc / easy-rsa /.”

 sudo mkdir / etc / easy-rsa sudo cp -r ./easyrsa3/* / etc / easy-rsa / 

Cơ sở hạ tầng khóa công khai (PKI)

OpenVPN sử dụng Cơ sở hạ tầng khóa công khai (PKI) để thiết lập danh tính của máy chủ và máy khách để những thực thể riêng biệt này có thể nói chuyện với nhau. PKI sử dụng một Certificate Certificate Authority (CA) chính cùng với các chứng chỉ cá nhân và các khóa riêng cho mỗi máy chủ và máy khách.

CA phải ký chứng chỉ máy chủ và máy khách. OpenVPN sau đó kiểm tra xem máy chủ có xác thực danh tính của từng máy khách hay không và đồng thời, mỗi máy khách sẽ kiểm tra danh tính của máy chủ.

Việc thiết lập ở đây phức tạp hơn bạn có thể tìm thấy các kết nối kiểu PPTP, nhưng nó cung cấp bảo mật tốt hơn cho người dùng và cho phép máy chủ tự do chấp nhận hoặc từ chối các kết nối máy khách đến được yêu cầu.

Tạo chứng chỉ CA

Để bảo mật chặt hơn, máy CA của bạn phải khác với máy chủ của bạn. Đối với ngắn gọn, bài viết này sẽ sử dụng cùng một máy cho cả hai nhiệm vụ. Bạn nên thay đổi thủ tục sao chép tập tin để phù hợp với tình huống của bạn - cho dù đó là sử dụng scp để chuyển mạng hoặc sử dụng một phím USB để di chuyển các tập tin theo cách thủ công.

Lưu ý : nếu bạn sử dụng một máy tính riêng biệt làm CA của mình, bạn sẽ cần phải cài đặt Easy-RSA trên máy đó.

1. Thay đổi thư mục thành “/ etc / easy-rsa /:”

 cd / etc / easy-rsa / 

2. Nếu cần, hãy sao chép “/etc/easy-rsa/vars.example” thành “/ etc / easy-rsa / vars.” Sau đó, mở vars để chỉnh sửa nội dung của nó:

 sudo cp ./vars.example ./vars sudo nano ./vars 

3. Nhập các chi tiết như quốc gia, tỉnh, thành phố, tổ chức và email của bạn. Bỏ ghi chú các dòng được hiển thị ở đây bằng cách xóa dấu “#” ở đầu mỗi dòng.

Khi bạn đã hoàn tất việc chỉnh sửa, hãy lưu (Ctrl + o) và thoát (Ctrl + x).

4. Khởi tạo PKI mới của bạn và tạo cặp khóa của Tổ chức phát hành chứng chỉ mà bạn sẽ sử dụng để ký chứng chỉ máy chủ và máy khách riêng lẻ:

 xuất khẩu EASYRSA = $ (pwd) sudo ./easyrsa init-pki sudo ./easyrsa build-ca 

Sao chép tệp ca.crt bạn vừa tạo vào thư mục máy chủ OpenVPN của bạn. Bạn cũng nên thay đổi chủ sở hữu và nhóm của mình bằng Chown:

 sudo cp /etc/easy-rsa/pki/ca.crt / etc / openvpn / server / sudo chown root: root /etc/openvpn/server/ca.crt 

Tạo chứng chỉ máy chủ và khóa cá nhân

Thay đổi trở lại thư mục Easy-RSA của bạn và tạo chứng chỉ máy chủ và khóa riêng của nó:

 cd / etc / easy-rsa sudo ./easyrsa init-pki sudo ./easyrsa gen-req Tên máy chủ nopass 

Bạn có thể thay đổi "Tên máy chủ" trong lệnh ở trên thành bất kỳ tên nào bạn muốn. Đảm bảo bạn phản ánh thay đổi đó khi bạn sao chép khóa mới của mình vào thư mục máy chủ OpenVPN:

 sudo cp /etc/easy-rsa/pki/private/ServerName.key / etc / openvpn / server / 

Tệp tham số Diffie-Hellman

OpenVPN sử dụng phương thức trao đổi khóa Diffie-Hellman (DH) để trao đổi an toàn các khóa mã hóa trên mạng. Bạn sẽ tạo một tệp tham số DH với lệnh sau:

 sudo openssl dhparam -out /etc/openvpn/server/dh.pem 2048 

Số cuối cùng, 2048, trong lệnh đó cho thấy số lượng bit được sử dụng trong việc tạo tệp. Ví dụ, bạn có thể sử dụng 4096, nhưng sẽ mất nhiều thời gian hơn để tạo tệp và sẽ không cải thiện bảo mật nhiều. Giá trị mặc định là 2048 và giá trị đó là đủ cho hầu hết các trường hợp sử dụng.

Xác thực thư dựa trên băm

OpenVPN cũng sử dụng chữ ký Hash-based Message Authentication (HMAC) để bảo vệ chống lại các lỗ hổng trong bắt tay SSL / TLS. Tạo tệp bằng lệnh này:

 sudo openvpn --genkey --secret /etc/openvpn/server/ta.key 

Tệp khách hàng

Tại thời điểm này, bạn sẽ tạo một số tệp cho máy chủ của mình. Bây giờ là lúc tạo tệp cho khách hàng của bạn. Bạn có thể lặp lại quá trình này nhiều lần cho nhiều khách hàng như bạn cần. Bạn có thể tạo các tệp khách hàng một cách an toàn trên bất kỳ máy tính nào đã cài đặt Easy-RSA.

Nhập thư mục Easy-RSA và khởi tạo lại PKI nếu bạn chưa làm như vậy:

 cd / etc / easy-rsa sudo ./easyrsa init-pki 

Tạo khóa và chứng chỉ ứng dụng khách. Thay đổi thư mục nếu bạn bỏ qua bước trước đó.

 cd / etc / easy-rsa sudo ./easyrsa gen-req ClientName nopass 

Nếu bạn lặp lại quá trình này, bạn không cần phải khởi tạo PKI cho mỗi máy khách mới. Chỉ cần đảm bảo thay đổi “ClientName” thành duy nhất mỗi lần.

Ký chứng chỉ máy chủ và máy khách

CA bây giờ phải ký chứng chỉ máy chủ và máy khách của bạn.

Nếu bạn nhìn vào tập tin “/ etc / easy-rsa / pki / reqs /”, bạn sẽ thấy tất cả các tập tin yêu cầu (.req) Easy-RSA được tạo trong các easyrsa gen-req trước đó.

Trong ảnh chụp màn hình này, chỉ có hai tệp .req. Số của bạn sẽ thay đổi nếu bạn đã thực hiện nhiều hơn một khách hàng trong bước trước đó.

Nếu bạn đã sử dụng một máy CA riêng biệt, bây giờ bạn phải chuyển các tệp .req đó sang CA để ký. Khi đã hoàn tất, hãy chuyển sang thư mục Easy-RSA và ký các tệp của bạn bằng các lệnh sau, đảm bảo phản ánh vị trí thích hợp của từng tên .req và tên của từng máy chủ và máy khách.

 cd / etc / easy-rsa sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ServerName.req Server1 sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ClientName.req Client1 sudo ./easyrsa đăng nhập lại máy chủ Server1 sudo ./easyrsa sign-req client Client1 

Lưu ý rằng bạn sẽ cần phải cung cấp Easy-RSA với một tên khác cho chứng chỉ máy chủ và máy khách của bạn. ServerName.req sẽ được sử dụng ở đây, ví dụ, để tạo Server1.crt.

Bây giờ bạn sẽ tìm thấy hai tệp mới - “/etc/easy-rsa/pki/issued/Server1.crt” và “/etc/easy-rsa/pki/issued/Client1.crt” - bạn sẽ chuyển sang các tệp tương ứng máy (xem trong phần tiếp theo của bài viết này). Bạn có thể xóa bất kỳ tệp .req nào còn lại.

Đi dọc các tệp .CRT

Bây giờ các chứng chỉ đã ký (mỗi .crt) đã sẵn sàng để làm việc cho chủ sở hữu của họ. Di chuyển tệp máy chủ đến vị trí OpenVPN của nó và tạo một thư mục mới cho chứng chỉ ứng dụng khách:

 sudo mv /etc/easy-rsa/pki/issued/Server1.crt / etc / openvpn / server / sudo chown root: root /etc/openvpn/server/Server1.crt sudo mkdir / etc / easy-rsa / pki / signed sudo mv /etc/easy-rsa/pki/issued/Client1.crt / etc / easy-rsa / pki / ký / 

Tạo thư mục “… pki / signed /” ở đây cung cấp cho bạn một vị trí được gắn nhãn để đặt nhiều chứng chỉ ứng dụng khách.

Tệp máy chủ và máy khách được chia sẻ

Bây giờ bạn cần có năm tệp trong thư mục “/ etc / openvpn / server /” của bạn: ca.crt, dh.pem, Server1.crt, ServerName.key và ta.key.

Bạn sẽ cần hai trong số các tệp tương tự đó trong thư mục máy khách OpenVPN của bạn trên máy khách. Sao chép chúng bằng cách sử dụng scp hoặc đĩa flash nếu thích hợp. Sao chép cả “/etc/openvpn/server/ca.crt” và “/etc/openvpn/server/ta.key” vào “/ etc / openvpn / client /.” Của khách hàng của bạn.

Đảm bảo sao chép chứng chỉ ứng dụng khách và khóa của bạn vào cùng một vị trí đó. Sao chép "/etc/easy-rsa/pki/signed/Client1.crt" và "/etc/easy-rsa/pki/private/ClientName.key" vào "/ etc / openvpn / client /." Của khách hàng của bạn Lặp lại quá trình này cho bất kỳ khách hàng bổ sung nào bạn có thể đã tạo.

Đối với bất kỳ máy khách nào, bây giờ bạn sẽ có bốn tệp trong "/ etc / openvpn / client:" Client1.crt, ClientName.key, ca.crt và ta.key.

Tệp cấu hình máy chủ và máy khách

Bước cuối cùng của bạn trước khi bắt đầu VPN là chỉnh sửa các tệp cấu hình cho máy chủ và máy khách. Đầu tiên, định vị các tệp “default server.conf” và “client.conf”. Họ có thể sẽ ở một trong những địa điểm sau:

  • “/ Usr / share / openvpn / example”
  • "/ Usr / share / doc / openvpn / example / sample-config-files /" (các cấu hình Ubuntu nằm ở đây)

Lưu ý : Trên Ubuntu, bạn sẽ cần giải nén tệp “server.conf.gz”. Sử dụng gunzip -d ./server.conf.gz để lấy tệp server.conf từ gói nén.

Sao chép từng tệp cấu hình vào thư mục "/ etc / openvpn / server /" và "/ etc / openvpn / client /" tương ứng.

Trong server.conf thực hiện các thay đổi sau. Đảm bảo tên và vị trí của ca.crt, Server1.crt, ServerName.key và dh.pem của bạn được liệt kê trong tệp cấu hình của bạn. Bạn có thể cần phải sử dụng đường dẫn đầy đủ - như một dòng có dòng chữ “cert /etc/openvpn/server/Server1.crt.”

Thay đổi dòng tls-auth... để đọc tls-crypt ta.key . Một lần nữa, một con đường đầy đủ có thể là cần thiết.

Bỏ ghi chú (loại bỏ dấu ";") khỏi dòng "không ai" và "nhóm không ai".

Đối với khách hàng của bạn, bạn sẽ thực hiện các thay đổi tương tự. Sau khi tạo tệp cấu hình, hãy phản ánh tên và vị trí của ca.crt, Client1.crt, ClientName.key và ta.key của bạn (với cùng di chuyển từ tls-auth... đến tls-crypt... ), chèn tên hoặc địa chỉ IP và cổng máy chủ của bạn.

Thời gian để kết nối

Bây giờ bạn có thể khởi động máy chủ và máy khách của bạn. Đây là một vấn đề đơn giản nếu tất cả mọi thứ ở trên đi theo kế hoạch.

Khởi động máy chủ với:

 openvpn /etc/openvpn/server/server.conf 

và khách hàng với:

 openvpn /etc/openvpn/client/client.conf 

Việc tạo thành công một VPN sẽ hiển thị kết quả đầu ra của khách hàng là "Khởi tạo trình tự hoàn thành" ở cuối đầu ra của nó. Bạn cũng sẽ tìm thấy một loại kết nối mới trong các giao diện mạng có sẵn của bạn.

Ảnh chụp màn hình này hiển thị giao diện "tun0". Đó là những gì máy chủ OpenVPN đã thực hiện. Bạn có thể xem địa chỉ của nó là 10.8.0.1 và ping địa chỉ đó từ máy khách để xác minh kết nối thành công.

Định tuyến lưu lượng truy cập Internet thông qua máy chủ

Tại thời điểm này, bạn có thể muốn truy cập Internet thông qua máy chủ của bạn từ máy khách từ xa của bạn. Để thực hiện việc này, trước tiên bạn cần thay đổi tệp cấu hình máy chủ của mình. Thêm dòng push 'redirect-gateway def1 vào tệp cấu hình máy chủ của bạn.

 echo "push \" chuyển hướng-gateway def1 \ "" | sudo tee -a /etc/openvpn/server/server.conf 

Bạn cũng sẽ cần phải nói với máy chủ của bạn để định tuyến đúng các yêu cầu lưu lượng truy cập Internet của khách hàng. Lệnh này sẽ thay đổi các quy tắc lọc gói Iptables của bạn:

 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 

Nếu bạn chưa thay đổi dòng "server 10.8.0.0 255.255.255.0" trong tệp server.conf của mình, địa chỉ IP trong lệnh đó sẽ hoạt động. Bạn sẽ cần phải thay đổi "eth0" để phù hợp với giao diện ethernet của máy chủ của bạn. Bạn có thể thấy từ các ảnh chụp màn hình trước đó mà máy của tôi sử dụng “enp19s0”.

Tiếp theo, bạn có thể đẩy các thiết lập DNS cho máy khách. Bất kỳ địa chỉ nào mà khách hàng có thể tiếp cận đều có thể bị đẩy. Bạn có thể sử dụng lệnh này làm điểm bắt đầu:

 echo "push \" dhcp-tùy chọn DNS 10.8.0.1 \ "" | sudo tee -a /etc/openvpn/server/server.conf 

Cuối cùng, bạn có thể kích hoạt chuyển tiếp gói trên máy chủ như sau:

 echo 1 | sudo tee / proc / sys / net / ipv4 / ip_forward 

Bây giờ bạn có thể sử dụng ứng dụng khách của mình để truy cập Internet thông qua VPN.

Phần kết luận

Tôi biết đây là một con đường dài. Hy vọng rằng bạn đã tìm thấy thành công trong việc tạo VPN và kết nối Internet một cách an toàn.

Nếu không có gì khác, đây sẽ là một kinh nghiệm học tập tốt cho những gì nó cần để tạo ra một đường hầm kỹ thuật số an toàn. Cảm ơn bạn đã tham gia cùng tôi.