零信任技術思考

wzhvictor發表於2023-05-16

當今網際網路時代,隨著資料洩露和網路攻擊的不斷增加,安全問題已經成為了一項重要的考慮因素。傳統的網路安全策略通常是透過防禦外部威脅來保護網路。然而,這種方法已經無法滿足當今複雜的安全風險。

相比傳統安全策略,零信任(Zero Trust)更能夠適應當今需要進行資料保護的多樣化風險因素。零信任可視作一種安全框架,它假設所有使用者、裝置和網路流量都是不受信任的,並要求對所有請求進行身份驗證和授權。這使得攻擊者在進入網路後仍需要進行認證和授權,從而減少了網路面臨的安全威脅。

零信任的實施方案可以基於不同組織的需求和情況而異,以下是一些常見的零信任實施方案:

  1. 多因素身份驗證(MFA):使用多種身份驗證措施來確認使用者身份,例如密碼、生物識別、硬體令牌等;
  2. 基於策略的訪問控制:根據使用者身份、裝置、位置和網路流量等因素設定訪問規則和許可權,以確保只有被授權的使用者才能訪問敏感資料和應用程式;
  3. 實時風險評估:結合機器學習技術來分析使用者和裝置行為,檢測異常活動和威脅情況,並及時採取措施,例如強制登出會話或暫停訪問許可權;
  4. 網路隔離(MSG,微分段):將網路分割為多個安全區域,限制使用者和裝置之間的通訊,從而防止攻擊者透過橫向滲透來獲取敏感資料和訪問許可權。
  5. 資料洩密防護:DLP、雲桌面、終端沙箱、安全瀏覽器、RBI(遠端瀏覽器隔離)都可以實現資料洩密防護效果。其中雲桌面的安全性最高,因為資料只落在服務端,完全不會儲存在使用者裝置上,但對頻寬影響比較大。

這些方案可以單獨或聯合使用,以構建一個全面的零信任安全框架,以確保組織和使用者資料的安全和隱私。

筆者之前參與過企業級的零信任網路建設,採用的方案是以 NIST 釋出的《零信任架構》為指導,並與國內雲安全聯盟 CSA 成員深入探討過各種實施細節,這裡大致介紹一下當時的思路~

零信任基本元件

  1. 策略決策點(PDP,Policy Decision Point):主要用於控制訪問策略的決策。具體來說,PDP 可以根據事先定義好的訪問控制策略,決定是否允許使用者或裝置訪問特定資源或執行特定操作;

    • 策略引擎:當使用者發起訪問請求時,策略引擎從周邊各個系統獲取使用者的身份和安全狀態,進行綜合分析,然後計算是否允許該使用者訪問某個資源;
    • 策略管理:負責管理使用者的身份憑證和會話建立,根據策略引擎的計算結果,通知策略執行點建立會話或關閉會話。
  2. 策略執行點(PEP,Policy Enforcement Point):零信任假設訪問的主題不可信,而且身處的環境不可行,所以主體只有在透過 PDP 的嚴格校驗後,才能訪問企業資源。PEP 負責接收使用者的訪問請求,按 PDP 的指令放行或攔截;

    NIST 的策略執行點是一個抽象的概念,可以指代客戶端和閘道器等元件。NIST 的主體和系統可以指使用者,也可以指伺服器,還可以指物聯網裝置。
  3. 策略管理點(PAP,Policy Administration Point):主要用於管理訪問控制策略,負責儲存和管理訪問控制策略,並提供介面供管理員進行配置和修改。
graph LR
    A[主體] --> B[裝置]
    B -->|不可信| C(策略執行點)
    C -->|可信| D[企業資源]
    E(策略管理點) --> F(策略決策點)
    C --> F
    F --> C

除策略之外,為零信任的 PDP 提供資訊輸入和管理支撐功能的資訊來源還有:

  1. 持續診斷和緩解(CDM)系統:收集企業資產的安全狀態,更新系統配置和軟體,如果存在漏洞,策略決策點就可以採取修復或隔離措施;
  2. 行業合規系統:確保企業遵守了各種合規制度,包括一系列相關的策略規則;
  3. 威脅情報來源:為企業提供最新的漏洞、惡意軟體、惡意 IP 地址等資訊。PDP 可以有針對性地進行分析和遮蔽;
  4. 資料訪問策略:定義了誰可以訪問哪些資料,零信任架構可以在此基礎上基於身份和資料屬性進行更細粒度的策略管控;
  5. 公鑰基礎設施(PKI):生成並記錄企業向主體、資源簽發的證書;
  6. 身份管理系統:負責管理企業使用者的身份資訊,包括報名、郵箱等基本資訊,崗位、部門等組織架構資訊,角色、安全標籤、繫結裝置等其它相關資訊;
  7. 行為日誌:匯聚企業系統日誌、網路流量、授權日誌等。PDP 可以根據行為日誌進行分析建模;
  8. 安全資訊與事件管理(SIEM)系統:匯聚各個系統發出的安全事件及告警日誌,便於零信任架構進行策略響應。

