EISS2021-辦公網零信任安全建設實踐

一、背景

大家好,非常高興給大家分享《辦公網零信任安全建設》這個話題。

分享之前我想先簡單介紹一下我們公司,趣加是一家遊戲公司,主要了是面向海外市場,所以有很多同學了可能沒有聽過我們公司;但喜歡玩遊戲的同學可能聽過一個戰隊,就做fpx那其實就是我們公司的一個戰隊。

二、分享內容

我今天要分享的內容主要是三點


首先是我們爲什麼要做零信任安全建設,前面很多老師講過了零信任的一些應用場景和零信任的理念,這裏了我簡單提一下我們趣加爲什麼要去做零信任建設;第二個是我們如何去設計零信任架構,零信任建設主要是結合業務去實現,這裏了我想以趣加爲例子,分享一下我們的建設思路;第三點是我們在建設實踐過程當中具體如何去做的,做了哪些事情以及一些細節性的問題;

三、爲何要做

首先讓我們爲什麼要去做零信任建設,很多重視安全的公司了需求來源分爲兩類,一類是外部的驅動,另一類是內部驅動;這裏我們我們趣加其實就是內部驅動,然後去做一些安全方面的事情事情

爲什麼這麼說呢?因爲我們是一個遊戲公司,遊戲公司是非常重視安全問題的;所以我們本身就有安全方面的一些需求,第二個的就是我們整個團隊的都對安全是比較重視的,因爲一款遊戲的安全是可以決定遊戲的生命週期的,在推廣零信任的時候了團隊的配合程度也是非常重要的;第三點就是我們把零信任安全建設方案那麼跟領導彙報之後,領導也是非常支持我們去做這樣一件事情。

3.1 安全需求

剛纔說到了我們是有安全需求的,那我們趣加爲什麼有這樣的安全需求呢,這裏我舉一個例子。

3.1.1 網絡架構

我們公司主要將網絡了分爲兩個網絡,分別是內部的辦公網絡,和麪向公衆的網絡。

基於這兩個網絡建設的安全體系,其中內部辦公網了默認認爲是可信網絡,也就是說你只要連接到這個辦公網絡;你訪問內部的一些服務,他都認爲是可信的,你只需要經過簡單的一些身份驗證就可以進行操作;但是這裏有一些問題,比如說在去年2020年哪疫情期間,很多同事都在家辦公,在家辦公要訪問內部辦公系統就得通過vpn去連接內部網絡;這樣的網絡架構其實是有一些弱點的;

VPN只能保證這個身份的可信,但是並不能保證設備的安全性,另外很多時候連接了VPN,但訪問的流量並不需要使用VPN;比如說微信以及訪問一些非辦公網內的網頁,其實是浪費vpn的資源;我們在想如何不使用vpn,保證安全性的同時又能訪問到內部辦公網內部的服務,這個時候零信任的理念其實是非常合適的。

3.1.2 零信任理念

這裏了我總結了幾點零信任的一些理念,這裏列了四條


第一點是默認不信任,默認不信任用戶也不信任設備以及不信網絡,我們之前的一個辦公網的結構了其實就是默認信任網絡,以及默認信任所有設備;這一條理念其實是可以補齊我們的一些短板

第二點是動態的訪問權限,我們之前的內部辦公網只要你連接到這個網絡,並且身份經過簡單的一次校驗就可以操作後面的權限,這裏也能加強我們的身份驗證,因爲它在登錄之後還是一直是持續在驗證;比如說我認爲某個用戶不合法,我隨時可以把這個用戶刪除,它之後的訪問就立即給他前端了。

第三點是減少資源的暴露面,縮小攻擊的範圍,之前我們要訪問內部服務,只需要鏈接辦公網就可以直接連接服務,然後服務自己去權限控制,有一些服務其實安全性是挺弱的,比如說弱口令等等,攻擊的範圍還是是比較廣泛的

第四點也就是持續的評估與安全響應,通過多個維度來判斷某一個請求是否足夠安全。

