🗺️ Sơ đồ – Xác thực người dùng qua Active Directory
sequenceDiagram
participant User as User - PC VLAN10
participant FGT as FortiGate
participant AD as Active Directory DC 10.10.20.50
User->>FGT: Truy cap web HTTP/HTTPS
FGT->>User: Hien trang dang nhap Captive Portal
User->>FGT: Nhap username + password
FGT->>AD: LDAP Query - User nay co ton tai khong?\nBind: [email protected] port 389
AD->>FGT: Xac nhan user nguyen.van.a\nThuoc nhom CN=IT,OU=Groups
FGT->>FGT: Tim policy khop nhom IT-STAFF
FGT->>User: Cho phep truy cap Server VLAN20
🗺️ Sơ đồ – Các loại xác thực
graph LR
subgraph AuthTypes["Cac loai xac thuc trong FortiOS"]
Local["Local User\nTao truc tiep tren FortiGate\nPhu hop lab/nho"]
LDAP_box["LDAP/AD Remote\nKet noi Active Directory\nPhu hop doanh nghiep"]
RADIUS["RADIUS\nChuan xac thuc tap trung\nHo tro 2FA"]
Cert_auth["Certificate-based\nDung chung chi so\nBao mat cao nhat"]
end
Policy["Firewall Policy\nAp dung theo User/Group"]
Local --> Policy
LDAP_box --> Policy
RADIUS --> Policy
Cert_auth --> Policy
📚 Lý thuyết cơ bản
🔰 Xác thực (Authentication) là gì?
Xác thực = Kiểm tra "Bạn là ai?" trước khi cho phép truy cập.
💡 Giống như bảo vệ kiểm tra thẻ nhân viên ở cổng:
- Có thẻ hợp lệ, tên đúng nhóm được phép → vào được.
- Không có thẻ, thẻ hết hạn, không thuộc nhóm → chặn lại.
🔰 Active Directory (AD) là gì?
Active Directory = Hệ thống quản lý tài khoản người dùng tập trung của Microsoft Windows.
💡 Giống như bộ phận HR của công ty: biết danh sách nhân viên, biết ai thuộc phòng ban nào. Khi nhân viên nghỉ việc → xóa khỏi AD → mất quyền truy cập tất cả hệ thống.
🔰 LDAP là gì?
LDAP (Lightweight Directory Access Protocol) = Giao thức để FortiGate "hỏi" Active Directory.
FortiGate gửi câu hỏi qua LDAP: "User 'nguyen.van.a' có tồn tại không? Họ thuộc nhóm nào?"
| Cổng | Bảo mật | Dùng khi |
|---|---|---|
| 389 | Không mã hóa (plain text) | Lab, mạng nội bộ kín |
| 636 | Mã hóa TLS (LDAPS) | Production, khuyến nghị |
🔰 Policy theo User vs Policy theo IP
| Policy theo IP | Policy theo User/Group | |
|---|---|---|
| Kiểm soát | Theo địa chỉ IP máy tính | Theo danh tính người dùng |
| Vấn đề | User ngồi máy khác = bị chặn | Theo dõi theo tên thật |
| Linh hoạt | Ít linh hoạt | Linh hoạt hơn |
| Ví dụ | PC 10.10.10.100 → cho phép | User "IT-STAFF" → cho phép |
🛠️ Thực hành
Cấu hình kết nối LDAP đến Active Directory
config user ldap
edit "AD-CORP"
set server "10.10.20.50"
set port 389
set type regular
set username "cn=svc_fgt,ou=serviceaccount,dc=lab,dc=local"
set password svc_SecretP@ss
set cnid "sAMAccountName"
set dn "dc=lab,dc=local"
set member-attr "memberOf"
next
end
Tạo User Group từ LDAP
config user group
edit "IT-STAFF"
set member "AD-CORP"
config match
edit 1
set server-name "AD-CORP"
set group-name "CN=IT,OU=Groups,DC=lab,DC=local"
next
end
next
end
Áp dụng Group vào Firewall Policy
config firewall policy
edit 10
set name "IT_to_SERVER"
set srcintf "port3.10"
set dstintf "port3.20"
set srcaddr "all"
set dstaddr "all"
set action accept
set users "IT-STAFF"
set logtraffic all
next
end
Test kết nối LDAP
# Test LDAP từ CLI
diagnose test authserver ldap AD-CORP nguyen.van.a MyPassword
🔒 Bảo mật cần nhớ
- ✅ Dùng service account riêng (không phải domain admin) để FortiGate bind LDAP.
- ✅ Bật LDAPS (port 636) thay vì LDAP plain text (port 389).
- ✅ Service account chỉ cần quyền read-only trong AD.
- ✅ Đặt mật khẩu mạnh cho service account và quay vòng định kỳ.
📖 Case thực tế
Công ty muốn: nhóm IT truy cập server VLAN20, nhóm HR không được.
Trước đây: Dùng policy theo IP → HR ngồi máy IT = vào được server.
Sau khi dùng LDAP + AD Group:
- User HR dù ngồi máy nào cũng bị chặn.
- User IT dù ngồi máy nào cũng được phép.
- Nhân viên HR nghỉ việc → xóa khỏi AD → tự động mất quyền.
📅 Tuần 11/12 – FortiOS 7.6.6 Administration Lab