零信任閘道器

閘道器是作為 PEP 的存在,分為四層和七層閘道器,這兩套閘道器屬於相互補充的關係。

graph LR
    A[終端] --> B[安全瀏覽器]
    B -->|TLS| C(防火牆)
    C --> D(七層閘道器)
    D -->|授信訪問| E[公網 HTTP 資源]
    A --> F[UEM]
    F -->|安全隧道| G(防火牆)
    G --> H(四層閘道器)
    H --> I(七層閘道器)
    I --> J[內網 HTTP 資源]
    H --> K[其它資源]

四層閘道器能覆蓋更豐富的使用場景,比如 SSH、遠端桌面協議(RDP)、檔案傳輸協議(FTP)等,但四層閘道器的效能不如七層閘道器,而且暴露了網路層的資源,安全性較低。

七層閘道器可以在應用層針對 HTTP 請求進行安全策略的控制,對不同業務域名、URL、請求方式設定不同的安全策略,管控粒度也比四層閘道器更細。所以不能因為所有的七層協議都會過四層,就不做七層閘道器。

七層網路零信任

image.png

  1. 轉發請求
    使用者的所有 HTTP 請求都應該由七層閘道器做轉發,首先得把業務系統的域名 DNS 對應到七層閘道器的 IP 或域名,七層閘道器收到使用者的訪問請求後,透過資料包中的域名資訊識別出使用者的訪問目標,然後判斷請求的合法性,將合法請求轉發給業務系統的真實伺服器,並將返回的資料按原路發給使用者,這裡為了相容,在資料包中應標記使用者的源 IP ,否則業務只能看到閘道器地址。
  2. 獲取身份
    客戶端請求中存在 cookietoken,七層閘道器會提取這些資訊進行身份校驗。
  3. 驗證身份
    閘道器將訪問者的身份資訊和其它環境資訊發給 PDP,PDP 進行計算後返回驗證結果。這裡會對閘道器的效能造成影響,為了提升驗證速度,會用到多級快取。
    多級快取的好處是能防止 PDP 過載造成雪崩,而且身份的過期時間也有個隨機範圍,防止出現同一時間大量未認證使用者進行認證造成擁擠。多級快取分為 Lua 本地快取(L1)和 Redis 分散式快取(L2),L1 比 L2 的過期時間要短得多,且使用 LRU 淘汰演算法防止儲存資料過多。
  4. 放行或攔截
    根據驗證結果將訪問請求轉發到真實的伺服器或報錯頁面,或跳轉到許可權平臺。

    由於所有的流量都會經過七層閘道器,就可以對使用者的裝置和行為進行動態檢測,一旦發現異常,立即攔截。而且使用者只會與七層閘道器直接互動,看不到業務系統的真實 IP,只有驗證成功的使用者才能接入具有許可權的系統,相當於給業務系統罩上了一層防護罩。

七層 PDP 管控粒度

image.png

這裡的零信任授權策略基於 ABAC 模型,包括:

  • 主體物件:這裡可以是使用者身份(崗位、部門、子公司),也可以是物聯網裝置(裝置 ID)或者應用身份(應用 ID);
  • 資源物件:可以是應用(域名、應用 ID、URL 地址),API(API 地址),伺服器(IP、埠、網段、地域);
  • 執行動作:最基本的動作就是放行或攔截,還可以是 HTTP Method(GET、POST、DELETE 等);
  • 條件環境:對主體物件的限制,比如使用者裝置必須是可信裝置、必須在辦公網環境等。

四層網路零信任

image.png

其實和七層閘道器類似,但這裡有個封裝及解碼的過程,零信任 Agent(終端元件)將使用者身份封裝在非 HTTP 或私有協議的資料包裡,並透過 TLS 加密,四層閘道器收到請求後解碼 TLS 包,獲取資料包內的身份資訊交由 PDP 進行計算,決定放行或攔截。

四層 PDP 管控粒度

image.png

