在過去,想在 FortiGate 上對管理帳號啟用所謂的 2FA,會搭配使用原廠的 FortiToken 來完成,但預設狀況僅提供兩個免費授權數,可以綁在管理帳號上;也就是說,若有多個管理帳號在 FortiGate,想得到更周全的防護,就會考慮添購 FortiToken 授權。

前陣子,在研讀 Azure AD SSO 整合 FortiGate VPN 的資料時意外發現,原來從 FortiOS 6.2 之後,管理後台也可以用 SAML 方式整合 SSO,而且 Fortinet 官方所提供的整合文件,更是利用許多企業有在使用的 Azure AD 做示範說明。

所以,只要有在用 Microsoft 365 的企業,就可以利用 Azure AD 來做單一登入 (SSO)。甚至,在 Azure AD/Office 365 端啟用了 MFA,那麼在登入 FortiGate 管理後台時,屆時會有同樣的身分驗證體驗及 MFA 防護效果。

如果覺得上面廢話太多,簡單說就是,用 Azure AD 完成與 FortiGate 整合設定後,就能用公司帳密登入 FortiGate 後台,而且還有MFA (如果有啟動的話)。

設定流程如下

1. 在 Azure AD 新增 SAML SSO 設定在 Enterprise Application / 企業應用程式

登入到 AAD PortalAzure Portal,選擇 Azure Active Directory。
新增前,請確認

  • 已使用具有新增 Enterprise Application 權限的帳號
  • 已登入或切換到正確的 AAD Tenant。這狀況很容易發生在,一人身兼多職需要管多個 Tenant 時 ( IT 吃到飽方案!? )

選擇 企業應用程式,點擊 新增應用程式

在瀏覽 Azure AD 的資源頁面搜尋 Fortigate,這時會看到 Azure 很貼心地利用關鍵字幫忙找到可能的範本。點選 FortiGate SSL VPN 範本後,在右邊窗格輸入欲建立的名稱,例如 SSO - FortiGate。

雖然,我們不是要設定 SSL VPN 的 SSO 驗證,依然可以利用該範本做後續設定,選擇並取名後點擊 Create。

在新增的 Enterprise Application,選擇 Single sign-on,點擊 SAML

在 SAML 設定,可以看到 Azure 很貼心地設計 1-5 的設定順序,按照順序就對了

在第一步的 Basic SAML Configuration,選擇 Edit,參考下面圖說,依照需求填入對應資料,假設我的 FortiGate 登入位址為
https://192.168.66.254:9527

Identifier (Entity ID) (請注意,即使後台連接是用 HTTPS,僅此欄位務必使用 HTTP), 必填

http://192.168.66.254:9527/metadata/

Reply URL (Assertion Consumer Service URL), 必填

https://192.168.66.254:9527/saml/?acs

Sign on URL. 必填

https://192.168.66.254:9527/saml/login/

Logout Url (Optional)

https://192.168.66.254:9527/saml/?sls

填入完畢後,選擇上方的 Save

第二步的 Attributes & Claims,雖然已經使用貼心範本,但仍需要額外新增一個項目,請點擊 Edit

點擊 Add new claim

Name 輸入 username
Namespace 保持空白
Source 選擇 attribute
Source attribute 使用 user.userprincipalname
最後點擊 Save

完成此 SSO 驗證設定,最重要的兩個屬性及宣告需求

第三步,請將 Certificate (Base64) 下載到你的本機電腦,後續會需要將此憑證上傳到 FortiGate 端

下載後的檔案,會是一個可檢視的 CER 檔案

第四步中,提供了三個欄位的資訊如下範例,請將其複製到空白文件上,後續同樣會在 FortiGate 端使用到

#Login URL, 對應 FortiGate 的 idp-single-sign-on-url
https://login.microsoftonline.com/TenantID/saml2
#Azure AD Identifier, 對應 FortiGate 的 idp-entity-id
https://sts.windows.net/TenantID/
#Logout URL, 對應 FortiGate 的 idp-single-logout-url
https://login.microsoftonline.com/TenantID/saml2

回到左側選單,設定可存取此 Enterprise Application 及驗證的使用者或群組,點選 Users and groups,點擊上方的 + Add user/group

於此頁面,新增此 Ent App / SSO 可存取的使用者帳號或群組。

如果跟我一樣在畫面上看到「Groups are not available for assignment due to your Active Directory plan level. You can assign individual users to the application.」,且無法使用群組方式指派權限,代表你的 Azure AD 方案 Azure Premium P2 版本。

2. 上傳 Azure AD Ent App 的 SAML 憑證到 FortiGate
登入到 FortiGate 管理後台,將先前從 Azure 下載的 Certificate (Base64),參考下圖位置,到 FortiGate \ System \ Certificate,請務必選擇 Remote Certificate 項目,上傳到 FortiGate。

上傳後,預設名為會是 REMOTE_Cert_1。請記下該名稱,後面設定也將會使用到。這裡也會看到 Subject 顯示為 CN = Microsoft Azure Federated SSO Certificate

3. 在 FortiGate 設定 SAML 與 Azure AD 整合 SSO
請使用 CLI 模式,參考以下步驟設定 SAML SSO。啟動 CLI輸入

config system saml

參考下面指令,將

  • 第三至五行的資訊填妥
  • 第六行請指定憑證上傳後的名稱,預設為 REMOTE_Cert_1
  • 第七行請使用此格式,無須加上 https://

接著貼上到 CLI 後執行,即完成所有設定。

set status enable
set default-profile "admin_no_access"
set idp-entity-id "https://sts.windows.net/TenantID/"
set idp-single-sign-on-url "https://login.microsoftonline.com/TenantID/saml2"
set idp-single-logout-url "https://login.microsoftonline.com/TenantID/saml2"
set idp-cert "REMOTE_Cert_1"
set server-address "192.168.66.254:9527"
end

使用下面指令,檢查設定

show system saml

4. 在 FortiGate 編輯已成功登入SSO Admin 對應登入帳號
假設確認完成前述階段的工作,FortiGate 就會在登入頁面,新增顯示「or via Single Sign-On」的選項,點擊後就會導向到 Azure AD 進行身分驗證工作

但首次透過 Azure AD 完成身分驗證的使用者,在導回至 FortiGate 端時,預設會顯示沒有權限存取

An SSO administrator account has been created for "username@domain.com".

This account is using a restricted access profile with limited permissions. Additional permission must be granted by the device administrator.

如下圖

主要原因是上階段的 CLI 範例,授予登入的 Profile 是 admin_no_acces,也就是即便通過 SSO 成功登入 FortiGate,預設還是不給直接存取,必須額外再到管理後台授與權限。

站在一個 Zero Trust 的角度,主要避免有人意外或刻意在 Azure AD Ent App 端設新增帳號,而直接獲取登入 FortiGate 後台的權限

請利用原先或其他有權限的管理帳號,將首次登入成功的 SSO Admin 帳號,參考下圖,到 FortiGate \ System \ Administrators,編輯該帳號的 Profile,修改為可正常管理的 Super Admin 或其他 Admin Profile。

完成這一步,整個 SSO 登入才算是大功告成。

參考資料
Fortinet Community - Technical Tip: Configuring SAML SSO login for FortiGate administrators with Azure AD acting as SAML IdP