Loading...

Captive Portal (Guest Access)

1. Liên hệ thực tế

Khu vực sảnh tiếp khách của công ty có một mạng WiFi riêng cho khách đến làm việc. Trước đây bảo vệ chỉ đưa một mật khẩu WiFi chung, dùng chung cho tất cả mọi người — không kiểm soát được ai đã kết nối, và mật khẩu bị lộ ra ngoài công ty sau một thời gian.

Sếp yêu cầu: khách kết nối WiFi phải thấy một trang đăng nhập, nhập thông tin do lễ tân cấp, mỗi người một tài khoản riêng, tự động hết hạn cuối ngày. Anh Nam nhớ tới bài Guest User đã học ở phần Local User, nhưng cần thêm một cơ chế để "chặn" và "chuyển hướng" traffic tới trang đăng nhập đó — đây chính là Captive Portal.

Chị Lan bổ sung: "Captive Portal không phải là cách xác thực mới, nó là cơ chế trình bày — chặn traffic ở tầng interface cho tới khi user xác thực qua một trong các phương thức mình đã học: local user, LDAP, RADIUS đều dùng được."


2. Kiến thức cốt lõi

2.1 Captive Portal hoạt động ở đâu trong FortiOS

Có hai cách triển khai Captive Portal trên FortiGate:

  • Interface-based Captive Portal — chặn ngay tại interface (VD: VLAN dành cho WiFi khách), tất cả traffic từ interface đó đều bị yêu cầu xác thực trước khi đi tiếp, bất kể Policy nào matching.
  • Policy-based Captive Portal — không chặn ở interface mà xác thực thông qua Identity-based Firewall Policy (như đã học ở bài Local User & User Group), phù hợp khi chỉ muốn áp dụng cho một số traffic cụ thể thay vì toàn bộ interface.

Bài này tập trung vào Interface-based Captive Portal — cách phổ biến nhất cho khu vực WiFi khách.

2.2 Cấu hình Interface-based Captive Portal

config system interface
    edit "vlan-guest"
        set security-mode captive-portal
        set security-groups "GRP_GUEST"
    next
end
  • security-mode captive-portal — bật cơ chế chặn và hiển thị trang đăng nhập trên interface này.
  • security-groups — trỏ tới user group (thường là group loại guest đã học ở bài Local User & User Group) chứa các tài khoản được phép xác thực qua portal này.

⚠️ Lưu ý: Interface Role của interface áp Captive Portal phải là LAN hoặc Undefined — không áp dụng được lên interface có Role là WAN. Với FortiAP quản lý qua Security Fabric, Captive Portal thường được cấu hình trên SSID interface tương ứng.

Ngoài group xác thực, FortiGate còn hỗ trợ tùy chỉnh trang đăng nhập và thiết bị miễn xác thực:

config user security-exempt-list
    edit "EXEMPT_PRINTER"
        config rule
            edit 1
                set srcaddr "Printer_Sanh"
                set dstaddr "all"
                set service "ALL"
            next
        end
    next
end

Cấu hình exempt-list này hữu ích cho các thiết bị không có khả năng đăng nhập qua trình duyệt (máy in mạng, thiết bị IoT...) nhưng vẫn cần ra Internet để cập nhật firmware — gán security-exempt-list vào interface tương ứng để miễn các thiết bị này khỏi yêu cầu xác thực Captive Portal.

2.3 Tùy biến trang Portal và thông điệp

Trang Captive Portal là các file HTML replacement message có thể tùy chỉnh qua System > Replacement Messages > Captive Portal Group. Các tag đặc biệt (bọc trong %%...%%, ví dụ %%CAPTIVE_PORTAL_URL%%) mang thông tin kỹ thuật cần thiết để portal hoạt động đúng — không nên xóa các tag này khi tùy chỉnh giao diện, chỉ nên sửa phần text và hình ảnh xung quanh.

config system interface
    edit "vlan-guest"
        set replacemsg-override-group "GRP_GUEST_PORTAL"
    next
end

replacemsg-override-group cho phép mỗi interface Captive Portal có một bộ giao diện riêng — hữu ích khi công ty có nhiều khu vực khách khác nhau (VD: sảnh chính vs phòng họp đối tác) muốn hiển thị logo/thông điệp khác nhau.

2.4 Giám sát và ngắt phiên khách đang hoạt động