3.2.3 建設目標

結合網絡現狀和零信任的一些理念相結合,我們提出了三點建設目標


首先是讓員工更安全和便捷的訪問公司內部服務,第二點是確保訪問者的身份和網絡環境是安全的才允許訪問,第三點是解決訪問日誌分散無法追溯用戶的行爲,那麼主要是要做到這三點,這是我們建設的初衷。

3.2 重視安全

前面提到了我們遊戲公司非常重視安全,注重安全的原因主要是安全能夠直接影響公司的收入,這裏我舉兩個遊戲行業的例子

3.2.1 源碼泄露場景

首先說一下源碼泄露案例,如果源碼泄露會發生什麼事情


很多同學可能聽過chuanqi私服或者玩過這個chuanqi,在2002年的9月份傳奇的源碼通過意大利服務器源碼泄露了,很快就傳到國內,在短短的半年裏就有500多傢俬人搭建傳奇服務器,很多玩家開始從官服轉到私服中去,傳奇運營商收入大大受到影響,因此不再給傳奇的開發商支付代理費用,導致這個開發商面臨破產風險,後來甚至被收購。從這個例子裏可以看到一款遊戲的安全可以決定它的生命週期。

3.2.2 高危漏洞場景

還有一個高危漏洞場景,在美國Def Con 2017的會議上,有一個黑客跟媒體透露他在過去二十年裏面,利用網絡遊戲漏洞去賺錢的一些方法

並且現場演示在調試器中輸入命令,給他遊戲裏的賬戶增加了很多很多的金幣;不同的遊戲使用不同的方法增加貨幣,相同的是添加的金幣或者道具主要通過第三方市場進行交易來獲利;在這個例子中可以看到一款遊戲的安全性,可以直接影響公司收入營收;所以我們團隊本身是非常重視安全的,老闆的安全重視程度也給我們強有力的支撐,讓我們能夠安安心心的去建設零信任安全。

四、架構設計

在確定好做零信任建設的事情之後,我們主要做了三件事情


第一點是確定理想的一個目標,確定好目標之後就是熟悉現有網絡架構;因爲零信任並不是一個產品,把這個產品開發完成完就完事了,它非常貼合業務線,所以要熟悉當前的網絡結構,然後再把目標和現狀兩者相結合得到一個可以實施的目標方案;

4.1 理想中的目標

這張圖是我們理想中的目標效果,在圖中可以看到我希望所有的訪問用戶的都通過安全網關代理去訪問這些內部服務

在代理訪問之前,我們會去驗證訪問者的身份是否合法,同時驗證這個設備是否爲內部設備,以及他的請求參數當中有沒有非法請求,另外了還有一些他的一些異常行爲,比如說他平時都是在工作時間去訪問這個服務,突然有一天他在凌晨一點兩點去訪問這個服務,這個時候了我們就會將他的這個安全等級變低,需要他二次驗證來提升安全評分;

實現這些目標,需要做到左邊的幾項,比如說資源統一管理和統一控制外部訪問,比如說我們需要去統一管理這些用戶,統一控制這些設備,統一讓用戶通過安全網關進行訪問內部服務;所以這些業務需要配置一些防火牆限制,只允許安全網關去訪問它;另外兩點是希望動態調整訪問控制策略以及希望能減少VPN的使用。

4.2 熟悉現有架構

確定好理想目標後,得熟悉一下現有的網絡結構,目前的網絡現狀主要是網絡可信和身份驗證兩個機制,所以我着重瞭解這兩個。

4.2.1 網絡准入

先來說一下pc設備,比如說windows mac linux這些設備要接入內部網絡可以有三種方式,首先是在家辦公的場景會通過vpn去連接,連接vpn的時候需要登錄賬號,第二個是在公司辦公的場景一般是通過wifi連接我們的網絡,連接wifi之後還會需要通過訪問登錄賬號和密碼來確認身份,最後一種是辦公網的網線接入;其實手機之類的移動設備接入方式和電腦基本一致,還有一些啞巴設備比如說打印機攝像頭主要是通過網線去連接內部網絡。

