Fortinet FortiGate 實戰課程

階段一:基礎管理 (Administrator) | 5. 使用者認證 (Authentication)
一、核心概念 (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
四、實務應用場景

案例:財務部門專用網路存取

企業希望雖然全公司都在同一個網段,但只有「財務群組 (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

  1. 使用者登入: User 輸入帳密登入 Windows AD 網域。
  2. 產生紀錄: AD Domain Controller (DC) 的 Event Log 產生一筆「登入成功 (Event ID 4624)」的紀錄,包含 IP 與 Username。
  3. Agent 抓取: 安裝在伺服器上的 FSSO Collector Agent 讀取這筆 Event Log。
  4. 同步防火牆: Agent 將 IP address + User Group 的資訊推送到 FortiGate。
  5. 策略比對: 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
四、實務應用場景

案例:大型企業的無感上網監控

員工上班打開電腦後,不需要再跳出任何網頁登入畫面,就可以直接存取 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

隨堂測驗 (Quiz)