文章列表

EP51 - 別相信任何人|零信任原則

Podcast連結


前情提要:內部網路的信任模式

過去大部分的組織都會將網路架構劃分為兩個部分,內部網路和外部網路。以一個簡化的例子來說,組織會把辦公室跟伺服器所在的網路視為內部網路,其他的網路都會被視為外部網路。

任何連接到內部網路的人都會被視為可信任的,擁有可以存取組織資源、連上組織伺服器的權限。

為了保護內部網路,組織會在內部網路跟外部網路中間放上防火牆、入侵偵測系統等等的防護機制,利用這些工具來擋下想要從外部網路入侵的攻擊者。

要連上公司網路的話,除了人實際在公司辦公室以外,就要用到像是VPN這類型的工具從外部網路連線到內部網路。

問題

後來隨著各種雲端服務的普及化,再加上越來越多人需要遠端上班或是合作,導致要明確的劃分內部網路以及外部網路變得越來越困難。駭客攻擊手法也進步飛快手法多變,讓確保組織內部網路的每一台電腦跟伺服器都是安全的變得十分的困難。只因為一台電腦是連線到內部網路就去信任他變得不是一個太明智的事情,因此大家開始突破原本的框架,想要去找到一個更好的解決辦法。

零信任模式 Zero Trust Module

零信任模式就是一個被用來解決上述問題的策略。這個概念其實早在幾十年前就被提出了,但是在當年的技術限制以及需求不強烈的情況下,讓零信任概念沒有獲得太多的討論跟實作。

2009年時,Google為了應對受到的資安攻擊,他們想要改善以及強化公司內部系統架構的安全性,因此開始開發了一套名為BeyondCorp的零信任架構,他們花了好幾年的時間才成功開發出這套系統並把它應用在Google自己公司內部上。

在Google成功實現了零信任模式以後,這個概念才開始在業界吸引起大家的注意跟討論,很多公司跟企業也都開始朝著零信任模式邁進。

概念

零信任的概念如其名就是不去相信任何東西

他的核心觀念就是去假設攻擊者無所不在,因此在零信任架構下不會有像是內部網路這種被預設安全的東西,任何想要連線到我們系統的人或是裝置都會需要經過一系列的驗證跟檢視,通過了驗證、檢視後我們才給予這個人或是裝置他所需要的權限。

以防疫作為比喻

  • 一般的作法則是去依照不同國家的疫情嚴重程度來分級,只要求來自疫情較嚴重的地方的人需要被隔離或是篩檢,如果是來自疫情較不嚴重的地方的人就可以縮短隔離時間甚至是完全不隔離。
  • 零信任就像是去要求每一個進入台灣的人都要隔離並且進行篩檢,確認都沒有確診者也不帶有傳染性才能解除隔離在台灣自由的行動。

我們也需要考慮到一些其他面向,如:

  • 會不會太小題大作造成一般民眾的困擾?
  • 有沒有足夠的人力跟資源去確保每個入境台灣的人都有乖乖的隔離?
  • 如果有人不遵守規定我們又有沒有辦法即時的發現跟應對?
  • 是不是有夠多的醫療資源跟篩檢試劑來提供給每個入境的人?

如果把這些條件跟因素都考慮進去,我們才能知道這個做法是不是最適合我們的。同樣的道理也適用在零信任模式上,我們會需要在系統跟技術上的協助跟支援才能成功的做到零信任模式。

零信任模式中的驗證

要做到零信任模式,我們通常會需要驗證三個東西,分別是身份、裝置、以及權限。

驗證身份

確保網路另一端的人真的是他宣稱自己是的那個人。最基本驗證身份的方式就是透過帳號密碼,不過在零信任模式中為了避免一些常見的攻擊手法,我們通常還會要求使用者使用多因素驗證來確保他們帳號的安全性。

驗證裝置

確保使用者用的是一台安全的裝置。要確認一台裝置是不是安全可信任的我們通常會有很多不同的考量點,如:

  • 裝置運行的是哪個版本的作業系統?
  • 有沒有安裝足夠的安全性更新?
  • 有沒有安裝指定的防毒軟體?
  • 有沒有開啟硬碟加密?
  • 有沒有像是TPM之類的硬體元件來確保安全性?
  • 用戶是不是從平常會出沒的地區、IP位置登入?

結合很多這種不同的評斷標準的綜合評比來確認這個裝置是不是安全而且可信任的。

驗證權限

確認用戶有讀取哪些系統跟內容的權限。

通常我們會使用最低權限 least privilege 的標準,只給用戶工作時一定需要的權限就好,任何其他不需要不必要的權限都不給。

舉例來說,如果一名行銷部門的員工需要知道一個產品每個月的銷售金額,那麼我們就只會給他資料庫中這個產品銷售金額的資訊,不會給他這個產品的其他資訊,也不會給他其他產品的銷售金額資訊,更不會讓他有讀取人資部門、IT部門等等其他部門的任何資訊的權限。透過最低權限標準,我們可以在意外發生的時候,限制攻擊者可以取得的資訊量,避免一名員工的帳號被入侵,整個公司所有的資訊都被竊取的情況發生。

其他注意事項

這些驗證步驟是需要一直不斷重複進行的,並不是說我們在一開始的時候驗證過一次沒問題就結束了。

