Azure AD 與 ADFS 最佳做法:防禦密碼噴濺攻擊
大家好,
只要您有過密碼,就一定會有人去猜它是什麼。這篇部落格文章中,我們要討論的是一種最近變得極其頻繁的常見攻擊,並告訴您幾種防禦的最佳做法。這種攻擊一般稱為「密碼噴濺」。
在密碼噴濺攻擊中,攻擊者會使用許多不同帳戶與服務中最常見的密碼,去嘗試存取任何他們能找到的密碼保護資產。這些攻擊通常可能橫跨許多不同組織和識別提供者。舉例來說,攻擊者會使用 Mailsniper 這類容易取得的工具組去羅列出數個組織中的所有使用者,然後嘗試用「P@$$w0rd」和「Password1」去登入這些帳戶。為了讓您清楚了解,這種攻擊行為可能像這樣:
目標使用者 | 目標密碼 |
[email protected] | 密碼1 |
[email protected] | 密碼1 |
[email protected] | 密碼1 |
[email protected] | 密碼1 |
… | … |
[email protected] | P@$$w0rd |
[email protected] | P@$$w0rd |
[email protected] | P@$$w0rd |
[email protected] | P@$$w0rd |
這種攻擊模式避開了大多數偵測技術,因為以個別使用者或公司的角度來說,這類攻擊看起來就只像是獨立的登入失敗行為。
但對攻擊者來說,這是一場以量取勝的遊戲:他們知道有某些密碼確實極為常見。即便使用這些最常用密碼的帳戶只佔了總帳戶量的 0.5 到 1.0%,但只要每千個帳戶中能讓攻擊者取得幾次成功,攻擊就已經算是有效了。
他們會使用這些帳戶去取得電子郵件中的資料、搜集連絡人資訊並傳送網路釣魚連結,或是單純拓展密碼噴濺的目標群。攻擊者不在乎自己攻擊的目標到底是誰,只要能獲得可以利用的成功結果就好。
好消息是,Microsoft 已經實作了許多能夠干擾這些攻擊效能的工具,並會推出更多工具。請閱讀下文來了解您可以在現在與未來幾個月中採取哪些動作,以阻止密碼噴濺攻擊。
4 個能輕鬆干擾密碼噴濺攻擊的步驟
步驟 1:使用雲端驗證
在雲端,我們每天會看到數十億次登入 Microsoft 各項系統的活動。我們的安全性偵測演算法能讓我們偵測攻擊,並在攻擊發生的當下便加以阻擋。因為這些即時偵測與防護系統是從雲端驅動,所有只有在您從雲端進行 Azure AD 驗證時能夠使用 (包括 傳遞驗證)。
智慧鎖定
我們會在雲端使用智慧鎖定來區別哪些登入看起來是來自有效使用者,哪些登入則可能是攻擊者。我們能封鎖攻擊者,並讓有效使用者繼續使用帳戶。這能防範使用者受到服務拒絕,並且阻止過於急切的密碼噴濺攻擊。我們已將這項功能應用到任何授權等級的 Azure AD 登入,以及所有的 Microsoft 帳戶登入。
2018 年 3 月起,使用 Active Directory 同盟服務 (ADFS) 的租用戶將能在 Windows Server 2016 的 ADFS 中使用智慧鎖定功能,請留意 Windows Update 以獲得這項功能。
IP 鎖定
IP 鎖定的運作方法是透過分析數十億次登入活動,來評定每組 IP 位址對 Microsoft 各系統存取活動的品質。IP 鎖定能以這項分析找出行為可疑的 IP 位址,並即時封鎖登入。
攻擊模擬
攻擊模擬器現在已提供公開預覽,身為 Office 365 威脅情報一員的它,能讓客戶對其使用者展開模擬攻擊,判斷使用者在攻擊事件中會如何反應,並更新原則以確保已使用適當的安全性工具,保護貴組織不受密碼噴濺攻擊等威脅。
我們建議您盡速執行下列事項:
- 如果您正在使用雲端驗證,您便已受到保護
- 如果您使用 ADFS 或其他混合式案例,請參閱 2018 年 3 月的 ADFS 升級來獲得智慧鎖定功能
- 請使用攻擊模擬器來主動評估您的安全性狀態,並進行調整
步驟 2:使用多重要素驗證
密碼是存取帳戶的鑰匙,但攻擊者就是猜對了密碼,才會讓密碼噴濺攻擊成功。為了阻止這些攻擊者,我們需要使用密碼以外的東西來分辨帳戶擁有者與攻擊者。以下是三種能夠達成此目標的做法。
風險型多重要素驗證
Azure AD Identity Protection 會使用前述登入資料加上進階機器學習與演算法偵測,為進入系統的每一次登入評定風險分數。這能讓企業客戶在 Identity Protection 中建立原則,如果偵測到使用者或該次工作階段有風險,系統就會提示使用者使用第二重要素進行驗證。這能減少使用者的負擔,並阻礙惡意人士。請在此深入了解 Azure Active Directory Identity Protection。
常駐型多重要素驗證
如果需要更高的安全性,您可以使用 Azure MFA 來要求使用者無論是在雲端驗證或 ADFS 中,「每次」都需要進行多重要素驗證。這會需要使用者在每一次登入時都持有他們的裝置,並且更頻繁地進行多重要素驗證,以提供貴企業最高的安全性。您應該對組織中的每位系統管理員啟用此功能。請在此深入了解 Azure Multi-Factor Authentication,以及如何設定 ADFS 的 Azure MFA。
以 Azure MFA 做為主要驗證
在 ADFS 2016 中,您能夠使用 Azure MFA 做為無密碼驗證的主要驗證方式。這項極佳工具能防範密碼噴濺和密碼竊取攻擊:畢竟,如果沒有密碼,也就沒有目標可以猜測了。這適用於擁有不同要素形式的所有類型裝置。此外,您現在只能在使用 Azure MFA 驗證了 OTP 後,才能將密碼當成第二要素。請在此深入了解如何使用密碼做為第二要素。
我們建議您盡速執行下列事項:
- 我們強烈建議您針對組織中的「所有系統管理員」啟用常駐型多重要素驗證,特別是訂閱擁有者和租用戶系統管理員。真的,請立即執行此動作。
- 為了讓其餘使用者獲得最佳體驗,我們建議您為他們啟用風險型多重要素驗證,Azure AD Premium P2 授權能夠提供這項功能。
- 否則,請針對雲端驗證與 ADFS 使用 Azure MFA。
- 在 ADFS 中,請在 Windows Server 2016 上升級至 ADFS,以便使用 Azure MFA 做為主要驗證方式,特別是針對您所有的外部網路存取。
步驟 3:讓每個人使用更適當的密碼
即使您採取了上述所有動作,密碼噴濺防禦關鍵元素還是讓「所有」使用者擁有難以猜測的密碼。讓使用者了解如何建立難以猜測的密碼常常是件難事。Microsoft 能使用下列工具協助您實現這一目標。
禁用密碼
在 Azure AD 中,每次密碼變更和重設都要受到禁用密碼檢查器檢驗。有人提交新密碼時,系統會將該密碼與一系列字詞清單進行模糊比對,這些字詞是任何人都不應該使用在密碼中的詞彙 (就算以 l33t-sp3@k 等 Leet 拼寫也無法逃避比對)。如果有符合項目,那麼系統會拒絕該組新密碼,並要求使用者選擇更難猜測的密碼。我們打造了這份最常受到攻擊的密碼清單,並時常更新。
自訂禁用密碼
為了讓禁用密碼功能更完善,我們將會允許租用戶自訂禁用密碼清單。系統管理員能選擇其組織常見的字詞,例如有名的員工或創辦人、產品、地點、地區特點等等,以防止使用者在密碼中使用這些詞彙。我們會將這份清單強制新增到全球適用的清單中,讓您不需要在清單之間抉擇。這項功能目前處於有限預覽版狀態,並將在今年推出。
針對內部部署變更的禁用密碼
今年春天,我們推出了能讓企業系統管理員在混合式 Azure AD-Active Directory 環境中禁用密碼的工具。禁用密碼清單會從雲端同步至您的內部部署環境中,並在擁有該代理程式的每個網域控制站上強制執行。無論使用者在雲端或內部部署中變更密碼,這項功能都可以協助系統管理員確保其他人更難猜對其密碼。我們已於 2018 年 2 月推出此功能的有限私人預覽版,並將於今年推行至全球。
改變您對密碼的認知
很多關於良好密碼的常見觀念都是錯誤的。通常,越符合數學邏輯的觀念越容易造成可預測的使用者行為:例如,要求使用特定字符類型和要求週期性變更密碼,都會造成特定的密碼模式。請參閱我們的密碼指導方針白皮書來了解更多詳細資料。如果您搭配 PTA 或 ADFS 使用 Active Directory,請更新您的密碼原則。如果您使用雲端管理帳戶,請考慮將密碼設定為永不到期。
我們建議您盡速執行下列事項:
- 請在 Microsoft 禁用密碼工具內部部署發行後立即安裝,這能協助您的使用者建立更適當的密碼。
- 請檢閱您的密碼原則,並考慮將密碼設定為永不到期,這樣您的使用者就不會使用季節性模式來建立密碼。
步驟 4:使用 ADFS 與 Active Directory 中其他強大功能
如果您搭配 ADFS 與 Active Directory 使用混合式驗證,可以採取更多步驟來保護您的環境不受密碼噴濺攻擊。
第一個步驟:如果是運行 ADFS 2.0 或 Windows Server 2012 的組織,請您盡速規劃移轉至 Windows Server 2016 中的 ADFS。這份最新版本能夠更快更新,讓您擁有外部網路鎖定等更豐富的功能。同時也請您記得:從 Windows Server 2012R2 升級到 2016 其實非常簡單。
封鎖來自外部網路的舊版驗證
舊版證通訊協定無法強制執行 MFA,因此最好的方法是封鎖來自外部網路的舊版驗證。此步驟會防止發起密碼噴濺攻擊的人利用這些缺乏 MFA 的通訊協定。
啟用 ADFS Web 應用程式 Proxy 外部網路封鎖功能
如果您尚未啟用 ADFS Web 應用程式 Proxy 的外部網路封鎖功能,您應該盡速啟用此功能,以保護您的使用者免受潛在暴力破解密碼攻擊侵犯。
部署適用於 ADFS 的 Azure AD Connect Health
Azure AD Connect Health 能擷取 ADFS 記錄中使用者名稱/密碼不良要求的 IP 位址,這能讓您獲得一系列案例的額外報告,並在開啟輔助支援案例時,提供更多深入解析來支援工程師。
若要進行部署,請在所有 ADFS 伺服器 (2.6.491.0) 上下載適用於 ADFS 的 Azure AD Connect Health 代理程式。ADFS 伺服器必須執行安裝了 KB 3134222 的Windows Server 2012 R2,或是 Windows Server 2016。
使用非密碼式存取方法
不用密碼,就沒有密碼會受到猜測。下列非密碼式驗證方法可供 ADFS 和 Web 應用程式 Proxy 使用:
- 憑證式驗證能讓防火牆完全封鎖使用者名稱/密碼端點。深入了解 ADFS 中的憑證式驗證
- 如前文所述,您可以在雲端驗證、ADFS 2012 R2 與 ADFS 2016 中,把 Azure MFA 當成第二要素使用。但您也可以將它當成 ADFS 2016 中的主要要素,完全阻止任何密碼噴濺的可能性。請在此了解如何設定 Azure MFA 搭配 ADFS
- Windows 10 提供的 Windows Hello 企業版 (於 Windows Server 2016 內受 ADFS 支援) 能夠依據使用者與裝置使用的強式密碼編譯金鑰,提供包括外部網路在內的完全無密碼存取。已加入 Azure AD 或已加入混合式 Azure AD 的公司管理裝置可以使用此功能,同時,個人裝置也可透過設定 App 的 [新增公司或學校帳戶] 選項來使用此功能。獲得更多關於 Hello 企業版的詳細資訊。
我們建議您盡速執行下列事項:
- 升級至 ADFS 2016 以更快獲得更新
- 封鎖來自外部網路的舊版驗證。
- 在所有 ADFS 伺服器上部署適用於 ADFS 的 Azure AD Connect Health 代理程式。
- 考慮使用無密碼主要驗證方法,例如 Azure MFA、認證或 Windows Hello 企業版。
額外動作:保護您的 Microsoft 帳戶
如果您是 Microsoft 帳戶使用者:
- 好消息,您已經受到保護了!Microsoft 帳戶也擁有智慧鎖定、IP 鎖定、風險型雙步驟驗證、禁用密碼等多種功能。
- 不過,請您還是花兩分鐘前往 Microsoft 帳戶的安全性頁面並選擇 [更新您的安全性資訊],以檢閱風險型雙步驟驗證所使用的安全性資訊。
- 請考慮在這裡開啟常駐型雙步驟驗證,讓您的帳戶獲得最高的安全性。
最好的防禦是…遵循本部落格中的建議
對於網際網路上使用密碼的任何服務而言,密碼噴濺都是非常嚴重的威脅,不過,採取本部落格中的步驟能夠提供您最大保護,防禦這類攻擊媒介。同時,因為有多種攻擊都擁有類似的特徵,這些步驟就成了您最好的防禦建議。您的安全永遠都是我們最先考量的首要任務,我們也會持續致力於開發新的進階防護措施,以防範密碼噴濺和其他任何一種攻擊。只要您立即採用上述步驟並時常回頭檢查是否有新工具,就能防禦網際網路上的惡意人士。
我希望您覺得這些資訊對您有所幫助。如同以往,我們非常歡迎您提供任何意見反應或建議。
謝謝您,
Alex Simons (Twitter:@Alex_A_Simons)
計劃管理總監
Microsoft 身分識別部門