The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何正確地替 Azure Active Directory 使用者啟用多因素驗證 (MFA)

我們上周有同事帳號被駭客入侵,在 30 分鐘內被建立了上百台虛擬機器(VM),還好他有設定消費限制,所以他的訂用帳戶(Subscription)一下子就被停用了,然而我到了隔天深夜才收到訂用帳戶停用的通知,如果沒設定消費限制的話,那真的就慘了!同事覺得納悶的點是,他明明有設定多因素驗證 (MFA) (Multi-Factor Authentication) 驗證方法(Authentication methods),怎麼駭客還可以從烏茲別克(Uzbekistan)用他的帳號密碼登入 Azure Portal 呢?這篇文章我就來說說我這兩天對 Microsoft 365 / Azure AD 在 MFA 的研究心得,超重要!🔥

MFA

這篇文章我會介紹幾個跟 MFA 相關的幾個重要網站:

  1. Azure Active Directory admin center (aad.portal.azure.com)

    主要給 Azure AD 管理者使用的介面,管理者必須從這裡啟用使用者的 MFA 設定,否則使用者無法使用 MFA 進行驗證。

  2. My Account (myaccount.microsoft.com)

    主要給 Azure AD 使用者使用的介面,可以說是關於「帳號」的入口網站,可以從這裡開啟所有跟帳號相關的設定。

  3. My Sign-Ins (mysignins.microsoft.com)

    主要給 Azure AD 使用者使用的介面,這裡會顯示你最近的帳戶活動記錄(Recent activity),可以得知從哪個 IP 登入你的帳號。另外也可以讓你設定 Security info (安全性資訊),提供 MFA 必要的驗證方法(Authentication methods)!

  4. Microsoft Online Password Reset (passwordreset.microsoftonline.com)

    主要給 Azure AD 使用者使用的介面,這裡可以讓你申請重置密碼(Password reset)!

為什麼大家會誤以為已經啟用 MFA 呢?

老實說,連我自己都認為,公司內的所有人應該都可以隨意啟用 MFA 才對,管理者怎麼會需要做什麼事呢?我錯了!

這件事要說說 Azure AD 的發展歷史,其實 Azure AD 很早就有提供 MFA 機制,但主要是用在「密碼重置」的功能,讓安全性需求較高的功能透過 MFA 強化安全性。後來應該是在「登入」時也加入了 MFA 機制,但兩個功能可能是由不同組的開發人員設計的,這導致使用者要維護兩份 MFA 驗證方法(Authentication methods),這樣的設計不但會讓使用者覺得困擾且混淆,而且也有可能設定不一致的情況。近幾年,微軟開始對這個功能進行重整,把兩個不同目的的 MFA 驗證方法合併為一個,也就是「密碼重置」與「登入」會共用一組驗證方法(Authentication methods),你只要設定一遍 MFA 驗證方法即可!但其實這個歷史故事沒多少人清楚,反正網站叫我要設定 MFA 驗證方法時,輸入就對了!

雖然新的設計看起來好像不錯,但卻讓人產生了一種錯覺:「設定好 MFA 驗證方法之後,就等於啟用了 MFA 了對吧?」我同事就是這樣想的,而我自己也是這樣想的,大家覺得呢?

我以前就會懷疑,為什麼我都看不到啟用 MFA 的選項?應該是設定了 MFA 就會啟用吧?不去特別研究背後的原理,真的太容易被誤會了!🔥

我之前就常說 Azure Active Directory 是宇宙最複雜的 Identity Management 解決方案,功能繁多又強大,大到不會用真的就是常態!😅

正確的啟用多因素驗證 (MFA)

原來根據不同的目的性,需要使用 MFA 的情境也有所不同:

  1. 密碼重置

    Azure AD 管理者可以在 Azure Active Directory admin center 設定使用者是否可以自己重置密碼,如果該功能啟用的話,意味著這些人都必須先設定好 MFA 驗證方法,才能自行重置密碼!

    以下是啟用的方法:

    Password reset | Properties

    在我公司,這個 Password reset 功能是對全員啟用的,所以大家如果有重置密碼的需求,就會被提示要設定輸入 MFA 驗證方法資訊!

    然而,你可以在 Password reset | Authentication methods 設定要給密碼重置用的 MFA 驗證方法有哪些,還可以設定至少要答對幾個才能重設密碼!

    Password reset | Authentication methods

  2. 登入

    Azure AD 管理者可以在 Azure Active Directory admin center 透過 Per-user MFA 功能幫使用者設定是否該啟用 MFA 功能:

    Azure Active Directory admin center > Per-user MFA

    設定時有三種選項,分別是 DisabledEnabledEnforced

    multi-factor authentication

    如果你要讓使用者強制用 MFA 登入,就要把使用者設定為 EnabledEnforced 才會在「登入」時啟用 MFA 機制!

    注意: 當你設定 Enabled 之後,使用者要在 14 天內設定好 MFA 驗證方法資訊,否則就無法登入了!另外,如果你先前就已經設定好 MFA 驗證方法資訊的話,啟用的當下就會立刻生效,而且現有的帳號都會立刻被登出,必須進行一次 MFA 驗證才能登入。其中包含先前設定好的 Power Automate 連線,也都需要重新驗證過才能執行。

