-->

whaust

2026年1月29日 星期四

Palo Alto GlobalProtect 整合 PrivacyIDEA MFA 實作指南

Palo Alto GlobalProtect 整合 PrivacyIDEA MFA 實作指南

這份文件是基於系統架構圖與驗證循序圖所撰寫的技術實作指南。旨在協助負責設定的工程師理解 Palo Alto GlobalProtect 結合 PrivacyIDEA 進行 Google Authenticator 多因素驗證 (MFA) 的運作原理與實施步驟。


1. 架構原理與通訊邏輯

本架構的核心在於將 Palo Alto 防火牆的驗證機制卸載給 PrivacyIDEA (作為 RADIUS Server),由它來統一處理「第一層 AD 密碼驗證」與「第二層 TOTP 動態碼驗證」。

1.1 網路分區與流向

  • 使用者端 (User): 位於外部網路,透過 GlobalProtect Client 發起 VPN 連線 (SSL/IPSec)。
  • 邊界防護 (Perimeter): Palo Alto PA-440 僅開啟外部 VPN 接口,內部則需允許 UDP Port 1812 流量通往 PrivacyIDEA 伺服器。
  • 內部信任區 (Internal):
    • PrivacyIDEA: 負責接收 RADIUS 請求,並向後端的 AD 進行 LDAP 查詢 (TCP 389/636)。
    • Active Directory (AD): 僅負責儲存身分與驗證靜態密碼,不直接面對防火牆的 RADIUS 請求。

1.2 TOTP 驗證機制 (離線驗證)

關鍵觀念:Google Authenticator 的驗證是伺服器本地計算。PrivacyIDEA 伺服器不需要連線至 Google 雲端。

原理:伺服器與使用者手機持有相同的「種子密鑰 (Secret Key)」。伺服器根據當下時間與種子,算出正確的 6 位數代碼,並與使用者輸入的代碼比對。

2. 詳細驗證流程說明

工程師需理解此流程以利除錯 (Troubleshooting)。

階段一:主要憑證驗證 (AD 密碼)

  1. 使用者在 VPN Client 輸入 AD 帳號密碼。
  2. PA-440 將帳密封裝成 RADIUS Access-Request 封包,送往 PrivacyIDEA。
  3. PrivacyIDEA 收到後,透過 LDAP 向 AD 確認帳密是否正確。
  4. 若 AD 回傳成功,PrivacyIDEA 暫不回傳 Success,而是進入階段二。

階段二:MFA 挑戰與回應 (Challenge-Response)

  1. PrivacyIDEA 回傳 RADIUS Access-Challenge 給 PA-440。
  2. PA-440 通知 Client 彈出視窗:「請輸入 Google Authenticator 代碼」。
  3. 使用者查看手機 App 並輸入 6 位數代碼。
  4. PA-440 將代碼再次封裝成 RADIUS Access-Request 送往 PrivacyIDEA。
  5. 關鍵步驟: PrivacyIDEA 在本地執行 TOTP 演算法比對代碼。
  6. 比對成功後,回傳 RADIUS Access-Accept,防火牆放行連線。

3. 工程師設定步驟 (Configuration Steps)

請依照資料流向,由內而外進行設定。



步驟 A:PrivacyIDEA 設定 (RADIUS Server)

  1. 設定 LDAP Resolver:
    • 新增 Authentication Source,指向內網的 AD Server (Port 389 或 636)。
    • 設定 Bind DN 與 Password 以便讀取使用者清單。
  2. 設定 RADIUS Client:
    • Clients 設定中新增 PA-440 的 IP 位址。
    • 設定 Shared Secret (共用密鑰): 此密碼務必記錄下來,稍後防火牆設定需完全一致。
  3. 使用者 Token 綁定:
    • 為使用者 Enroll 一個 TOTP Token,並確保使用者已掃描 QR Code。

步驟 B:Palo Alto PA-440 設定 (Firewall)

  1. 設定 RADIUS Server Profile:
    • 位置:Device > Server Profiles > RADIUS
    • 新增 PrivacyIDEA 伺服器 IP (Port 1812)。
    • 填入步驟 A 設定的 Shared Secret
    • 重要:Timeout 時間拉長 (建議 30~60 秒),因為使用者掏出手機看代碼需要時間,預設 3 秒會導致連線逾時失敗。
  2. 設定 Authentication Profile:
    • 位置:Device > Authentication Profile
    • Type 選擇 RADIUS
    • Server Profile 選擇剛建立的 Profile。
  3. 套用至 GlobalProtect:
    • 分別在 PortalGateway 的 Authentication 選項中,掛載上述的 Authentication Profile。

步驟 C:網路與防火牆規則 (Network Policy)

  • PA-440 到 PrivacyIDEA: 確保 Security Policy 允許從 Firewall Interface IP 到 PrivacyIDEA IP 的 UDP/1812 (RADIUS) 流量。
  • PrivacyIDEA 到 AD: 確保 PrivacyIDEA 伺服器能存取 AD 的 TCP/389 (LDAP)TCP/636 (LDAPS)

4. 除錯與注意事項 (Troubleshooting)

  1. 時間同步 (Time Synchronization):
    由於 TOTP 是基於時間的 (Time-based),請確保 PrivacyIDEA Server 的系統時間與標準時間誤差在 30 秒內,否則算出來的代碼永遠對不上。
  2. RADIUS Secret 不一致:
    若 PA-440 顯示 "Server Unreachable" 或 "Auth Failed" 但 PrivacyIDEA Log 顯示 "Bad Authenticator",通常是 Shared Secret 打錯。
  3. RADIUS Timeout:
    若使用者輸入代碼後顯示連線逾時,請檢查 PA-440 的 RADIUS Timeout 設定是否足夠長。

5. 常見問題 (Q&A)

Q. 所以 PrivacyIDEA 設定 Google Authenticator 是一次性的?

A. 沒錯,設定(綁定)的動作是「一次性」的。

比喻:就像您配對藍牙耳機一樣:配對只需做一次,之後每次使用只需連線即可。

為了讓您更清楚這個概念,我們可以將其拆解為「綁定階段」與「使用階段」:

1. 綁定階段 (Enrollment) - 只做一次

這是建立信任關係的時刻。

  • 動作: PrivacyIDEA 產生一個 QR Code (裡面包含了一串加密的種子密鑰,Seed Key)。
  • 使用者: 用手機打開 Google Authenticator App 掃描這個 QR Code。
  • 結果: 此時,「PrivacyIDEA 伺服器」與「使用者的手機」雙方都儲存了同一份「種子密鑰」。
  • 結束: 這個 QR Code 之後就不需要了 (除非要換手機)。

2. 驗證階段 (Authentication) - 每次登入都要做

這是利用那份密鑰進行數學運算的時刻。

  • 動作: 當使用者要登入 VPN 時。
  • 使用者: 打開 App,App 會用「當下的時間」+「那份種子密鑰」算出一個 6 位數代碼。
  • 伺服器: PrivacyIDEA 也用「當下的時間」+「那份種子密鑰」算出一個代碼。
  • 比對: 因為時間一樣、密鑰一樣,算出來的代碼就會一樣。


沒有留言:

張貼留言

Popular