Danh mục sản phẩm
RADIUS Integration trên FortiGate
1. Liên hệ thực tế
Sau khi LDAP hoạt động ổn cho phòng ban dùng Windows, anh Nam gặp tình huống mới: đội hạ tầng mạng có một máy chủ NPS (Network Policy Server) của Microsoft đang chạy RADIUS, dùng chung cho cả xác thực VPN của Cisco router lẫn switch. Sếp muốn FortiGate cũng xác thực qua RADIUS này luôn để thống nhất một nơi quản lý, tránh phải cấu hình LDAP riêng.
Chị Lan giải thích khác biệt: "LDAP là em hỏi thẳng vào cây thư mục để tìm thông tin user. RADIUS thì khác — em gửi một gói tin xác thực (Access-Request) tới RADIUS server, server đó tự xử lý logic bên trong (có thể check AD, có thể check MFA, tùy họ cấu hình) rồi trả lời Accept hoặc Reject. FortiGate không cần biết bên trong RADIUS server làm gì."
Bài này trình bày cách cấu hình FortiGate làm RADIUS client, các kiểu auth-type phổ biến, và cách debug khi RADIUS server trả về reject.
2. Kiến thức cốt lõi
2.1 RADIUS Server object — cấu hình cơ bản
config user radius
edit "NPS-COMPANY"
set server "10.10.10.20"
set secret ********
set auth-type auto
set nas-ip 10.10.10.1
next
end
server— địa chỉ IP/FQDN của RADIUS server.secret— shared secret giữa FortiGate và RADIUS server, phải khớp tuyệt đối với cấu hình phía server (VD: NPS trên Windows, FreeRADIUS...). Đây là nguyên nhân lỗi phổ biến nhất khi mới cấu hình.auth-type— giao thức xác thực dùng khi gửi Access-Request:auto(FortiGate tự thử lần lượt các giao thức được hỗ trợ), hoặc chỉ định cụ thể nhưpap,chap,mschap,ms_chap_v2.nas-ip— địa chỉ IP mà FortiGate tự giới thiệu là NAS (Network Access Server) trong gói RADIUS, một số RADIUS server yêu cầu giá trị này khớp với client đã khai báo phía server.
⚠️ Lưu ý: Nếu RADIUS server phía sau (như NPS) chỉ cho phép MS-CHAPv2, mà FortiGate để
auth-type automà quá trình thương lượng giao thức không khớp cấu hình Network Policy trên NPS, xác thực sẽ bị reject dùsecretđã đúng. Nên khai rõset auth-type ms_chap_v2khi biết chắc phía server yêu cầu giao thức nào, thay vì đểautorồi mất công debug.
2.2 RADIUS vs LDAP — khi nào dùng cái nào
| Tiêu chí | LDAP | RADIUS |
|---|---|---|
| Cách hoạt động | FortiGate tự bind và truy vấn trực tiếp cây thư mục | FortiGate gửi Access-Request, server xử lý logic và trả Accept/Reject |
| Phù hợp khi | Cần đọc thuộc tính chi tiết của user/group trong AD | Đã có sẵn hạ tầng RADIUS dùng chung nhiều thiết bị (switch, router, VPN...) |
| Hỗ trợ MFA tích hợp sẵn ở server | Không có cơ chế MFA riêng ở tầng LDAP | Nhiều RADIUS server (NPS + Azure MFA extension, FreeRADIUS + OTP...) hỗ trợ MFA ngay tại server |
| Độ phức tạp cấu hình group mapping | Cần khai DN đầy đủ của group | Có thể dùng RADIUS attribute (VD: Filter-Id, Class) để ánh xạ group, gọn hơn với hạ tầng đã chuẩn hóa |
🔄 Khác biệt version FortiOS: Từ 7.4 trở lên,
config user radiushỗ trợ thêmtransport-protocol tcp(RADIUS over TCP, RFC 6613) vàtls-min-proto-versionđể tăng bảo mật kênh truyền RADIUS. FortiOS 7.0 chỉ hỗ trợ RADIUS truyền thống qua UDP — cần lưu ý khi tài liệu tham khảo online có thể lẫn tham số của version mới hơn.
2.3 Ánh xạ Group qua RADIUS attribute
Không giống LDAP dùng DN đầy đủ, RADIUS ánh xạ group theo attribute trả về trong gói Access-Accept — phổ biến nhất là Filter-Id hoặc Class:
config user group
edit "GRP_KETOAN_RADIUS"
set group-type firewall
config match
edit 1
set server-name "NPS-COMPANY"
set group-name "KeToan"
next
end
next
end
Với cấu hình này, FortiGate kiểm tra giá trị attribute (filter-Id mặc định, có thể đổi qua set group-override-attr-type class nếu phía RADIUS server trả về qua Class thay vì Filter-Id) có khớp chuỗi "KeToan" không — giá trị này phải được cấu hình khớp chính xác ở phía Network Policy trên RADIUS server (VD: NPS Attribute → Filter-Id → String = KeToan).
⚠️ Lưu ý: Không như LDAP group-name yêu cầu DN, ở đây
group-namechỉ là một chuỗi string thuần — dễ gõ sai chính tả (hoa/thường, khoảng trắng thừa) dẫn đến match thất bại dù xác thực RADIUS đã Accept.
2.4 Kiểm tra và debug RADIUS
diagnose test authserver radius NPS-COMPANY mschap2 nam.nv <password>
Lệnh test phải khai rõ giao thức test (VD: pap, chap, mschap2) khớp với auth-type đã cấu hình. Kết quả có thể trả về:
authenticate 'user' against 'mschap2' passed— thành công.authenticate ... failedkèm mã lỗi MS-CHAP (VD:E=649) — thường là do Network Policy phía RADIUS server chưa cho phép giao thức đó, hoặc tài khoản bị khóa/hết hạn phía AD (khi NPS dùng AD làm backend).
Ngoài ra:
diagnose debug application fnbamd -1 diagnose debug enable
giúp xem chi tiết gói tin trao đổi và lý do reject cụ thể trả về từ RADIUS server, tương tự cách debug LDAP đã trình bày ở bài trước.
⚠️ Lưu ý: Một lỗi rất hay gặp trong thực tế triển khai của VNExperts là NAS đã khai trên RADIUS server (NPS) trỏ nhầm sang IP interface khác của FortiGate — trong khi gói RADIUS thực tế lại đi ra từ interface khác do định tuyến/SD-WAN. Nếu nghi ngờ, dùng
set source-iptrongconfig user radiusđể cố định IP nguồn gửi gói RADIUS, đảm bảo khớp với NAS client đã khai trên server.
3. Hỏi & Đáp
RADIUS có thể dùng chung một server với LDAP không?
Có thể, nếu RADIUS server đó (như NPS) dùng chính AD làm backend xác thực. Khi đó FortiGate chỉ nói chuyện với RADIUS server qua giao thức RADIUS — không truy vấn LDAP song song. Việc RADIUS server có dùng AD ở phía sau hay không là chi tiết nội bộ của RADIUS server, FortiGate không cần biết.
Vì sao xác thực RADIUS Accept nhưng Policy vẫn chặn user?
Nguyên nhân phổ biến nhất là attribute trả về (Filter-Id hoặc Class) không khớp chính xác với group-name đã khai trong config match — có thể do sai chính tả hoặc khai sai group-override-attr-type.
Có cần tài khoản dịch vụ như LDAP không?
Không. RADIUS không yêu cầu tài khoản dịch vụ riêng — FortiGate chỉ cần secret dùng chung để mã hóa gói tin trao đổi với RADIUS server, còn việc xác thực từng user là RADIUS server tự xử lý.
Có thể cấu hình nhiều RADIUS server dự phòng không?
Có, tương tự LDAP, config user radius hỗ trợ secondary-server/secondary-secret và tertiary-server/tertiary-secret để tăng tính sẵn sàng khi server chính không phản hồi.
4. Quiz
Câu 1: Điểm khác biệt cốt lõi giữa RADIUS và LDAP là gì?
- A. RADIUS luôn nhanh hơn LDAP
- B. RADIUS gửi yêu cầu và nhận Accept/Reject, còn LDAP tự bind và truy vấn trực tiếp cây thư mục
- C. LDAP không hỗ trợ Active Directory
- D. RADIUS chỉ dùng được cho VPN, không dùng được cho Firewall Policy
Câu 2: Tham số nào bắt buộc phải khớp chính xác giữa FortiGate và RADIUS server?
- A.
nas-ip - B.
secret - C.
auth-type - D.
dn
Câu 3: RADIUS thường dùng attribute nào để ánh xạ group?
- A. Distinguished Name (DN)
- B. Filter-Id hoặc Class
- C. sAMAccountName
- D. Object GUID
Câu 4: Lệnh nào dùng để test nhanh xác thực RADIUS từ CLI FortiGate?
- A.
diagnose test authserver radius - B.
execute ping - C.
diagnose sys session list - D.
get user radius
👉 Đáp án
Câu 1: B RADIUS hoạt động theo mô hình request/response (Access-Request → Accept/Reject), trong khi LDAP là giao thức truy vấn trực tiếp cây thư mục qua bind.
Câu 2: B secret là shared secret mã hóa kênh trao đổi giữa FortiGate và RADIUS server — sai secret là nguyên nhân phổ biến nhất khiến xác thực thất bại ngay từ bước đầu.
Câu 3: B RADIUS trả về group thông qua attribute như Filter-Id hoặc Class trong gói Access-Accept, khác với LDAP dùng DN đầy đủ của group.
Câu 4: A diagnose test authserver radius <server-name> <protocol> <username> <password> giúp kiểm tra nhanh kết quả xác thực và giao thức đang dùng.
📚 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ọc | Bài kế tiếp ➡️ |
|---|---|---|
| LDAP/AD Integration trên FortiGate | Mục lục khóa học FortiGate | SAML / Azure AD (Entra ID) Integration |