Sau khi khách xác thực thành công, phiên của họ hiển thị tại Dashboard > Users & Devices > Firewall Users Monitor(hoặc lệnh CLI diagnose firewall auth list đã học ở bài Local User). Từ màn hình này, quản trị viên có thể chủ động Deauthenticate một phiên bất kỳ — hữu ích khi phát hiện một tài khoản khách đang bị dùng sai mục đích hoặc khách đã rời văn phòng nhưng quên đăng xuất.

⚠️ Lưu ý: Deauthenticate chỉ ngắt phiên xác thực hiện tại — nếu tài khoản guest đó chưa hết hạn (expirationchưa tới), họ vẫn có thể đăng nhập lại ngay sau đó. Muốn chặn hẳn, cần đặt set status disable cho tài khoản hoặc set lại expiration về thời điểm quá khứ.


3. Hỏi & Đáp

Captive Portal có bắt buộc phải dùng Guest User không?

Không bắt buộc. security-groups trên interface Captive Portal có thể trỏ tới bất kỳ loại firewall user group nào — kể cả group ánh xạ từ LDAP hoặc RADIUS. Guest User chỉ là lựa chọn phù hợp nhất cho khách vãng lai vì có cơ chế tự hết hạn tiện lợi.

Vì sao thiết bị IoT không đăng nhập được vẫn cần ra Internet?

Với các thiết bị không có khả năng hiển thị trình duyệt để đăng nhập (máy in, camera IP...), cần đưa vào config user security-exempt-list để miễn xác thực Captive Portal cho riêng traffic của thiết bị đó, dựa theo địa chỉ MAC hoặc IP cố định.

Interface-based và Policy-based Captive Portal khác nhau ở đâu về mức độ kiểm soát?

Interface-based áp dụng cho toàn bộ traffic đi qua interface đó, đơn giản và phù hợp với khu vực dành riêng cho khách. Policy-based linh hoạt hơn vì cho phép chỉ một số Policy cụ thể yêu cầu xác thực, trong khi các Policy khác trên cùng interface vẫn hoạt động bình thường không cần đăng nhập.

Có thể theo dõi khách đang online theo thời gian thực không?

Có, qua Firewall Users Monitor trên Dashboard hoặc diagnose firewall auth list, hiển thị đầy đủ username, IP đã cấp, thời gian đã kết nối (duration) và thời gian còn lại trước khi hết phiên (expire).


4. Quiz

Câu 1: Interface-based Captive Portal có thể áp dụng lên Interface Role nào?

  • A. WAN
  • B. LAN hoặc Undefined
  • C. VPN
  • D. Loopback

Câu 2: Tham số nào trên interface dùng để trỏ tới user group được phép xác thực qua Captive Portal?

  • A. set allowaccess
  • B. set security-groups
  • C. set role
  • D. set vdom

Câu 3: Cơ chế nào giúp miễn xác thực Captive Portal cho một máy in mạng cụ thể?

  • A. config user security-exempt-list
  • B. config user radius
  • C. config firewall vip
  • D. config system dns

Câu 4: Sau khi "Deauthenticate" một phiên khách trên Firewall Users Monitor, điều gì sẽ xảy ra nếu tài khoản đó chưa hết hạn?

  • A. Tài khoản bị xóa vĩnh viễn
  • B. Khách có thể đăng nhập lại ngay lập tức
  • C. Toàn bộ mạng WiFi khách bị tắt
  • D. Không có gì thay đổi, phiên vẫn tiếp tục

👉 Đáp án

Câu 1: B Captive Portal chỉ áp dụng được cho interface có Role là LAN hoặc Undefined, không dùng được trên interface WAN.

Câu 2: B security-groups xác định user group nào sẽ được yêu cầu xác thực và cấp quyền khi kết nối qua Captive Portal trên interface đó.

Câu 3: A config user security-exempt-list cho phép định nghĩa các thiết bị/traffic được miễn yêu cầu xác thực Captive Portal.

Câu 4: B Deauthenticate chỉ ngắt phiên hiện tại, không vô hiệu hóa tài khoản — nếu chưa hết hạn, khách hoàn toàn có thể đăng nhập lại ngay.


📚 Bài viết thuộc khóa học FortiGate của VNExperts

🧭 Điều hướng

⬅️ Bài trước🏠 Mục lục khóa họcBài kế tiếp ➡️
SAML / Azure AD (Entra ID) Integration Mục lục khóa học FortiGate Two-Factor Authentication (FortiToken)