所以無論是在「密碼重置」或「登入」時啟用 MFA,整件事原來都是「管理者」的工作,跟「使用者」無關,使用者無法自行啟用此功能!

啟用 MFA 之後「使用者」可以做什麼事

當「管理者」啟用「密碼重置」或「登入」的 MFA 要求後,使用者第一件要做的事情,當然就是去設定自己的 MFA 驗證方法

短網址:https://aka.ms/MFASetup

請設定至少兩個驗證方法,以免帳號無法登入,且建議使用 Microsoft Authenticator 設定為預設登入方法(Default sign-in method)。

Security info

如果你忘記密碼的話,就可以到 Microsoft Online Password Reset 來重置密碼!

更多 MFA 進階設定

Azure Active Directory admin center 透過 Per-user MFA 設定時,可以切換到一個不太顯眼的 service settings 頁籤,裡面可以調整 4 個進階的 MFA 設定。

service settings > app passwords

以下我做出大致說明:

  1. app passwords (learn more)

    有些早期的非瀏覽器的應用程式,像是 Office 2010 之前的版本,或是 Apple Mail 在 iOS 11 之前的版本,這些都不支援 MFA 驗證機制,這會導致你在啟用 MFA 之後,這些應用程式就無法登入了。如此一來,你就有可能需要額外建立所謂的 app passwords 來登入這些應用程式。

    詳情請見 Use app passwordsCreate app passwords from the Security info (preview) page 文件。

  2. trusted ips (learn more)

    你可以設定一些來「信任的 IP 來源」來關閉 MFA 要求,例如你人在公司上班,理論上是在一個較為受信任的環境,在這樣的環境下可以有條件的關閉 MFA 要求,簡化登入流程。

    trusted ips

  3. verification options (learn more)

    這裡可以讓你設定有哪些資訊可以當成驗證方法

    • Call to phone (打電話到手機)
    • Text message to phone (發簡訊到手機)
    • Notification through mobile app (透過 Authenticator 驗證)
    • Verification code from mobile app or hardware token (透過 Authenticator 驗證或硬體權杖)

    verification options

    這塊設定屬於 legacy MFA policy 部分,從 January 2024 開始就無效了,建議改用 Azure Active Directory admin centerPassword reset | Authentication methodsAuthentication methods | Policies 的設定為主。

  4. remember multi-factor authentication on trusted device (learn more)

    勾選這個選項可以讓使用者成功使用 MFA 登入的裝置,在指定天數以內不用再進行 MFA 驗證:

    remember multi-factor authentication on trusted device

    這個設定啟用後,使用者會在登入時看到以下選項:

    Approve sign in request

