Gần đây mình có sử dụng Apache Guacamole để kết nối từ xa đến các máy tính ở nhà. Mặc dù đã bổ sung tính năng xác thực 2 lớp bằng TOTP (yêu cầu phải nhập mã xác thực (OTP) khi đăng nhập) nhưng mình vẫn chưa yên tâm lắm vì lo ngại hacker có thể khai thác các lỗ hổng bảo mật của máy chủ web để truy cập trái phép vào mạng nội bộ của mình.
Sẵn mình cũng đang sử dụng dịch vụ quản lý tên miền của Cloudflare nên mình muốn tạo thêm một lớp bảo mật nữa bằng cách sử dụng dịch vụ Zero Trust của Cloudflare. Lợi ích của việc bổ sung dịch vụ này là trước khi có thể truy cập vào máy chủ web của mình, người dùng phải được xác thực bởi Cloudflare, có nghĩa là người dùng sẽ được chuyển hướng đến trang xác thực của Cloudflare trước rồi mới đến được trang web của mình. Hiện Cloudflare Zero Trust cho phép lựa chọn nhiều phương thức xác thực như gởi mã OTP đến số điện thoại hay email do mình chỉ định, hoặc bằng các phương pháp sinh trắc học khác.
Giải thích nhiêu đó chắc cũng đủ hiểu rồi. Bây giờ mình sẽ bắt tay vào làm luôn cho đỡ mất thời gian người đọc 🙂
1. Điều kiện tiên quyết
Để có thể thực hiện các bước bên dưới, cần thoả các điều kiện sau:
- Đã có sẵn trang web nội bộ đang hoạt động hoặc xem bài truy cập máy tính từ xa bằng Apache Guacamole
- Đã có tên miền, nếu chưa có thể tham khảo cách mua tên miền siêu rẻ giá 1 USD/năm trọn đời
- Đã chuyển tên miền sang Cloudflare quản lý
2. Đăng ký dịch vụ Cloudflare Zero Trust
Vào trang https://one.dash.cloudflare.com và đăng nhập với tài khoản đã tạo ở Cloudflare
Team name: đặt tên nhóm bất kỳ, tên này có thể thay đổi sau.
Nhấn “Next” để tiếp tục.
Chọn “Free Plan”
Nhấn “Proceed” để tiếp tục
Nhấn “Purchase” để hoàn tất
3. Tạo ứng dụng Cloudflare Zero Trust
Từ menu “Access”, chọn “Applications”
Nhấn vào nút “Add an application”
Nhấn vào nút “Select” trong khung “Self-hosted”
- Application name: đặt tên cho ứng dụng
- Session Duration: chọn thời gian hiệu lực cho mỗi lần xác thực, mình để mặc định là 24 giờ
- Subdomain: tên miền phụ mình đang sử dụng cho trang Apache Guacamole
- Domain: chọn tên miền
Các phần còn lại mình để mặc định, và chọn “Next” ở cuối trang để tiếp tục.
Phần này mình khai báo chính sách bảo mật cho ứng dụng. Mình muốn giới hạn chỉ cho phép xác thực bằng địa chỉ email của mình nên mình khai báo như sau:
- Policy name: đặt tên cho chính sách bảo mật
- Action: chọn Allow
- Selector: chọn Emails
- Value: nhập các email mình muốn dùng để nhận mã xác thực
Các mục còn lại mình để mặc định và nhấn nút “Next” ở cuối trang để tiếp tục
Phần này mình cấu hình thêm một số tính năng bảo mật để ngăn ngừa hacker truy cập trái phép vào dữ liệu xác thực của Cloudflare
Cuối cùng mình nhấn vào nút “Add application” để hoàn tất.
4. Xác thực để truy cập vào trang web nội bộ
Sau khi cấu hình Cloudflare Zero Trust, khi truy cập vào trang Apache Guacamole tại địa chỉ “https://home.workleast.com” thì Cloudflare sẽ yêu cầu mình xác thực như sau:
Mình nhập vào email đã đăng ký ở bước trên rồi nhấn nút “Send me a code”. Cloudflare sau đó sẽ gởi cho mình 1 email chứa mã xác thực như sau:
Mình nhập mã này vào trang xác thực của Cloudflare là có thể truy cập vào trang Apache Guacamole như bình thường.
Chúc bạn thành công!