Bạn có thể đã hiểu tầm quan trọng của một VPN tốt trong việc duy trì tính bảo mật và quyền riêng tư cho thông tin liên lạc di động của bạn.
Cho dù bạn cần sử dụng điện thoại để giao dịch ngân hàng qua kết nối Wi-Fi ở sân bay công cộng hay quán cà phê hay bạn lo lắng về việc có người nghe lén các tương tác trực tuyến của mình, mã hóa đường hầm mà một VPN tốt mang lại cho bạn có thể là vô giá.
Tuy nhiên, mẹo ở đây là tìm một VPN thực sự "tốt" – vừa tiện lợi vừa có giá cả phải chăng.
Có rất nhiều dịch vụ VPN thương mại hiện có và việc định cấu hình một trong những dịch vụ đó cho điện thoại hoặc máy tính xách tay của bạn thường khá đơn giản.
Nhưng những dịch vụ như vậy có hai nhược điểm tiềm ẩn:chúng thường đắt tiền, với khoản thanh toán trung bình khoảng 10 USD hàng tháng và bạn không bao giờ có thể chắc chắn 100% rằng chúng không (vô tình hay cố ý) rò rỉ hoặc sử dụng sai mục đích dữ liệu của bạn.
Ngoài ra, các VPN rẻ hơn thường hạn chế việc sử dụng dữ liệu của bạn và số lượng thiết bị bạn có thể kết nối.
Nếu bạn thích xem các phiên bản video hướng dẫn để bổ sung cho việc học của mình, vui lòng theo dõi tại đây:
WireGuard mang lại điều gì
Nhưng nếu bạn tình cờ có một máy chủ Linux dựa trên đám mây đang chạy thì việc xây dựng WireGuard VPN có thể là một cách đơn giản và miễn phí để bổ sung một số quyền riêng tư và bảo mật nghiêm túc, không bị xâm phạm cho cuộc sống của bạn.
Nếu bạn định giới hạn VPN chỉ ở các thiết bị do bạn và một vài người bạn sở hữu, có thể bạn sẽ không bao giờ nhận thấy bất kỳ tải tài nguyên bổ sung nào trên máy chủ của mình. Ngay cả khi bạn phải bắt đầu và trả tiền cho một phiên bản dự trữ AWS EC2 t2.micro chuyên dụng, chi phí hàng năm vẫn sẽ rẻ hơn đáng kể so với hầu hết các VPN thương mại. Và, như một phần thưởng, bạn sẽ có toàn quyền kiểm soát dữ liệu của mình.
Ngay bây giờ tôi sẽ chỉ cho bạn cách hoạt động của tất cả những thứ đó bằng phần mềm WireGuard nguồn mở trên máy chủ Ubuntu Linux.
Tại sao WireGuard? Bởi vì nó thực sự dễ sử dụng, được thiết kế để có khả năng chống tấn công đặc biệt và nó hoạt động rất tốt nên gần đây nó đã được tích hợp vào chính nhân Linux.
Công việc thực tế để thực hiện điều này thực sự sẽ chỉ mất năm phút - hoặc ít hơn. Tuy nhiên, việc lên kế hoạch cho mọi việc, khắc phục sự cố không mong muốn và nếu cần, khởi chạy máy chủ mới có thể tốn thêm thời gian đáng kể cho dự án.
Cách thiết lập môi trường của bạn
Trước hết, bạn cần mở cổng UDP 51820 trong bất kỳ tường lửa nào bạn đang sử dụng. Sau đây là cách tìm kiếm nhóm bảo mật được liên kết với phiên bản AWS EC2:
Bây giờ, trên máy chủ Linux, sử dụng shell sudo, chúng ta sẽ bắt đầu bằng cách cài đặt các gói WireGuard và resolvconf.
Về mặt kỹ thuật, có thể chúng tôi sẽ không cần độ phân giải ở đây, nhưng vì đó là thứ bạn cần nếu muốn thiết lập máy Linux làm máy khách của WireGuard Tôi cũng nghĩ tôi sẽ ném nó vào đây.
apt install wireguard resolvconf
Cách tạo khóa mã hóa
wg genkey lệnh tạo khóa mã hóa riêng mới và lưu nó dưới dạng tệp trong thư mục /etc/wireguard. Thư mục này được tạo tự động khi chúng tôi cài đặt WireGuard.
chmod lệnh đặt các quyền hạn chế thích hợp cho tệp khóa riêng đó.
Giống như mọi thứ trong Linux, có nhiều cách khác để thực hiện việc này nhưng chỉ cần đảm bảo bạn làm đúng.
wg genkey | sudo tee /etc/wireguard/private.key
chmod go= /etc/wireguard/private.key
Tiếp theo, chúng ta sẽ sử dụng giá trị của khóa riêng để tạo khóa chung phù hợp – khóa này cũng sẽ được lưu vào thư mục /etc/wireguard. Mục tiêu là thêm công khai của máy chủ key vào cấu hình WireGuard trên tất cả các thiết bị khách mà chúng tôi sẽ sử dụng, sau đó thêm khóa chung của các máy khách đó vào cấu hình máy chủ tại đây.
Khóa riêng tư không bao giờ được rời khỏi máy mà chúng được tạo ra – và phải luôn được bảo vệ cẩn thận.
cat /etc/wireguard/private.key | wg pubkey | sudo tee
Cách định cấu hình máy chủ WireGuard
Bây giờ chúng ta đã sẵn sàng tạo một tập tin cấu hình máy chủ. Theo quy ước, tôi sẽ đặt tên tệp là wg0.conf, nhưng bạn có thể đặt cho nó bất kỳ tên nào bạn muốn. Bạn cũng có thể có nhiều cấu hình (với các tên tệp khác nhau) cùng một lúc.
Cấu hình của chúng ta sẽ như sau:
[Interface]
Address = 10.5.5.1/24
ListenPort = 51820
# Use your own private key, from /etc/wireguard/privatekey
PrivateKey = your_key
[Peer]
# Workstation public key
PublicKey = your_key
# VPN client's IP address in the VPN
AllowedIPs = 10.5.5.2/32
[Peer]
# laptop public key
PublicKey = your_key
# VPN client's IP address in the VPN
AllowedIPs = 10.5.5.3/32
Lưu ý rằng tệp này có ba phần:Giao diện và hai phần ngang hàng. Phần Giao diện xác định địa chỉ mạng NAT riêng mà máy chủ của chúng tôi sẽ sử dụng. Đó là địa chỉ riêng mà khách hàng sẽ kết nối – tất nhiên là sau lần đầu tiên yêu cầu quyền truy cập thông qua địa chỉ IP công cộng của máy chủ.
Bạn không cần phải tuân theo địa chỉ của tôi, miễn là bạn sử dụng dải IP riêng hợp lệ không chồng lên bất kỳ khối mạng nào đang được máy chủ hoặc máy khách của bạn sử dụng.
Để phù hợp với quy tắc nhóm bảo mật UDP mà tôi đã thiết lập trước đó trong AWS, tôi đang xác định ListenPort là 51820. Nhưng tôi có thể chọn một địa chỉ khác để tăng cường bảo mật hơn một chút nếu muốn.
Cuối cùng, tôi sẽ dán Khóa riêng của máy chủ làm giá trị PrivateKey vì vậy WireGuard sẽ có thể xác thực các yêu cầu gửi đến của khách hàng.
peer đầu tiên phần này không chứa gì hơn phần công khai khóa và địa chỉ IP riêng được gán của một khách hàng. peer thứ hai phần này thực hiện tương tự đối với máy khách thứ hai.
Lấy các khóa công khai đó từ máy khách là nhiệm vụ thủ công nhất trong toàn bộ quá trình thiết lập này. Tuy nhiên, vì đây là VPN của riêng bạn nên bạn thường có thể tìm cách sao chép và dán trực tiếp vào cấu hình máy chủ của mình để không cần phải đau đầu nhập toàn bộ nội dung vào.
Đó phải là tất cả. Tôi sẽ sử dụng wg-quick lệnh đưa VPN vào cuộc sống. up yêu cầu WireGuard đọc cấu hình wg0.conf mà chúng tôi vừa tạo và sử dụng nó để xây dựng giao diện VPN mới.
wg-quick up wg0
Đang chạy wg sẽ cho chúng ta thấy rằng nó có tác dụng. Cuối cùng, tôi sẽ chạy systemctl enable để yêu cầu Linux tự động tải giao diện WireGuard này mỗi khi máy chủ khởi động lại.
systemctl enable wg-quick@wg0
Cách định cấu hình ứng dụng khách WireGuard
Đó là tất cả những gì chúng ta cần từ máy chủ. Việc thiết lập thiết bị khách của bạn với WireGuard sẽ dễ dàng hơn nhiều hoặc ít nhiều giống nhau.
cái đó có tác dụng gì nghĩa là gì? Chà, nếu bạn đang làm việc với Windows, macOS, Android hoặc iOS thì sẽ có các liên kết đến ứng dụng GUI có sẵn từ trang wireguard.com/install này. Những ứng dụng đó sẽ tạo cặp khóa cho bạn. Bạn chỉ cần nhập địa chỉ IP hoặc miền của máy chủ và khóa chung của nó. Sau đó, bạn sẽ lấy khóa chung của máy khách và thêm nó vào tệp wg0.conf của máy chủ theo cách tôi đã chỉ cho bạn trước đó.
Tuy nhiên, nếu bạn muốn thêm máy khách Linux hoặc PC hoặc máy tính xách tay thì việc này phức tạp hơn một chút. Về cơ bản, bạn sẽ làm theo tất cả các bước bạn đã thấy đối với cấu hình máy chủ, bao gồm cả việc tạo khóa. Thậm chí bạn sẽ tạo một tệp cấu hình có tên wg0-conf (nếu đó là tên bạn thích). Nhưng tệp cấu hình đó sẽ trông như sau:
[Interface]
# The address your computer will use on the VPN
Address = 10.5.5.2/32
DNS = 8.8.8.8
# Load your privatekey from file
PostUp = wg set %i private-key /etc/wireguard/privatekey
# Also ping the vpn server to ensure the tunnel is initialized
PostUp = ping -c1 10.47.47.1
[Peer]
# VPN server's wireguard public key
PublicKey = your_key
# Public IP address of your VPN server (USE YOURS!)
Endpoint = 54.160.21.183:51820
# 10.0.0.0/24 is the VPN subnet
AllowedIPs = 10.47.47.0/24
# PersistentKeepalive = 25
Interface phần đại diện cho máy khách lần này, trong khi phần Peer phần bên dưới đề cập đến máy chủ. Hãy bắt đầu với Interface . Địa chỉ IP riêng phải khớp với địa chỉ bạn cung cấp cho ứng dụng khách cụ thể này trong cấu hình trên máy chủ.
Nếu bạn cần ứng dụng khách của mình bỏ qua máy chủ DNS cục bộ, bạn có thể chỉ định máy chủ DNS tùy chỉnh tại đây. Cái này là cái do Google cung cấp.
Thay vì mã hóa cứng khóa riêng cục bộ vào tệp cấu hình như cách chúng tôi đã làm trên máy chủ, bạn có thể yêu cầu WireGuard đọc tệp khóa riêng bất cứ khi nào nó tải. Đây có lẽ là một phương pháp bảo mật tốt nhất – và chúng tôi cũng có thể dễ dàng thực hiện điều đó trên máy chủ. Cuối cùng, tập lệnh cấu hình sẽ kiểm tra kết nối của chúng tôi với PostUp lệnh ping.
Peer – hoặc máy chủ – cấu hình yêu cầu công khai của máy chủ key, được thêm vào đây.
Endpoint là nơi bạn cho WireGuard biết nơi tìm máy chủ. Sẽ không có gì hiệu quả nếu không có cái này! Điều đó sẽ yêu cầu IP công cộng của máy chủ – hoặc đó là tên miền – theo sau là cổng bạn đã chọn. Một lần nữa, 51820 là mặc định của WireGuard.
Cuối cùng là AllowedIPs cài đặt xác định phạm vi địa chỉ mạng bạn sẽ sử dụng và PersistentKeepalive tùy chọn giá trị có thể ngăn chặn việc rớt kết nối.
Bạn khởi chạy WireGuard trên máy khách giống hệt lý do bạn thực hiện trên máy chủ, sử dụng wg-quick up wg0 . Tuy nhiên, một lần nữa, tất cả các bước đó sẽ chỉ cần thiết đối với máy khách Linux. Bạn có thể sử dụng ứng dụng cho các nền tảng khác.
Kết thúc
Vì vậy, đó là điều đó. Như tôi đã nói, một VPN hoạt động được chỉ trong khoảng năm phút. Giờ đây bạn đã có ít lý do hơn để bảo vệ quyền riêng tư trực tuyến và bảo mật thông tin liên lạc của mình.
Để biết thêm về công nghệ, vui lòng đăng ký kênh YouTube của tôi và khi bạn có thời gian, hãy xem nhiều sách và khóa học về Linux, bảo mật, phân tích dữ liệu cũng như AWS có sẵn trên trang web bootstrap-it.com của tôi.
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu