2019年10月8日 星期二

開源雙因素驗證器:FreeOTP Authenticator



在各種密碼攻擊手法不斷突破的情況下,登入系統僅只於使用一道帳號密碼程序顯然已經不夠安全,即便加強密碼複雜度,還是需要有更多一道的安全程序以達成雙因素驗證 (2FA,Two-Factor authentication) ,而一次性密碼 (OTP) 即是一種適合的方案。

在過去 OTP 的其中一種方案是發送簡訊碼至手機上,而現在有越來越多系統支援以手機 App 結合時間同步產生的方式來達成更容易且方便的機制 (TOTP),並降低發送簡訊的成本方案可以採用。




方案介紹

在這個鐵人賽系列文章所介紹過的許多軟體系統,例如 Proxmox VE、LibreNMS...等,都有支援這種 TOTP 功能機制。因此我們只要開啟這個功能,立即可以提升系統的登入安全機制。

App 上的方案有多種選擇,例如 Google Authenticator 與 
Authy。但我選擇由 Red Hat 所維護的開源方案 FreeOTP Authenticator。
  • 支援 Android、iOS 兩大作業系統
  • 支援 HOTP、TOTP 兩種開放標準
  • 支援拍攝 QR Code 方式快速匯入資訊









使用方式

直接到 Android 的 Google Play 或 iOS 的 App Store 搜尋 FreeOTP,即可快速進行安裝使用。
要啟用 TOTP 機制,最主要是需在應用系統上開啟相關設定,在此我們會以兩個類似的系統方案做為案例。


Nextcloud

這是一套知名的開源網路檔案平台,提供許多豐富好用的功能。

登入 Nextcloud 後,點選右上方帳號名稱,於彈出的選單點選 [個人] 進入設定,接著點選左方選單列的 [TOTP Second-factor Auth],右方會出現 TOTP 相關設定,請勾選「Enable OTP」。

若找不到這個功能,請先到 Nextcloud 的 apps 中安裝它。



啟用 TOTP 功能


當把這個選項勾選之後,下方就會出現一組 QR Code,此時請手機上開啟 FreeOTP 應用程式,按下程式上方的條碼圖示按鈕,它會開啟手機的相機,即可對著畫面上的這組 QR Code 進行掃描,掃描完成後 FreeOTP 會自動建立這筆驗證的相關資訊。



進行 QR Code 掃描 (此圖取自官方網站)


下次要登入 Nextcloud 時,經過帳號密碼驗證後,下一步就會要求提供 OTP 輸入,



Nextcloud TOTP 登入要求


此時請開啟手機上的 FreeOTP 程式,按下 Nextcloud 那一組,即會產生一組有時效性的密碼 (前方會有一倒數圖示,時間到了以後就會重算新密碼),請把此密碼填入 Nextcloud 網頁上的 OTP 輸入欄位,即可通過驗證。



產生 Nextcloud TOTP 登入碼




Synology DSM

這是由知名 NAS 廠商所開發的網路檔案平台,與硬體整合搭配出售的產品。

登入 DSM 後,點選右上方帳號圖像,於彈出的選單點選 [個人設定] 進入畫面,接著是先勾選下方的 [兩步驟驗證],再按下 [兩步驟驗證] 按鈕,他會引導您設定如電子郵件等意外處理的措施,在最後一步時,會出現 QR Code。

此時請手機上開啟 FreeOTP 應用程式,按下程式上方的條碼圖示按鈕,它會開啟手機的相機,即可對著畫面上的這組 QR Code 進行掃描,掃描完成後 FreeOTP 會自動建立這筆驗證的相關資訊。



啟用 TOTP 功能


下次要登入 DSM 時,經過帳號密碼驗證後,下一步就會要求提供 OTP 輸入,



DSM TOTP 登入要求


此時請開啟手機上的 FreeOTP 程式,按下 DSM 的項目,即會產生一組具有時效性的密碼 (前方會有一個倒數圖示,時間到了以後就會重算新密碼),請把此密碼填入 DSM 網頁上的 OTP 輸入欄位,即可通過驗證。



產生 DSM TOTP 登入碼







結論

透過 TOTP 的兩階段驗證安全機制,可以提升系統除了帳號與密碼之外的安全性,採用開源軟體做為驗證器,更能夠安心的使用。

而 Unix-Like 系統最常使用的管理方式 SSH 協定,也已經有 TOTP 的模組可以用來加強管理者的安全性。雖然這個模組是由 Google 開發對應 Google Authenticator,其實也可以相容於 FreeOTP 沒有問題,可至參考資料連結中查看安裝與使用方式。

除了應用在自己重要的系統之外,個人的許多帳戶也都可以如此運用,例如 Gmail、Facebook... 等,也都支援了這樣的雙重安全機制,保護您的帳號安全。





參考資料