與七層 PDP 採用相似的授權策略,這裡列出差異:

  • 資源物件:包括 IP、埠、協議;
  • 執行動作:除放行或攔截外,還能針對 SSH 的具體命令做授權。

獲取真實源 IP

上面說到後端業務應用獲取到請求的來源都是代理 IP,如何獲取真實的 client IP 呢,當時有幾套方案:

  1. 只針對 HTTP 協議,可以在閘道器設定 X-Real-IPX-Forwarded-For,將真實 IP 傳遞給後端應用。但如果是四層協議呢?
  2. 可以透過 NAT 日誌獲取。但資料量太大,很容易成為計算瓶頸;
  3. 可以使用 HAProxysend-proxy 功能,第一次 socket 連線時,服務端會收到 proxy 協議,改造下 TCP 伺服器,就可以拿到客戶端 TCP 連線時的真實 IP。但服務端和客戶端全部要重新適配,推廣困難;
  4. 最終我們選擇了 TOA(TCP Option Address)方案,後端應用可以按需透過 SDK 獲取到真實 IP。

image.png

client IP 可以放在 TCP Options 欄位裡。Options 欄位最長 40 位元組,每個選項由三部分組成:op-kind、op-length、op-data,最常見的 MSS 欄位就在這裡。 目前 Options 使用的 op-kind 並不多,只需要構建一個不衝突的 op-kind 就可以把 client IP 填充進去。IPv4 地址佔用 4 個位元組,IPv6 佔用 16 位元組,填充到 Options 裡是沒有問題的。
對於 UDP 協議而言,既然有 TOA 就會有 UOA(UDP Option Address),實現方式就是對同一條流的前幾個報文插入 UOA。

風險與信任評估

以上的授權策略是靜態的,是提前預製好的,在真實的網路環境下存在各式各樣的威脅,需要透過一套風控機制來輔助動態授權,使內網更加可信。

大致可以從以下幾個方面進行評估:

  1. 身份認證:如果使用者透過人臉識別或掃碼登入裝置,則信任分值更高;透過賬號密碼登入,則信任分值更低。對於信任分值低的使用者訪問敏感服務可以觸發二次裝置認證;
  2. 裝置狀態:是否安裝了 DLP,是否透過了基線掃描,是否將安全補丁更新到最新都可以計算分值;
  3. 威脅情報:對接威脅情報庫,對於不信任的 IP 或賬號(黑灰產手機號)可以直接攔截交給安全人員專門處理。威脅情報庫不一定完全外採,比如可以基於 WAF 或 SIEM 識別一些風險 IP 加入自有情報庫(比如曾經有資料洩露或內網掃描行為);
  4. 環境可信度:是否是常用裝置,是否存在同一賬號多裝置登入的行為,瀏覽器是否常用等都可以。

統一身份認證

在實施零信任方案之後,身份由零信任系統進行統一管理、認證、授權,這樣做的好處是:

  1. 身份認證在網路層,未經身份認證的使用者無法與業務系統建立網路連線;
  2. 零信任可以統一實施多因子認證,提高所有業務系統的身份認證強度,取代 SSO;
  3. 可以針對敏感業務或有風險的使用者進行二次認證,兼顧安全和體驗。

准入

graph LR
    A[無線客戶端] --> B[接入裝置]
    B --> C(IEEE 802.1X)
    C -->|Controlled Port| D[無線網路]
    B -->|Uncontrolled Port| D

無線客戶端和接入裝置(WiFi 路由器)之間使用 EAPoL 協議(區域網上的可擴充套件認證協議),並且安裝 802.1X 客戶端軟體,從而使使用者能夠透過啟動客戶端軟體發起 802.1X 認證。

接入裝置和認證伺服器之間使用 RADIUS(遠端認證撥號使用者服務),接入裝置為客戶端提供入網埠,該埠邏輯上劃分為兩個 Channel(也叫邏輯 Port),一個用來接收認證資訊(Uncontrolled Port),一個用來傳遞業務資料包(Controlled Port)。

接收認證資訊的 Channel 常開,傳遞業務資料包的 Channel 在未授權的情況下關閉,授權狀態可配置,分三種:

  • 自動認證(認證授權)
  • 強制授權(誰來都授權)
  • 強制不授權(誰來都不認)

觸發認證方式有兩種:

  • 客戶端主動觸發,向組播 / 廣播 MAC 傳送認證報文(EAPoL-Start 報文觸發)
  • 裝置要求客戶端認證(類心跳模式),主動向客戶端傳送 EAP-Request / Identity 報文來觸發認證(這個辦公裝置現在很少見了,啞終端還有一些在使用,因為比較傻)