另外,在 Azure Active Directory admin centerSecurity > Multifactor authentication 也有好幾項關於 MFA 的設定可以調整。

  • Account lockout

    如果你是用 Google Authenticator 這種需要輸入 PIN Code 的 Mobile App 進行 MFA 驗證,你就可以在這裡設定鎖定的規則,連續輸入幾次就要封鎖幾分鐘。

    Multifactor authentication | Block/unblock users

    此設定不適用 Microsoft Authenticator 驗證器!

  • Block/unblock users

    由於我們公司大多數同仁都已經有先設定過 MFA 安全性資訊,如果你先前就已經設定好 MFA 安全性資訊的話,啟用 MFA 的當下就會立刻生效,而且現有的帳號都會立刻被登出。我們有位同事,在我啟用 MFA 的當下,手機就開始跳出驗證通知,他果斷的按下「拒絕」,結果導致他再也無法使用 Mobile App 進行驗證,真的是悲劇! 😅

    老實說我不知道他看到的是什麼訊息,但從下圖的 Reason 看來,應該是使用者自己「封鎖」了他自己的帳號,導致該帳號 90 天內再也無法登入。身為管理者,要知道來這裡查看是否有帳號被封鎖的紀錄,必要時可以按下 Unblock 解鎖帳號!👍

    Multifactor authentication | Block/unblock users

    當然,你也可以在這裡新增帳號鎖定,如果有帳號疑似被入侵,就可以手動加入清單!

    Video: How to block or unblock multi-factor authentication (MFA) for users in your tenant

  • Fraud alert

    如果使用者莫名的收到驗證通知,你如果非常確定不是你,那麼你可以在 Microsoft Authenticator 回報詐騙通知,而且可以自動設定封鎖帳號。

    這裡有個 Code to report fraud during initial greeting 設定,是說當你接收到 Call to phone 的打電話 MFA 驗證時,要在電話上輸入什麼碼來代表「詐騙」登入,這裡的預設值為 0。預設來說,如果是正常的驗證,輸入 # 就可以通過 MFA 驗證。如果要回報詐騙登入,就可以輸入 0# 就會立刻封鎖帳號,非常方便。

    你可以改成 9 或其他數字,但請記得到 Phone call settings 上傳自定義的語音提示,當然也可以故意說一個假的,這樣當你有人身安全問題時,就可以透過這個方式立刻封鎖帳號。😅

    Multifactor authentication | Fraud alert

  • Notifications

    你可以在這裡設定,當使用者發出「詐騙」回報時,要把這份通知寄給誰:

    Multifactor authentication | Notifications

  • OATH tokens

    Azure AD 支援 OATH TOTP SHA-1 tokens 的驗證方式,他是一種硬體的 OTP 產生器,內建高精度時鐘,他會在 30 ~ 60 秒之間動態產生一個 OTP Code,然後當成 MFA 的驗證方法之一。你可以從受信任的廠商購買這些裝置,並取得 Token 的一些參數設定,並匯入到這邊來即可。

    Multifactor authentication | OATH tokens

  • Phone call settings

    當你想要使用 Call to phone 這種打電話的 MFA 驗證時,可以在這邊設定 Greeting 聲音檔,蠻酷的!😃

    Multifactor authentication | Phone call settings

完整的設定說明請見 Configure Azure AD Multi-Factor Authentication settings 說明。

如何檢查帳號登入活動 (從使用者的角度)

如果真的不幸帳號被駭客入侵,「使用者」可以怎樣處理呢?以下幾點建議提供參考:

  1. My Sign-Ins 網站查詢最近的登入活動紀錄,這裡詳盡的記錄了你自己每次的登入紀錄,包含所在地點(Location)、作業系統(Operating System)、瀏覽器(Browser)、IP、應用程式(App)、登入帳號(Account)等資訊!

    My Sign-Ins

  2. 如果你心裡覺得怪怪的,感覺好像被入侵之類的,立刻到 My Account 網站,按下 Sign out everywhere 按鈕,將自己所有的登入工作階段(Sign-in sessions)登出!

    My Account > Sign out everywhere

  3. My Account 查看 Devices (裝置清單),只要是你未曾看過的設備,都可以從這裡停用裝置。

    My Account > Devices

    注意: 裝置停用之後,只有「管理者」可以協助重新啟用。

如何檢查帳號登入活動 (從管理者的角度)

如果真的不幸帳號被駭客入侵,「管理者」可以怎樣處理呢?基本上你都可以從 Azure Active Directory admin center 找出以下功能:

  1. 第一層選單的 Sign-in logs 可以查詢整個組織(Tenant)最近一個月登入紀錄,可以下載 CSV 檔案,方便用 Excel 進行分析。

    Sign-in logs

  2. Sign-in logsExport Data Settings 功能,可以設定將這些登入紀錄傳送到 Azure Log Analytics workspace、Storage account、Event Hub 或其他第三方的服務,若搭配 Azure Functions 就可以做到自動告警機制!

    Diagnostic setting

  3. 第一層選單的 Security 可以查詢整個組織(Tenant)最近高風險使用者登入紀錄有哪些,我覺得非常具有參考價值!我們這次被駭客入侵的帳號,兩次的登入紀錄都有出現在這裡!

    Security | Risky users

  4. 第一層選單的 Devices 可以查詢整個組織(Tenant)所有的裝置清單,你可以透過 Activity 欄位,得知這些裝置最後一次的活動時間,有些太久沒登入的裝置就可以刪除掉!

    All devices

相關連結

留言評論