這裏了講一下目前網絡的幾點問題


第一點是一個用戶連接到我們內部往來之後,如果他也想訪問某一個服務,完全是靠這個服務本身進行權限控制,沒有統一的身份去控制它是否能夠訪問;有一些系統是有一些弱口令或者薄弱賬號的,這是從安全性角度思考;

第二點是vpn的穩定性無法保證,比如有些員工在高鐵上,需要訪問辦公網內部的服務,這個時候得先通過VPN連接到內部往來,VPN是個長鏈接不一定穩定一直穩定;同時還有一些流量並不是需要通過vpn才能訪問的,但都通過VPN顯然增加了網絡直接耗費;

第三點是用戶和設備和應用程序都在同一個網絡中,這是不合理的,應該是我們不同的部門在不同的一個網絡隔離區域中,比如開發部門有一個開發網絡,行政部門有一個行政的網絡,網絡之間需要有一個隔離。

4.2.2 身份認證

身份認證主要是賬號驗證這方面,賬號我們主要由兩部分組成

一部分是公司的統一賬號,另一部分就自建賬號,目前正式員工都有這樣一個統一賬號,但是一些外包人員他就想訪問某一個業務,會在業務系統上給他開了一個自建的賬號,還有一部分系統因爲使用開源系統,改造起來比較麻煩,還停留在自建賬號上。

4.3 調整後的方案

在熟悉現有結構後,結合之前理想中的目標,我們需要設計一套可落地的架構,主要是這個圖,在圖中可以看到,所有的請求都通過通過終端去訪問辦公網應用,都要經過一個安全網關

這個安全網關他主要是一個代理的作用,在代理之前的他會調取安全策略中心的評估數據,通過這個數據判斷請求是否合法,如果不合法會拋棄掉這個人請求;判斷請求是否合法主要依賴於安全策略中心,安全策略中心的決策主要是依據設備管理中心和身份證的重心的數據

設備管理中心主要存儲終端的安全基線數據,同時對設備簽發證書,終端則會上報安全數據,比如進程是否安全、網絡是否安全以及是否有鎖屏,證書管理來主要是驗證這個設備是否公司的合法設備。

比如有人使用私人設備去訪問公司的辦公網絡,我們是不允許的,設備管理中心就會給此設備評分比較低;另外一個依據是身份證在中心,主要是驗證一下用戶的一個身份信息是否合法,綜合這些信息就得到了一個安全評分,安全評分比較低的時候我們可能會通過人臉識別或者其它的多因子認證來提升他的一個安全評分,最終決策此請求是否可以訪問我們辦公網的應用

4.4 建設模塊

剛纔我們通過架構圖簡單降到了5個模塊的作用,現在我們仔細來看一下這五大模塊

4.4.1 身份認證中心

身份認證中心主要的作用是提供身份認證,除了平時的常規認證外,裏面應該有一些加強的二次認證方法,多維度來確保身份的可信;這裏我們主要是使用第三方的身份認證服務,阿里雲的Idaas服務和谷歌的google身份認證器。

4.4.2 安全策略中心


安全策略中心剛纔已經講到,他主要是判斷下這個請求是否可以訪問,主要是依據這個身份認證和設備風險動態生成的安全策略,並且需要實時更新策略;

另外有些應用安全等級需要比較高,比如財務系統可能要求二次多因子認證來增加安全評分。

4.4.3 安全網關


安全網關的主要作用是代理外網的流量到內部,安全網關在進行轉發前會先判斷一下已經登錄,如果沒有登錄會讓請求跳轉到idaas系統,讓用戶先進行登錄;

再次請求時候會調用安全策略中心的安全評分,如果它的評分比較低會阻止此請求的訪問;如果是合法的可以對這個請求進行一些流量鉤子,比如訪問一個wiki系統,可以在這加一些水印。