以上是無線裝置終端准入的方式,如果終端透過了准入,零信任系統可以從 RADIUS 日誌獲取到認證資訊,針對常用非敏感系統就無需二次認證。當然,終端上僅有準入是不夠的,基於此我們將它升級為 UEM(Unified Endpoint Management,統一終端管理)。

UEM

UEM 可以管理多種型別的裝置,包括智慧手機、筆記本、伺服器、POS 裝置等。UEM 通常具有以下功能:

  1. 在辦公網路環境下,可信裝置無感知入網,非可信裝置禁止入網;
  2. 基於裝置互信的雙因子認證,可以整合動態口令、掃碼認證、數字證書等;
  3. 支援對裝置硬體資訊、系統資訊以及軟體列表資訊抓取,自動生成終端裝置指紋資訊,實現裝置唯一性管理;
  4. 支援終端安全基線掃描,安裝了黑名單應用或未安裝 DLP 的裝置禁止入網;
  5. 對指定的人或者裝置,進行凍結、鎖定以及掛失等操作,以實現禁止非法裝置入網;
  6. 可記錄入網行為,包括人員、終端、時間、入網方式等資訊,實現對網路准入狀態的實時監控。

透過 UEM 可以保障終端可信,敏感資料還能透過 mTLS 雙向加密傳輸,即使遭遇了中間人攻擊,攔截流量,由於沒有客戶端證書也無法偽裝成使用者與伺服器通訊。

安全瀏覽器

對於非職能人員(比如客服、銷售、渠道等),往往需要的系統許可權很少,但存在透過業務系統訪問敏感資料的場景,他們的終端也不可控,往往存在裝置共享的可能,如果都安裝 UEM 管理成本會很高,所以針對這部分人群,我們基於 NW.js 自研了安全瀏覽器,相比常規的瀏覽器具備以下功能:

  1. 瀏覽器攜帶自簽名的安全證書,零信任閘道器會對這些瀏覽器的合法性進行校驗;
  2. 強制登入,使用者必須攜帶身份資訊訪問內部業務系統,且無法訪問外部系統;
  3. 所有頁面內容無法被複制,而且會打上明水印,防止透過錄屏洩露資料;
  4. 使用者訪問的網頁資料和下載檔案都會被審計;
  5. 安全功能增強,無法安裝第三方外掛,對 Cookie 和快取資料二次加密等。

零信任實施

零信任的推廣落地也是個大問題,需要多方目標一致,精誠合作。國際上已經形成了比較成熟的方法來應對,可以按照 5 個步驟來進行:

image.png

  1. 確定防護面
    透過資產盤點發現企業所有的網路裝置及資料資產,為之建立清晰的目錄,記錄數字資產與網路裝置之間關係。再由識別引擎,結合識別策略和識別模型,識別出資料中的敏感資料,對資料進行分類分級,並做出綜合的分析。
  2. 記錄事務流轉
    梳理資料的流轉路徑,和運營所需的網路和資料之間的依賴關係,其實是對企業的業務進行梳理。瞭解重要資料的流轉路徑和互動物件,瞭解企業的資料使用場景,可以分析出重要資料可能存在的風險,有助於後續採取有針對性的技術措施。
  3. 構建零信任環境
    根據重要資料的分類分級資訊和安全風險,為訪問資料的人、裝置和應用等主體規劃資料的訪問許可權,遵循最小許可權原則。並設計一個確定的網路架構,以保護其承載的生產服務及關鍵資料。
  4. 建立零信任策略
    根據重要資料的流轉路徑和分佈位置,在網路中部署零信任產品。建立策略以支援細粒度的執行規則,以便在網路中只允許存在已知或合法的系統通訊流量。
  5. 持續監控並維護
    零信任防護能力並不是一步到位的,為了使零信任方案能夠發揮預期的效果,需要對整個防護體系的工作狀態進行監控,根據出現的問題和業務變化,及時調整策略。監視的結果將成為正常行為的基線,再建立預警機制對各類異常行為作出響應。

總之,零信任是一種新興的安全框架,它能夠提供比傳統安全策略更加細緻和精確的保護機制。隨著企業對資料、網路和系統的安全需求越來越高,零信任將成為一個必不可少的安全措施,以應對未來不斷增長的安全威脅,保護組織和使用者的利益和安全。

相關文章