用戶可能會不小心掉入釣魚的陷阱裡讓攻擊者知道了他的帳號密碼。也有可能會不小心遺失裝置,或是裝置被植入病毒或是木馬等等的惡意程式。用戶所擁有的權限也是會更改的,他可能會被調到不同的組別而需要不同的權限,也有可能被開除失去所有的權限。

目標有可能會隨時變化,因此系統會需要每過一段時間就重新進行一次驗證,確保這名用戶跟他的裝置還是可以被信任的,如果隨時有任何的變化讓系統覺得這名用戶不值得被信任的話,他所有的權限就會被收回沒有辦法繼續連到公司的系統。

我們也需要記錄所有的行為跟動作。透過紀錄用戶的行為跟動作可以讓我們去監測跟發現系統內部的異常活動,在有攻擊者的時候很即時的幫助我們找出他們。通常我們會使用SIEM資安資訊和事件管理系統來整理、分析跟視覺化這些資訊。

零信任的優缺點

零信任模式可以讓外部網路和內部網路兩者的用戶都需要經過嚴格的驗證後才可以連結到公司的系統。讓遠端工作變得更容易,員工不需要再透過VPN才能連上公司的系統,只要能夠通過一系列的驗證,不管員工人在哪裡都可以存取公司的資源,這麼做從很多角度來看都大大的降低了風險也提升了安全性。

但驗證過程也可能會讓員工的使用者體驗變得不好,造成他們很常會需要重新登入來驗證身份。

同時公司內部很多的系統跟軟體都需要雲端化,這樣才可以讓員工不管身在何處都可以登入使用,但雲端化這樣的轉型其實在很多企業跟組織中是比較困難的,畢竟就連Google都花了六年的時間才完成了系統架構的更新,這會是許多企業在轉型到零信任模型路上的絆腳石。

在日常中使用零信任模式

雖然說零信任模型是針對企業或是組織而設計的,沒有辦法直接套用在日常生活中,但零信任的概念跟作法還是有很多可以借鏡的地方,幫助我們增加日常生活的安全性的。

不隨意相信其他人事物

預設攻擊無所不在,不要隨意地相信其他的人、事、物,這包含了上網過程的細節,如:

  • 使用公共的電腦或是公開的網路的時候,我們要預設這些電腦或是網路都已經被駭客入侵,如果使用的話我們的很多資訊會被攻擊者搜集,這樣還要繼續使用這個電腦或網路嗎?要的話我們是不是應該避免使用一些重要或是包含敏感資料的服務呢?
  • 如果收到一封email我們也應該要假設他是攻擊者寄來的釣魚或是詐騙,不要馬上點開裡面的連結或是檔案,我們應該要先確認他不是攻擊者假冒的。

我相信很多人都跟我以前一樣,會抱持著僥倖的心態覺得我誰也不是,攻擊者不會把我當作目標,不需要擔心新聞上那些資安攻擊跟事件,但實際上網路上很多攻擊者是在進行自動化無差別的掃描跟攻擊的,而且我們不是那些攻擊者,我們不知道攻擊者會不會看到一些我們沒看到的利用價值,因此不管是誰都有可能成為攻擊目標。如果利用零信任的概念,不去相信任何人或是任何網頁,那麼就可以幫自己避免掉許多的危險了。

確保帳號的安全性

確保使用夠安全夠複雜而且不重複的密碼,並且啟用雙因素或是多因素認證。

帳號密碼是大部分的網站跟服務驗證身份的方式,如果沒有把帳號密碼保護好,攻擊者就會有辦法透過我們的帳號密碼取得我們帳號的控制權。

確保裝置的安全性

只要我們有在使用手機、平板、電腦、家中的路由器或是其他的網路裝置,他們就都是暴露在風險中的,因此我們會需要確保他們的安全性。常見的方式:

  • 確保更新都有適時的被安裝
  • 有安裝該有的防毒軟體
  • 開啟裝置加密
  • 開啟遺失搜尋

持續監控

不管是裝置的安全性還是帳號的安全性,我們都需要定時地去檢查,確保他們一直都是安全的。

我們不能在最一開始設定完成以後就丟著他們不管,因為他們的狀態是隨時可能會改變的,你不會知道你使用的網站什麼時候會發生資料外洩導致你的個資外流。你也很難知道你下載的檔案程式有沒有被藏了木馬或是後門會感染你的電腦和手機。

最低權限標準

當遇到要求提供個人資料或讀取其他帳號資訊時,可以先確認這個軟體/服務是不是真的有這些權限需求,也要確認是不是只提供了他真的需要的最低權限,沒有提供過多的權限。這邊舉一些可以思索的例子:

  • 心理測驗要求我們提供帳號權限的話可能就不是一個很必要的事情,我們可以去找其他不需要任何權限的心理測驗來做。
  • 非定位相關軟體沒有必要要求存取定位資訊
  • 善用允許存取部分照片/檔案的功能,不要把所有資訊全部灑出去
  • 檢視造訪網頁時跳出的允許Cookie視窗時,衡量是否真的要造訪該網頁或只允許必要Cookie
  • 一個簡單的社群軟體卻要讀取我們Google帳號中的聯絡人、行事曆跟Email的話就不太正常,我們可以只提供聯絡人的權限給他就好。