您所在的位置: 首頁 >
新聞資訊 >
技術前沿 >
詳解零信任架構中的安全網(wǎng)關
1、零信任架構的中心
無論是NIST還是Beyondcorp還是SDP,所有零信任架構中,最中心的部分都是“安全網(wǎng)關”。下圖是NIST的零信任架構圖,圖中藍框里就是“安全網(wǎng)關”。
從圖中可以看到安全網(wǎng)關的作用為:
(1)安全網(wǎng)關隔開了左側外網(wǎng)和右側內網(wǎng)。用戶在左側網(wǎng)絡中。用戶想獲取右側的數(shù)據(jù)資源,只能通過網(wǎng)關進入。網(wǎng)關就像是門衛(wèi)一樣,合法的讓進,不合法的攔住。
(2)所有的安全策略都由網(wǎng)關執(zhí)行。零信任要求對用戶的身份、設備、行為路徑等等多個方面進行檢測和判斷,檢測結果由網(wǎng)關執(zhí)行。用戶的請求到網(wǎng)關之后,網(wǎng)關解析出請求中的用戶信息,然發(fā)給各個策略檢測模塊。所有的檢測結果都匯聚到網(wǎng)關,由網(wǎng)關最終執(zhí)行。
下面介紹安全網(wǎng)關的具體架構。
2、Web代理網(wǎng)關
Beyondcorp是世界上最早落地的零信任項目,Beyondcorp網(wǎng)關的名字叫“訪問代理”(Access Proxy),如下圖所示。
Beyondcorp的安全網(wǎng)關實際上相當于一個“Web代理”,只支持web網(wǎng)站的接入,不支持c/s架構的應用。這個網(wǎng)關可以用類似Nginx的代理服務器實現(xiàn)。
Web代理網(wǎng)關的功能包括:
(1)轉發(fā)請求。這是代理服務器最基礎的功能。網(wǎng)關根據(jù)用戶訪問的域名不同,分別轉發(fā)到網(wǎng)關后面的不同服務器。
(2)獲取身份。從架構圖中可以看到,Beyondcorp架構中還包括“單點登錄”。所以,網(wǎng)關對用戶身份的判斷可能也是通過單點登錄的token實現(xiàn)的。
Beyondcorp架構中,客戶端是一個Chrome瀏覽器上的代理插件。用戶訪問數(shù)據(jù)時,插件應該在cookie或包頭中加上了代表用戶身份的token。
Beyondcorp還要驗證設備信息。設備信息可能也是用類似的方式,通過瀏覽器插件把信息插進包頭里帶給網(wǎng)關的。
(3)驗證身份。網(wǎng)關可以將訪問者的身份信息發(fā)給Beyondcorp的身份管理模塊。身份管理模塊進行對比和判斷,然后返回驗證結果。
為了提升驗證速度,可以把身份信息在網(wǎng)關上也存儲一份。
這一步會非常影響網(wǎng)關的性能,所以要看一個零信任產(chǎn)品好不好,就看網(wǎng)關的驗證算法快不快了。
(4)放行或攔截。網(wǎng)關根據(jù)驗證結果決定將訪問請求轉發(fā)到真實的服務器上,或者轉發(fā)到報錯頁面上。(Beyondcorp的報錯頁面上會引導用戶去自助申請權限,這個體驗做得非常很好。)
Web代理網(wǎng)關的好處:
(1)預驗證、預授權。只有通過身份驗證的用戶才能接入企業(yè)資源,其他人會被攔在外面,完全碰不到企業(yè)資源,相當于在整個資源外面多了一層防護罩。
(2)持續(xù)監(jiān)控。所有流量都是通過網(wǎng)關轉發(fā)的,所以網(wǎng)關可以持續(xù)對用戶的流量進行設備健康狀態(tài)和用戶行為狀態(tài)的檢測。如果發(fā)現(xiàn)異常,可以立即進行攔截阻斷。
3、零信任的客戶端
下面簡單介紹一下web代理網(wǎng)關需要什么樣的客戶端來配合。
因為Beyondcorp是谷歌自己內部用的,所以他的客戶端是用Chrome瀏覽器插件實現(xiàn)的。
國內瀏覽器市場比較亂,沒法用插件做,所以國內很多做零信任的廠商都是自己開發(fā)了一個瀏覽器作為客戶端。
瀏覽器的技術要求很高。瀏覽器的好處是對終端的管控能力強。但是要兼容企業(yè)的老舊系統(tǒng),所以對內核兼容性要求很高。而且瀏覽器本身就是個很大的產(chǎn)品,代碼幾千萬行,要維護這么大的產(chǎn)品是很難的。
其實,不用瀏覽器,做一個桌面代理程序也可以達到效果。國外廠商用瀏覽器做客戶端的也比較少。那國內為啥喜歡瀏覽器呢?因為國內最早做零信任的公司本來就是做瀏覽器起家的(我就在這個公司)。我們設計架構的時候,順手就帶上了瀏覽器。國內廠商愛跟風,都跟著學,后來就都跟著跳進瀏覽器的坑里了。沒想到現(xiàn)在瀏覽器竟然成為國內零信任的標配了?!疚婺樞Α?/p>
4、隱身網(wǎng)關
以前我介紹過SDP的隱身黑科技。SDP架構里隱身網(wǎng)關的作用類似于防火墻。隱身網(wǎng)關對用戶的身份進行檢測,對合法用戶打開防火墻的端口。對非法用戶來說,所有端口都是關閉的。
如果把隱身網(wǎng)關放在web代理之前的話,可以增強安全網(wǎng)關的“隱身”防護能力,抵抗針對web代理網(wǎng)關的漏洞掃描或者DDoS攻擊,如下圖。
隱身網(wǎng)關的功能流程為:
(1)默認關閉所有端口。默認情況下,對網(wǎng)關IP進行掃描,會發(fā)現(xiàn)端口都是關閉的。
(2)申請放行。用戶在正常通信之前,先向隱身網(wǎng)關發(fā)出一個專門用于申請放行的數(shù)據(jù)包。這個數(shù)據(jù)包中包含用戶身份信息。
(3)驗證身份。隱身網(wǎng)關接收用戶的數(shù)據(jù)包,解析出用戶的身份,并對身份進行檢測。
(4)放行或攔截。身份合法的話,隱身網(wǎng)關會對用戶的IP地址定向開放端口。對其他用戶來說,端口還是關閉的。
(5)正常通信。放行之后,用戶就可以正常跟web代理網(wǎng)關通信了。
4、網(wǎng)絡隧道網(wǎng)關
只有web代理網(wǎng)關的話,C/S架構的業(yè)務系統(tǒng)沒法用,遠程運維連接SSH、連接數(shù)據(jù)庫等等也不行。一個完整的零信任方案應該支持這些場景。
其實,RDP和SSH也有web形式的方案。這兩周協(xié)議也走web代理網(wǎng)關之后,基本就可以解決95%的問題了。
但是剩下5%也不能放著不管。企業(yè)里可能有些老舊的客戶端或者瀏覽器插件,用的是自己的通信協(xié)議。這些場景沒法用web代理搞定,只能在客戶端的網(wǎng)絡層抓包,再通過網(wǎng)絡隧道轉發(fā)。
在零信任網(wǎng)關中增加一個模塊——網(wǎng)絡隧道網(wǎng)關,如下圖。用戶訪問Web網(wǎng)站的時候,走Web代理網(wǎng)關。其他C/S架構的場景,走網(wǎng)絡隧道網(wǎng)關。
很多零信任產(chǎn)品是用VPN來實現(xiàn)網(wǎng)絡隧道網(wǎng)關的,包括Beyondcorp也是把C/S架構的場景交給VPN了。
目前最新一代的VPN協(xié)議是wireguard協(xié)議,用wireguard來實現(xiàn)網(wǎng)絡隧道網(wǎng)關是個不錯的選擇。
wireguard最大的特點就是代碼非常簡潔。wireguard全部只有4千行,傳統(tǒng)VPN至少有幾萬行。代碼少,就意味著運行效率更高,更快,更穩(wěn)定,同時漏洞也更少。
wireguard的通信流程簡述如下。
(1)客戶端創(chuàng)建虛擬網(wǎng)卡,抓取用戶流量。這里要限制不能全部抓取,應該只抓取用戶有權訪問的流量。
(2)申請隱身網(wǎng)關放行。
(3)與網(wǎng)絡隧道網(wǎng)關建立連接。Wireguard將抓到的流量進行UDP封裝,封裝過程中進行加密。與傳統(tǒng)VPN協(xié)議不同,wireguard的加密過程采用了更高級的加密方法“Cryptokey Routing”??蛻舳撕途W(wǎng)關各有一對公私鑰,公鑰發(fā)給對方。通信時先用對方的公鑰進行加密,對方再用私鑰解密。這里面,公私鑰是跟用戶身份綁定的,每個用戶都用單獨一套公私鑰。這樣的加密強度基本是不可破解的。
(4)網(wǎng)絡隧道網(wǎng)關檢測用戶身份。身份信息是在封裝過程中插入數(shù)據(jù)包頭部的。
(5)正常通信。
網(wǎng)絡隧道網(wǎng)關的作用是覆蓋更多使用場景,讓零信任架構更完整。但是在性能上可能不如Web代理網(wǎng)關。而且暴露了網(wǎng)絡層的資源,安全性上更低。
所以這兩者是相互補充的關系。如果只看到隧道網(wǎng)關所有場景都能支持,就把web代理網(wǎng)關扔了,那就是丟了西瓜撿芝麻了。
我還見過一些廠商只有隧道網(wǎng)關,web代理和隱身網(wǎng)關都沒有。沒有隱身防護的話,相當于隧道網(wǎng)關還是對外暴露的,很不安全。我當時試過攻擊他的51820端口(wireguard的默認端口)。每秒1萬個包過去,直接就把那個廠商的產(chǎn)品搞癱瘓了。
所以,沒有隱身網(wǎng)關保護的隧道網(wǎng)關是很脆弱的。
5、API網(wǎng)關
現(xiàn)在,用戶的訪問場景都覆蓋了,但是服務器之間的訪問還沒有管控。服務器之間的訪問需要API網(wǎng)關來管理,如下圖。
第三方服務器調取被保護資源的API時,需要進行身份驗證。具體流程為:
(1)申請隱身網(wǎng)關放行。
(2)通過API網(wǎng)關的身份驗證。多數(shù)API都是Http協(xié)議的,所以這個過程與web代理網(wǎng)關類似。
第三方服務器在通信時,將自己的身份信息插入數(shù)據(jù)包的頭部。API網(wǎng)關從包頭獲取身份進行驗證,并判斷是否放行。
(3)正常通信。
6、網(wǎng)關集群
到這里已經(jīng)形成了一個完整的零信任安全網(wǎng)關。不過這只是單機版,只適用于中小型企業(yè)。
大型企業(yè)還有其他需求:
(1)多數(shù)據(jù)中心:業(yè)務系統(tǒng)的服務器分別部署在多個數(shù)據(jù)中心或者多個公有云上。
(2)集群:大型企業(yè)用戶量大,一臺網(wǎng)關性能肯定支撐不住。
(3)高可用:所有流量都要經(jīng)過網(wǎng)關轉發(fā),一旦網(wǎng)關down掉,所有用戶都會受影響,所以必須有高可用方案,一臺壞了,自動切換到另一臺。當然,集群也能實現(xiàn)高可用。
(4)分布式:如果企業(yè)在全國各地都有分公司,或者跨國企業(yè)在國外也有分公司,那么網(wǎng)關必須也是分布式的,讓用戶能夠就近接入,保證用戶的訪問速度。
一個成熟的零信任架構應該滿足這些需求,如下圖。
網(wǎng)關的集群方案跟零信任架構中的管控中心密不可分。管控中心管理所有網(wǎng)關,用戶在什么情況下該連接哪個網(wǎng)關,也是有管控中心統(tǒng)一管理。具體流程這里就不做深入介紹了。
7、總結
安全網(wǎng)關是零信任架構的中心,是零信任理念的執(zhí)行者。安全網(wǎng)關通常會部署在企業(yè)網(wǎng)絡的入口,對企業(yè)影響非常大。因此,網(wǎng)關對各種協(xié)議是否都能支持,網(wǎng)關是否支持高可用,加密通信的性能和穩(wěn)定性,是零信任安全網(wǎng)關最重要的評價指標。
文章來源:白話零信任