Code Section

Showing posts with label One Time Password. Show all posts
Showing posts with label One Time Password. Show all posts

Monday, July 30, 2018

Fortinet FGT 動手做 - 整合免費的 Google Authenticator 兩步驟驗證 Part 2

因此我不禁思考,FortiGate 可以採用自家產品 FortiToken 作為 OTP Token 來進行兩階段驗證,但是我們能不能改成使用 Google Authenticator 來作為我們 FortiGate 的「兩步驟驗證」工具呢?

原先我有幾個想法 (Theory):
(T-1) FortiGate 可支援透過 Radius 通訊協定,與 3rd Party 的認證設備做身份驗證的溝通。(如下圖說明)
[✖] (T1-A) Google Authentication 並未提供 Radius 的溝通方式。

下圖為 T1 的實踐方式,FortiGate 與 RSA Authentication Manager 透過 Radius 通訊協定整合,使用者輸入帳號及 Passcode 登入。
<註>登入時先查看 Token 產生的動態密碼,並將原先的密碼 (Password)與 Token 動態密碼 (Token Code)合併為 Passcode。

(T2) 利用 Radius Server 作為 FortiGate 的遠端認證主機,由 Radius Server 往外將第二道認證拋給 Google Authentication。
[✖] (T2-A1) 原本考慮 Radius Server 採用 Microsoft NPS (Network Policy Server) on Windows,視窗介面較好操作,但 NPS 不直接支援這種做法。(下段有說明原因)
[✔] (T2-A2) Radius Server 採用 FreeRADIUS on Linux,再由 FreeRADIUS 拋給 Google Authentication 作動態密碼驗證。

來說說 T2-A1 的原因,Microsoft NPS 無法自由調整設定或客制,但 NPS 能設定條件,將符合條件的往外丟給其他 Remote Radius Server 作驗證:
(1) 如同文章開頭提到的,Google Authentication 並無提供 Radius 溝通方式,所以此路不通。
(2) 有些商用的 2-Factor Authentication 設備可支援 Radius 通訊協定,同樣也有提供 App 下載可作為 Mobile Token,就可與 NPS 做到 2FA 認證整合,至於授權計費方式就不細究,因為已經背離此篇的討論方向。

所以就朝 T2-A2 的方向,在 Linux 上安裝 FreeRADIUS,加上 Google Authenticator 認證機制,用這台來當作 FortiGate 的外部 Radius Server,看是否能達到使用 Google Authenticator 作為 FortiGate 的「兩步驟驗證」工具。

首先準備好 CentOS 6.7 64-bit 環境,為什麼是這個版本呢?因為我手上剛好有之前安裝好的 VM,不需要從頭開始安裝,而且 CentOS 也很容易安裝,這邊就不贅述如何安裝 Linux 作業系統,當然你要採用更新的 CentOS 7 應該也是沒問題的。

至於如何安裝 FreeRADIUS 及 Google Authenticator Module 做到 2FA 整合呢?下一篇我會再來詳細說明。



<<參考資料>>

Fortinet FGT 動手做 - 整合免費的 Google Authenticator 兩步驟驗證 Part 1

在現在的數位生活時代,Google 服務也漸漸成為密不可分的一部分,每天都會收發信件的 GMail、存在檔案及分享給別人的 Google Drive、排定每天行程的 Google Calendar、與手機通訊錄同步的 Google Contacts、上傳照片分享相簿的 Google Photos,當然還有每天要用幾百次搜尋的 Google Search,幾乎是每天一睜開眼睛就需要 Google。我常會開玩笑說,有很多網站幾天連不上都沒關係,但是如果哪天突然連不上 Google 服務,會不知道今天排定什麼事、沒有那麼多好用的工具,要怎麼樣開始一天的工作,感覺超恐慌的。

Google 的雲端服務是如此的方便,在任何時間、任何地點、任何裝置,只需要輸入帳號和密碼登入後,就能存取你要的資料、使用你要的服務,而帳號和密碼當然就是最重要的鑰匙,保護著你的所有重要資料。雖然這樣的機制看起來似乎很安全,但其實不然,如果使用習慣不好,或是常在非個人的裝置上登入,其實帳號和密碼很容易會被有心人取得。

Google 希望盡可能提供更安全的方法來保護使用者的帳戶,在幾年前推出「兩步驟驗證」(或叫做 兩階段驗證、雙重驗證、雙因子驗證)就是一個不錯的解決方案。在啟動兩步驟驗證後,在使用者輸入帳戶和密碼後,會多加一個驗證動作,需要輸入你手機上看到的動態驗證碼,來驗證登入者是否為本人。

「兩步驟驗證」在以往智慧型手機還不普遍的時候,是採用 SMS 簡訊方式,傳送到當初註冊時所填寫的手機號碼,但使用者需自行支付簡訊傳送費用。在智慧型手機普及後,Google 開發出 Google Authenticator 的 App,安裝在 Android/iOS 手機上,經過簡單的設定之後,它就會產生你的帳號「兩步驟驗證」的隨機驗證碼,不需要額外的費用。

Google Authenticator 是一種方便又免費的「兩步驟驗證」工具,因此後來有許多雲端服務,也都陸續支援採用 Google Authenticator 作為他們的「兩步驟驗證」工具,以加強用戶的安全性,讓使用者不需要在手機上安裝多個隨機驗證碼 App,也省下自行開發及維護驗證服務的費用。

因此我不禁思考,FortiGate 可以採用自家產品 FortiToken 作為 OTP Token 來進行兩階段驗證,但是我們能不能改成使用 Google Authenticator 來作為我們 FortiGate 的「兩步驟驗證」工具呢?下一篇我們來看這個構想該要如何進行。