Vấn đề với các VPN truyền thống
Chúng ta đã dựa vào các VPN truyền thống trong nhiều thập kỷ, nhưng chúng đang nhanh chóng trở thành một rủi ro bảo mật. Lỗ hổng cơ bản nằm ở kiến trúc “mạng phẳng” (flat network). Một khi người dùng đã xác thực, họ thường có quyền truy cập rộng rãi vào toàn bộ mạng con (subnet). Nếu máy tính xách tay của một nhân viên bị xâm nhập, kẻ tấn công có thể dễ dàng di chuyển ngang (move laterally) qua các máy chủ nội bộ của bạn. Bên cạnh vấn đề bảo mật, việc quản lý chứng chỉ IKEv2 và xử lý các yêu cầu hỗ trợ về việc “VPN bị chậm” là một gánh nặng liên tục đối với nguồn lực IT.
Theo kinh nghiệm của tôi khi triển khai giải pháp này cho các đội ngũ hơn 100 kỹ sư, mô hình Zero Trust là một sự nâng cấp đáng kể. Bằng cách sử dụng Cloudflare Access và WARP, bạn có thể ngừng hoàn toàn việc mở các cổng vào (inbound ports) trên tường lửa. Bạn không còn tin tưởng một người dùng chỉ vì họ đang “ở trong mạng”. Thay vào đó, mọi yêu cầu đơn lẻ đều được xác minh dựa trên danh tính, tình trạng thiết bị và ngữ cảnh địa lý.
Kiết trúc Zero Trust
Thiết lập này dựa trên ba thành phần cốt lõi hoạt động đồng bộ:
- Cloudflare Tunnel (cloudflared): Một daemon nhỏ trên máy chủ của bạn tạo ra một kết nối mã hóa, chỉ theo chiều đi (outbound-only) tới Cloudflare. Bạn không cần phải đụng chạm đến việc chuyển tiếp cổng (port forwarding) trên router.
- Cloudflare Access: Bộ não của toàn bộ hoạt động. Đây là nơi bạn viết các chính sách, chẳng hạn như “chỉ người dùng có email @company.com mới có thể truy cập môi trường staging”.
- Cloudflare WARP: Một ứng dụng khách nhẹ dành cho người dùng cuối. Nó xử lý DNS và định tuyến lưu lượng truy cập cho các dải IP nội bộ như 10.0.0.0/8 hoặc 192.168.1.0/24.
Cài đặt: Thiết lập Tunnel
Đầu tiên, chúng ta cần kết nối máy chủ nội bộ của bạn với mạng lưới Cloudflare. Chúng ta sử dụng giao diện dòng lệnh (CLI) cloudflared cho việc này. Mặc dù bảng điều khiển Cloudflare cung cấp thiết lập qua giao diện đồ họa (GUI), nhưng CLI nhanh hơn nhiều cho việc tự động hóa và xử lý lỗi.
1. Cài đặt cloudflared trên Linux
Trên máy chạy Debian hoặc Ubuntu, hãy chạy các lệnh sau để tải gói mới nhất:
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb
2. Xác thực và Tạo Tunnel
Chạy lệnh đăng nhập. Nó sẽ cung cấp cho bạn một URL duy nhất để ủy quyền tài khoản Cloudflare của bạn trên trình duyệt:
cloudflared tunnel login
Sau khi được ủy quyền, hãy tạo tunnel của bạn. Hãy đặt tên cho nó là ‘production-gateway’:
cloudflared tunnel create production-gateway
Lệnh này sẽ tạo ra một tệp thông tin xác thực JSON. Hãy coi tệp này như một khóa chính; nếu bạn làm mất nó, bạn sẽ mất kết nối.
Cấu hình: Định tuyến và Chính sách
Khi tunnel đã được thiết lập, chúng ta phải xác định lưu lượng truy cập nào sẽ đi qua đó. Thông thường bạn có hai lựa chọn: Public Hostnames cho các ứng dụng web hoặc Private Networks cho những thứ như SSH, RDP và kết nối cơ sở dữ liệu.
Cấu hình định tuyến mạng riêng (Private Network)
Để cho phép người dùng truy cập IP nội bộ như 192.168.1.50 từ nhà của họ, hãy định tuyến khối CIDR đó qua tunnel của bạn:
cloudflared tunnel route ip add 192.168.1.0/24 production-gateway
Tạo tệp cấu hình
Tạo một tệp config.yml. Tệp này đóng vai trò như cảnh sát điều phối giao thông cho daemon cloudflared. Nó ánh xạ các hostname bên ngoài tới các dịch vụ nội bộ.
tunnel: <TUNNEL_ID>
credentials-file: /root/.cloudflared/<TUNNEL_ID>.json
ingress:
- hostname: gitlab.yourcompany.com
service: http://localhost:8080
- hostname: db-ssh.yourcompany.com
service: ssh://localhost:22
- service: http_status:404
Cài đặt tunnel như một dịch vụ hệ thống để nó tự khởi động sau khi reboot:
sudo cloudflared service install
sudo systemctl start cloudflared
Thiết lập Cloudflare WARP cho máy khách
Cloudflare Access xử lý hoàn hảo các ứng dụng web, nhưng bạn cần ứng dụng khách WARP cho mọi thứ khác. Hãy coi WARP như một sự thay thế hiện đại, hiệu suất cao cho ứng dụng VPN cũ của bạn. Nó sử dụng giao thức WireGuard bên dưới để có tốc độ và sự ổn định tốt hơn.
1. Cấu hình bảng điều khiển Zero Trust
Đi tới Settings > WARP Client. Bạn phải thiết lập quy tắc ‘Device Enrollment’ tại đây. Tôi khuyên bạn nên giới hạn việc đăng ký cho SSO của công ty, chẳng hạn như Okta, Google Workspace hoặc Microsoft Entra ID.
2. Split Tunneling
Theo mặc định, WARP có thể bỏ qua lưu lượng truy cập cục bộ. Bạn phải đảm bảo dải IP nội bộ của mình được bao gồm (included) trong cài đặt Split Tunnel. Đi tới Settings > WARP Client > Device Settings và thêm khối 192.168.1.0/24 của bạn vào danh sách bao gồm (inclusion list).
3. Triển khai cho người dùng
Nhân viên có thể tải WARP trực tiếp từ Cloudflare. Sau khi cài đặt, họ chỉ cần nhấp vào ‘Login with Cloudflare Zero Trust’ và nhập tên nhóm (team name) của bạn. Khi họ đã xác thực qua SSO, họ có thể ping các IP nội bộ như thể họ đang ngồi tại văn phòng.
Kiểm tra & Giám sát
Trước tiên, hãy kiểm tra trạng thái Tunnel Health trong bảng điều khiển của bạn. Nó sẽ hiển thị ‘Active’ với nhiều kết nối đến các trung tâm dữ liệu Cloudflare khác nhau. Sự dự phòng này đảm bảo rằng nếu một điểm biên (edge node) của Cloudflare gặp sự cố, kết nối của bạn vẫn được duy trì.
Kiểm tra kết nối
Hãy thử truy cập một tài nguyên nội bộ từ một quán cà phê hoặc mạng gia đình. Nếu bạn đã thiết lập Public Hostname, Cloudflare sẽ yêu cầu bạn đăng nhập qua một trang xác thực. Sau khi đăng nhập, ứng dụng của bạn sẽ tải ngay lập tức.
Để kiểm tra mạng riêng, hãy thử một lệnh SSH đơn giản bằng IP nội bộ:
ssh [email protected]
Đọc nhật ký (Logs)
Phần Logs > Access là một mỏ vàng cho các kiểm toán viên. Các VPN truyền thống thường chỉ hiển thị rằng một người dùng đã kết nối. Cloudflare cho bạn thấy chính xác dịch vụ nào họ đã chạm vào và vào lúc nào. Khả năng hiển thị chi tiết này giúp việc kiểm tra bảo mật bớt đau đầu hơn nhiều.
Kinh nghiệm thực tế tốt nhất
- Bắt buộc MFA: Đừng dựa vào mật khẩu đơn giản. Hãy kết nối Nhà cung cấp danh tính (IdP) của bạn để bắt buộc sử dụng khóa bảo mật vật lý hoặc thông báo đẩy (push notifications).
- Kiểm tra trạng thái thiết bị (Device Posture): Thiết lập các chính sách yêu cầu thiết bị phải bật tường lửa hoặc đang chạy một phiên bản macOS hoặc Windows cụ thể trước khi có thể kết nối.
- Local DNS Fallback: Nếu bạn sử dụng các tên miền nội bộ như
jira.local, hãy cấu hình ‘Local Domain Fallback’ trong cài đặt WARP. Điều này chỉ dẫn Cloudflare phân giải các tên miền cụ thể đó thông qua các máy chủ DNS nội bộ của bạn.
Chuyển sang Zero Trust là một sự thay đổi đáng kể, nhưng nó giúp thu hẹp đáng kể bề mặt tấn công của bạn. Bạn sẽ ngừng việc đuổi theo những bóng ma trong nhật ký tường lửa và bắt đầu quản lý quyền truy cập dựa trên danh tính thực sự của người dùng.

