一、核心概念 (Concept)
Local User 與 Remote Server (LDAP/RADIUS)
防火牆不僅能基於 IP 進行過濾,還能要求使用者「出示證件」後才放行。這分為將帳號建立在防火牆內 (Local) 或與外部資料庫連動 (Remote)。
生活化比喻:大樓門禁管理
- Local User (本地使用者): 就像小型公寓的警衛,手上有一本手寫的住戶名單。訪客來時,警衛直接翻閱本子確認。優點是簡單,缺點是如果公寓有 50 棟,每一棟的警衛都要重新抄一份名單,管理很累。
- Remote Server (LDAP/RADIUS): 就像大型跨國企業的門禁。警衛 (FortiGate) 不保留名單,而是打電話給總部的人資部門 (AD/LDAP 伺服器) 確認:「這個人是不是員工?」。優點是總部更新名單後,所有分公司的門禁同步生效。
二、運作原理 (Mechanism)
當我們在 Firewall Policy 啟用身分驗證時,流量觸發認證的流程如下:
- Captive Portal (強制路徑入口): 使用者發起 HTTP/HTTPS 請求,FortiGate 攔截該封包,並將使用者重導向至登入頁面。
- 認證查詢: FortiGate 接收帳號密碼,若是 Remote User,則透過 LDAP (TCP 389/636) 或 RADIUS (UDP 1812) 轉發給後端伺服器驗證。
- Session 建立: 驗證成功後,FortiGate 會記錄 來源 IP 與 使用者名稱 的對應關係 (Mapping),在 Timeout 時間內,該 IP 的流量都被視為該使用者。
關鍵技術點: 防火牆的認證基礎是 "IP Address"。一旦認證成功,該 IP 權限全開。若在多人共用一台電腦 (如 Citrix/Terminal Server) 的環境下,需要特殊設定 (TS Agent) 才能區分不同使用者的流量。
三、架構視覺化 (Visuals)
圖表:Remote Server (LDAP) 認證流程
%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant User as 使用者
(User PC) participant FG as FortiGate
(Client) participant AD as AD/LDAP
Server Note over User, FG: 階段 1: 觸發認證 User->>FG: 發起 HTTP 訪問 (GET google.com) FG-->>User: 攔截並重導向至 Captive Portal Note over User, FG: 階段 2: 提交憑證 User->>FG: 輸入帳號 / 密碼 Note over FG, AD: 階段 3: 後端驗證 FG->>AD: LDAP Query (帳密正確?) AD-->>FG: OK (驗證成功 + 群組資訊) Note over User, FG: 階段 4: 放行流量 FG->>FG: 建立 IP-User Mapping 表 FG-->>User: 允許存取 Internet
(User PC) participant FG as FortiGate
(Client) participant AD as AD/LDAP
Server Note over User, FG: 階段 1: 觸發認證 User->>FG: 發起 HTTP 訪問 (GET google.com) FG-->>User: 攔截並重導向至 Captive Portal Note over User, FG: 階段 2: 提交憑證 User->>FG: 輸入帳號 / 密碼 Note over FG, AD: 階段 3: 後端驗證 FG->>AD: LDAP Query (帳密正確?) AD-->>FG: OK (驗證成功 + 群組資訊) Note over User, FG: 階段 4: 放行流量 FG->>FG: 建立 IP-User Mapping 表 FG-->>User: 允許存取 Internet
四、實務應用場景
案例:財務部門專用網路存取
企業希望雖然全公司都在同一個網段,但只有「財務群組 (Finance Group)」的成員可以存取 ERP 伺服器,其他人只能上網。
優點
- 安全性高,基於身分而非僅基於 IP。
- 紀錄檔 (Log) 會顯示 "User: Alice",而非僅是 "Source: 192.168.1.50",便於稽核。
缺點
- 使用者體驗較差,開啟瀏覽器需先登入 (主動式認證)。
- IoT 設備 (印表機、攝影機) 無法輸入帳號密碼,需設例外。
CLI 設定範例
FortiOS 7.x
# 1. 連接 AD/LDAP 伺服器 (前置作業) config user ldap edit "LDAP_Server" set server "192.168.100.10" # AD 伺服器 IP set cnid "sAMAccountName" # 帳號屬性 (Windows AD 預設) set dn "dc=company,dc=local" # Base DN (搜尋範圍) set type regular set username "cn=admin,dc=company,dc=local" # 具有查詢權限的帳號 (Bind DN) set password# 該帳號的密碼 next end # 2. 定義 ERP 伺服器與財務群組 (整合 LDAP) config firewall address edit "ERP_Server" set subnet 192.168.100.50 255.255.255.255 next end config user group edit "Finance_Group" set member "LDAP_Server" # 將剛才設定的 LDAP Server 加入群組來源 next end # 3. 設定財務部專用策略 (需驗證身分) config firewall policy edit 10 set name "Finance_Access_ERP" set srcintf "lan" set dstintf "dmz" # ERP 位於 DMZ 或不同網段 set srcaddr "all" # 來源 IP 不限 (因為在同網段,需靠身分區分) set dstaddr "ERP_Server" set action accept set schedule "always" set service "HTTPS" "RDP" set groups "Finance_Group" # 關鍵:綁定財務群組,未登入者會跳出認證視窗 set nat disable next end
一、核心概念 (Concept)
FSSO (Fortinet Single Sign-On)
FSSO 是一種「透明」的認證方式。使用者只需登入 Windows 電腦 (AD 網域),防火牆就自動知道你是誰,無需再次輸入帳號密碼。
生活化比喻:全包式度假村的手環
- 傳統認證: 每次去餐廳吃飯、去泳池游泳,都要拿身分證出來登記,很麻煩。
- FSSO (單一登入): 當你在飯店大廳 Check-in (登入 Windows) 時,櫃台就給你戴上一個專屬手環 (IP-User Mapping)。之後你在度假村內任何設施 (防火牆閘道),警衛只要看你的手環就知道你是誰,直接放行,你完全感覺不到檢查的存在。
二、運作原理 (Mechanism)
FSSO 的核心在於「監聽」登入事件,主要組件包含 Collector Agent。
- 使用者登入: User 輸入帳密登入 Windows AD 網域。
- 產生紀錄: AD Domain Controller (DC) 的 Event Log 產生一筆「登入成功 (Event ID 4624)」的紀錄,包含 IP 與 Username。
- Agent 抓取: 安裝在伺服器上的 FSSO Collector Agent 讀取這筆 Event Log。
- 同步防火牆: Agent 將
IP address + User Group的資訊推送到 FortiGate。 - 策略比對: FortiGate 更新內部的認證清單,當該 IP 的流量經過時,直接匹配對應的 Identity-based Policy。
三、架構視覺化 (Visuals)
圖表:FSSO Agent 運作拓撲
%%{init: {'theme': 'neutral'}}%%
graph TD
subgraph "Client Side"
PC[員工電腦
192.168.1.100] end subgraph "Server Side" DC[AD Server
網域控制站] Agent[FSSO Collector Agent
收集器] end subgraph "Gateway" FG[FortiGate
防火牆] end PC --1. 登入網域--> DC DC --2. 產生 Event Log--> DC Agent --3. 讀取 Log (WMI/WinSec)--> DC Agent --4. 推送 IP+User 資訊--> FG PC --5. 上網流量 (透明通過)--> FG style PC fill:#e1f5fe,stroke:#01579b style DC fill:#fff9c4,stroke:#fbc02d style Agent fill:#fff9c4,stroke:#fbc02d style FG fill:#ffcdd2,stroke:#c62828
192.168.1.100] end subgraph "Server Side" DC[AD Server
網域控制站] Agent[FSSO Collector Agent
收集器] end subgraph "Gateway" FG[FortiGate
防火牆] end PC --1. 登入網域--> DC DC --2. 產生 Event Log--> DC Agent --3. 讀取 Log (WMI/WinSec)--> DC Agent --4. 推送 IP+User 資訊--> FG PC --5. 上網流量 (透明通過)--> FG style PC fill:#e1f5fe,stroke:#01579b style DC fill:#fff9c4,stroke:#fbc02d style Agent fill:#fff9c4,stroke:#fbc02d style FG fill:#ffcdd2,stroke:#c62828
四、實務應用場景
案例:大型企業的無感上網監控
員工上班打開電腦後,不需要再跳出任何網頁登入畫面,就可以直接存取 Internet。但 IT 管理員可以在報表中看到:「業務部 John 在 10:00 訪問了 YouTube」。
架構大師筆記: FSSO 雖然方便,但依賴 DNS 與 IP 的準確性。如果使用 DHCP 環境,務必確保 DNS Server 更新即時,或使用 DC Agent 模式來確保 IP 異動時能即時抓取,否則會出現「張冠李戴」的權限錯誤。
FSSO 完整部署流程範例
Windows Server & FortiOS
Step 1: AD Server 前置設定 (Windows GPO)
為了讓 FSSO Agent 讀取登入事件,必須開啟 AD 的稽核功能。
- 開啟 Group Policy Management (群組原則管理)
- 路徑: Computer Configuration > Windows Settings > Security Settings > Advanced Audit Policy Configuration > Logon/Logoff
- 設定: Audit Logon (稽核登入) -> 勾選 Success (成功)
- 確認 AD Event Viewer 的 Security Log 中開始出現 Event ID 4624。
Step 2: FSSO Collector Agent 設定 (Server Side)
- 在伺服器上安裝 Fortinet FSSO Collector Agent。
- 設定 Monitoring Method: 勾選 Monitor DC (Polling 或 DC Agent)。
- 設定 Listening Port: 預設為 TCP 8000 (FortiGate 將連線此埠)。
- 設定 Password: 設定一組共用密碼 (Shared Secret),稍後 FortiGate 需填入相同密碼。
Step 3: FortiGate 設定 (CLI)
# 1. 建立 FSSO Connector (連接 Agent) config user fsso edit "FSSO_Agent_Connect" set server "192.168.10.20" # FSSO Agent 的 IP set port 8000 # 預設 TCP 8000 set password# 填入 Step 2 設定的密碼 set ldap-server "LDAP_Server" # 選擇已建立的 LDAP 設定以同步群組 next end # 2. 建立 FSSO 使用者群組 (對應 AD 群組) config user group edit "FSSO_Employees" set member "FSSO_Agent_Connect" # 來源選擇 FSSO Connector # 此處通常在 GUI 選擇 AD 中的 "Domain Users" 等群組 next end # 3. 套用防火牆策略 (無感認證) config firewall policy edit 20 set name "FSSO_Internet_Access" set srcintf "lan" set dstintf "wan1" set srcaddr "all" set dstaddr "all" set action accept set schedule "always" set service "ALL" set groups "FSSO_Employees" # 綁定群組,只要 AD 登入過,流量自動放行 set nat enable next end