當流量都經過安全網關的時候,可以將日誌存儲起來,放到日誌分析平臺中進行統計分析,將來可以追溯和審計。

4.4.4 設備agent


設備agent主要就是收集終端的一些安全信息,比如系統信息,網絡連接信息、是否安裝殺毒軟件,將這些信息上報到我們的設備管理中心的服務器。

4.4.5 設備管理中心


設備管理中心主要是存儲設備上報一些的安全信息,以及這些設備進行認證,判斷設備了是不是我們公司的內部設備等等,給安全決策中心提供數據支持。

五、建設經驗

零信任建設不是一個短期能夠完成的事情,谷歌建設的零信任建設花了近十年時間,前面何藝老師在完美世界建設零信任也花了四年的時間,因此零信任不是短時間內能完成的,不過現在零信任相對來說已經有一個基本的架構了,所以我們建設起來會快很多,但是呢也是一個週期的。

5.1 分階段實施

零信任建設拆解下來大致需要去做6個事情

我們趣加在建設零信任的時候是分階段去實施的,主要分成了四個階段,其中Q1爲第一階段,首先是要有一個安全網關,並且支持身份驗證,這是最基礎的功能點,然後就是去接入一些業務去驗證這個模式的可行性,在這個過程中會收集到很多需求,將其改進之後繼續推進業務的接入,我們第一階段的事情已經落地了;目前正在建設第二階段,第二階段主要是業務的全量接入,和終端軟件的第三方購買評估,業務已經接入完成,終端還在評估中。

5.1.1 第一階段

第一階段的主要是搭建一個安全網關,實現最基本的需求,比如流量轉發和登陸,以及身份認證,接入部分辦公應用驗證這個模式是否可行。

5.1.2 第二階段


第二階段了主要是接入全量應用進來,同時我們需要去調研這個終端的的產品,他需要支持這個基線檢測、證書籤發、TLS雙向認證。

5.1.3 第三階段


第三和第四階段目前來說了我們只是一個規劃階段,還沒有去落地實施,這部分我不去過多講解了

5.1.4 長期實施

有些事情可以在各階段都去做,並沒有依賴關係

比如說整合業務的需求,支持更加細緻一些權限控制訪問,還可以去豐富代理網關的能力,包括流量攔截和行爲分析統計,內容注入,比如說水印等;第三個是豐富用戶行爲審計能力,結合業務訪問行爲和終端安全日誌,全面監控安全風險。

5.2 細節性建設

這裏我講一些我們建設細節,主要推薦幾個開源工具

5.2.1 openresty

前面我們講到安全網關,安全網關主要是轉發的一個作用,這裏很多同學會想到Nginx服務器,我這裏也是用的Nginx服務器,不過對Nginx進行了一個封裝的服務,叫做openresty,它更方便我們去執行一些lua腳本

5.2.2 NginxWebUi

如果使用Nginx形式進行轉發,肯定會涉及到Nginx配置文件,配置文件如果使用vim編輯器去轉發編輯,很難免會出錯;所以最好是有一個界面,可以在界面上操作並生成配置文件。

這裏我推薦一個開源工具叫NginxWebUi的開源項目,可以在圖形界面當中就完成了一個反向代理的配置

5.2.3 配置分發

我們趣加在全球有二十多個節點,每個節點都有服務器,如果我們將代理網關放在一個節點,代理速度會非常慢,所以我們不可能把節點都部署一個節點;當多個節點的時候,配置文件同步就需要一個方案了


我們的方案是首先由NginxWebUi生成配置,有一個程序會監聽文件夾的修改,如果有修改會將這些配置提交到gitlab倉庫;同時會通知到各個節點並把版本號傳遞過去,節點會從gitlab服務器拉去最新配置,檢測配置文件是否會報錯,如果不報錯則會重啓Nginx,並將節點所使用的版本傳遞到中心去。


作者:湯青松

日期:2021-5-14

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章