Trước đây mỗi khi cần truy cập vào máy tính chạy Windows ở nhà, mình phải sử dụng WireGuard VPN để kết nối vào mạng LAN. Sau đó sẽ truy cập RDP thông qua Local IP. Ưu điểm của phương pháp này là không cần phải mở port 3389 ra Internet, không sợ bị hack. Tuy nhiên nhược điểm là không thể sử dụng trên máy tính của công ty (vì máy công ty thường không cho cài đặt thêm phần mềm bên ngoài: WireGuard client).
Giải pháp cho vấn đề truy cập RDP bảo mật mà không cần dùng đến VPN là sử dụng Cloudflare Tunnel. Cloudflare sẽ đóng vai trò trung gian xác thực kết nối từ bên ngoài, và sẽ chuyển hướng đến máy tính trong mạng LAN nếu kết nối được xác thực là tin cậy.
Dưới đây là hướng dẫn tạo kết nối bảo mật Remote Desktop sử dụng Cloudflare Tunnel.
I. Yêu cầu chuẩn bị
- Máy tính chạy Windows trong mạng LAN đã được kích hoạt cho phép kết nối RDP từ bên ngoài vào.
- Đã có sẵn tài khoản Cloudflare và biết cách thiết lập Cloudflare Tunnel. Xem bài hướng dẫn dưới đây
Cloudflare Tunnel – Kết nối bảo mật vào mạng nội bộ không cần VPN, không cần mở port
II. Tạo Public hostname
Truy cập vào Tunnel hiện có, tạo thêm tên miền mới để dùng cho truy cập RDP: bấm vào nút Add a public hostname.
- Chọn subdomain và domain bạn muốn sử dụng.
- Type: chọn RDP
- URL: nhập vào LAN IP của máy tính cần được điều khiển và port (mặc định: 3389)
Bấm Save hostname để lưu lại.
III. Kết nối RDP
Mình sử dụng 1 máy tính nằm bên ngoài mạng LAN ở nhà để thử nghiệm kết nối RDP thông qua Cloudflare Tunnel.
1. Cài đặt cloudflared
Đầu tiên, cần phải cài đặt cloudflared lên máy tính đang muốn tạo kết nối RDP vào mạng LAN. Mình sử dụng EndeavourOS nên cài đặt bằng lệnh sau
yay -S cloudflared
Nếu sử dụng macOS hay Windows, tham khác các cách cài đặt cloudlfared ở đây: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation/
2. Cài đặt RDP client
Do trên EndeavourOS chưa có sẵn RDP client nên mình sẽ cài thêm remmina và freerdp để tạo kết nối RDP
yay -S remmina freerdp
Nếu bạn đang dùng Windows, bấm vào Start Menu, gõ Remote Desktop là sẽ thấy ngay công cụ kết nối RDP có sẵn.
3. Thiết lập kết nối
Mở Terminal, nhập vào lệnh sau để thiết lập kết nối đến Cloudflare Tunnel
cloudflared access rdp --hostname rdp.thuanbui.me --url rdp://localhost:3389
Sau đó mở RDP, tạo kết nối vào địa chỉ localhost:3389
Nếu thiết lập đúng, bạn sẽ được yêu cầu nhập tài khoản / mật khẩu để đăng nhập vào máy tính. Kết nối RDP đã thành công.
IV. Thiết lập bảo mật Zero Trust
Theo cách thiết lập ở bước trên, bất kỳ ai cũng có thể tạo kết nối RDP vào máy tính của mình ở nhà nếu biết được tên miền liên kết rdp.thuanbui.me
. Để ngăn chặn truy cập trái phép, mình sẽ thiết lập thêm tính năng xác thực bằng cách tạo thêm Applications cho kết nối RDP.
1. Tạo Application
Truy cập vào mục Applications ở phần menu bên trái, bấm vào nút Add an application để tạo ứng dụng mới.
Chọn Self-hosted
- Application name: nhập vào tên ứng dụng
- Subdomain và domain: nhập vào thông tin bạn đã dùng dể thiết lập Public Hostname ở trên
- Các mục còn lại có thể để nguyên mặc định
- Bấm Next để tiếp tục
- Policy name: đặt tên bất kỳ
- Configure rules -> Selector: mình chọn Emails và nhập vào email.
- Bấm Next để tiếp tục
Với thiết lập này, mỗi khi truy cập vào tên miền, ứng dụng sẽ gửi mã xác thực về email được khai báo.
Bấm Add application để hoàn thành việc tạo ứng dụng.
2. Xác thực kết nối RDP
Quay trở lại máy tính đang chạy RDP client để thử nghiệm lại kết nối.
Mở Terminal và thực hiện kết nối
cloudflared access rdp --hostname rdp.thuanbui.me --url rdp://localhost:3389
Mở tiếp Remmina và truy cập vào địa chỉ locahost:3389
Trình duyệt sẽ tự động mở ra trang Cloudflare Access và yêu cầu nhập email xác thực.
Sau khi nhập vào mã xác nhận trong email, website sẽ hỏi có đồng ý kết nối không. Chọn Approve.
Sau khi xác thực thành công (1), bên Terminal sẽ hiện ra thông báo Waiting for login (2). Còn bên Remmina giờ đã hiện ra thông báo nhập tài khoản / mật khẩu để đăng nhập vào máy tính.
Kết nối RDP bảo mật thông qua Cloudflare Tunnel đã được thực hiện thành công.
Bài viết xin hết. Chúc bạn thực hiện trơn tru!
Nguồn: thuanbui