Chuyên mục
Network

[Cloudflare Tunnel] Tạo kết nối Remote Desktop bảo mật

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.

Mô hình hoạt động của Cloudflare Access tạo kết nối bảo mật RDP

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ị

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 cloudflaredCode language: Nginx (nginx)

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 freerdpCode language: Nginx (nginx)

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:3389Code language: JavaScript (javascript)

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:3389Code language: JavaScript (javascript)

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!

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

Lưu ý: Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng mò vào hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu!

Bởi Thuận Bùi

Runner at Yêu Chạy Bộ. Blogger at Ba Lô & Dép Lào. Web Developer at TB's Blog.
Follow me: Facebook / Instagram

10 trả lời trong “[Cloudflare Tunnel] Tạo kết nối Remote Desktop bảo mật”

ad cho mình hỏi là mình có chạy docker của cloudflare trên router openwrt rồi, cũng đã kết nối thành công về router, mình có thêm kết nối RDP trên tunnel rồi nhưng ko kết nối qua hostname đc, vậy mình có cần chạy cloudflare service trên máy cần RDP ko? cám ơn.

Máy cần RDP không cần cài Cloudflare gì hết bạn nhé. Chỉ cần 1 Cloudflare service trong mạng LAN và Cloudflare trên máy client để kết nối vào RDP là đủ.

Mình chạy lệnh .\cloudflared.exe access rdp –hostname rdp.domain.com –url rdp://localhost:3389

thì bị lỗi này ạ

ERR Error on Websocket listener error=”failed to start forwarding server: listen tcp 127.0.0.1:3389: bind: An attempt was made to access a socket in a way forbidden by its access permissions.”

Trả lời Thinh2011 Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *