《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > 淺談零信任SDP架構(gòu)下的服務(wù)隱身設(shè)計(jì)

淺談零信任SDP架構(gòu)下的服務(wù)隱身設(shè)計(jì)

2021-01-22
來源:互聯(lián)網(wǎng)安全內(nèi)參

  01概述

  零信任最早源于 2004 年耶利哥論壇提出的去邊界化安全理念,2010 年 Forrester 正式提出了“零信任”(Zero Trust,ZT)的術(shù)語。零信任安全的核心思想是“在默認(rèn)情況下不應(yīng)該信任網(wǎng)絡(luò)內(nèi)部和外部的任何人/設(shè)備/系統(tǒng),需要基于認(rèn)證和授權(quán)重構(gòu)訪問控制的信任基礎(chǔ)”。2020年2月美國國家標(biāo)準(zhǔn)與技術(shù)研究院發(fā)布SP800-207:Zero Trust Architecture 草案第二版本,代表著零信任已經(jīng)從理念走向工程實(shí)踐甚至標(biāo)準(zhǔn)化。

  軟件定義邊界SDP是由云安全聯(lián)盟在2014年提出的新一代網(wǎng)絡(luò)安全解決方案。SDP,也被Gartner稱作零信任網(wǎng)絡(luò)訪問(ZTNA)。SDP是圍繞某個應(yīng)用或一組應(yīng)用創(chuàng)建的基于身份和上下文的邏輯訪問邊界,SDP從架構(gòu)設(shè)計(jì)上就只允許可信任的業(yè)務(wù)報(bào)文通過,同時丟棄不合法報(bào)文。一般來講,在SDP架構(gòu)下真實(shí)的后端服務(wù)是被隱藏的,客戶端與眾多的SDP邊緣節(jié)點(diǎn)聯(lián)動,使得合法報(bào)文知道如何進(jìn)入SDP網(wǎng)絡(luò),惡意流量將被SDP邊緣節(jié)點(diǎn)丟棄。

  在整個SDP架構(gòu)中受保護(hù)的資源是消失的,隱藏的,所以SDP也被稱做“黑云”。SDP通過抗DOS Token 、流量加密、應(yīng)用分段與隔離、客戶端持續(xù)動態(tài)設(shè)備驗(yàn)證、訪問行為可視、實(shí)時事件響應(yīng)以及貫穿整個零信任模型的按需授權(quán)和最小權(quán)限原則可以有效地限制了攻擊活動,極大地提高了攻擊者的攻擊成本。

  本文主要描述基于SDP架構(gòu)下的服務(wù)隱身。

  02SDP架構(gòu)下的服務(wù)隱身設(shè)計(jì)

  SDP架構(gòu)下保護(hù)的業(yè)務(wù)服務(wù)只允許被認(rèn)為合法的報(bào)文進(jìn)行訪問,丟棄“非法”報(bào)文,從而實(shí)現(xiàn)了業(yè)務(wù)服務(wù)隱身。

  2.png

  圖片來源于:

  https://www.aqniu.com/wp-content/uploads/2020/03/%E5%9B%BE%E7%89%871w.png

  SDP 架構(gòu)分為三個部分:SDP Client、Controller、Gateway。所有的Client在訪問資源之前,都要通過Controller服務(wù)對SPA單包驗(yàn)證和訪問控制, 由Gateway對應(yīng)用進(jìn)行業(yè)務(wù)處理。本文描述的SPAD服務(wù)實(shí)際上包含了Controller和Gateway的功能,但本文僅描述Controller功能,所以可將SPAD認(rèn)為是SDP的Controller服務(wù)。本質(zhì)上來說SPA單包認(rèn)證是預(yù)認(rèn)證的一種, 其認(rèn)證流程如下:

  3.png

  認(rèn)證處理流程如下:

 ?。?) 客戶端發(fā)送一個簽名的請求授權(quán)訪問后端服務(wù)的數(shù)據(jù)包給SPA服務(wù)

 ?。?) SPA服務(wù)對收到的請求授權(quán)包進(jìn)行解包、驗(yàn)簽等操作,對無效請求直接丟棄;對檢查通過的設(shè)置防火墻訪問規(guī)則并回復(fù)授權(quán)響應(yīng)包給client。

  SPAD可以看成是通信層的訪問保護(hù),主要在網(wǎng)絡(luò)通信層保護(hù)防火墻之后的后端服務(wù)。SPA首包認(rèn)證作為網(wǎng)絡(luò)通信的授權(quán)認(rèn)證手段,有效地防范未信任數(shù)據(jù)包的風(fēng)險(xiǎn)。

  03服務(wù)隱身SPAD服務(wù)

  SPAD對網(wǎng)絡(luò)授權(quán)數(shù)據(jù)包的應(yīng)用訪問進(jìn)行防火墻管控,從而達(dá)到控制網(wǎng)絡(luò)訪問的目的。

  SPAD服務(wù)主要有如下技術(shù)特點(diǎn):

  無監(jiān)聽端口:使用XDP直接從網(wǎng)卡驅(qū)動層獲取通信數(shù)據(jù)包,直接處理報(bào)文內(nèi)容。掃描程序無法偵測到監(jiān)聽端口。

  支持大網(wǎng)絡(luò)流量處理:XDP技術(shù)性能非常高,可接近網(wǎng)卡帶寬上限,特別是在抵御DDOS攻擊方面有先天優(yōu)勢。

  支持管理策略千萬級別:使用源IP,目的IP,目的端口,協(xié)議 或 源 IP,服務(wù)標(biāo)識(domain或者服務(wù)名)做hash管控網(wǎng)絡(luò),可支持千萬策略級別。

  更加安全的SPA首包認(rèn)證協(xié)議:SPAD使用自定義SPA協(xié)議。通過使用個性化簽名算法和報(bào)文加密算法,以及MAC算法,提高了安全性。

  支持高可用集群部署:管理策略使用NoSQL、MySQL等存儲,支持多節(jié)點(diǎn)集群部署。目前SPAD支持VIP模式高可用方案(Keepalived + VIP)。

  SPAD網(wǎng)絡(luò)控制組件架構(gòu)如下圖所示:

4.png

  從上圖可以看出,SPAD網(wǎng)絡(luò)控制組件可以分為三層:

  網(wǎng)絡(luò)通信層:可使用UDP、TCP通信、也可以使用自定義協(xié)議。SPA一般選擇使用UDP通信,因?yàn)閁DP傳輸是無連接的,默認(rèn)無須響應(yīng),這個特性使得SPA可以隱藏自己。

  授權(quán)包的加解密以及簽名驗(yàn)簽:數(shù)據(jù)本身是有簽名,加密算法密文以及防篡改MAC保護(hù)的。

  防火墻網(wǎng)絡(luò)策略規(guī)則管理: 對SPA授權(quán)認(rèn)證通過的應(yīng)用開放網(wǎng)絡(luò)訪問權(quán)限,添加防火墻的訪問策略。一般網(wǎng)絡(luò)策略默認(rèn)設(shè)置時間生命周期(TTL),過期時訪問策略會清除。

  3.1

  網(wǎng)絡(luò)通信部分

  負(fù)責(zé)網(wǎng)絡(luò)通訊的服務(wù)應(yīng)用容易被掃描器偵測,也容易被DDOS攻擊,這在安全方面必須要考慮到。另外如果被識別出提供服務(wù)的端口,也會增加網(wǎng)絡(luò)攻擊的概率。因此SPA可考慮通過抓包方式直接拿到請求授權(quán)包。

  目前主流網(wǎng)絡(luò)抓包方式有以下:

  XDP :全名是eXpress Data Path,是一種In-kernel fast (express) data path。其原理如下圖:

5.png

  詳細(xì)信息見:https://docs.cilium.io/en/latest/bpf/

  DPDK:DPDK is the Data Plane Development Kit that consists of libraries to accelerate packet processing workloads running on a wide variety of CPU architectures。

 ?。ㄔ敿?xì)信息見:https://www.dpdk.org/about/ 和

  https://www.intel.cn/content/www/cn/zh/communications/data-plane-development-kit.html)

  PF_RING:PF_RING is a Linux kernel module and user-space framework that allows you to process packets at high-rates while providing you a consistent API for packet processing applications

 ?。ㄔ敿?xì)信息見:https://www.ntop.org/products/packet-capture/pf_ring/)

  PCAP:在計(jì)算機(jī)網(wǎng)絡(luò)管理中,pcap(packet capture)由捕獲網(wǎng)絡(luò)流量的應(yīng)用程序編程接口(API)組成。類Unix的系統(tǒng)主要是在libpcap庫中實(shí)現(xiàn)pcap,而Windows系統(tǒng)則是使用名為WinPcap的libpcap端口。

 ?。ㄔ敿?xì)信息見:https://www.tcpdump.org/pcap.html 和 https://www.winpcap.org/)

  以下是上述抓包方式在大流量高并發(fā)場景下的比較:

微信截圖_20210122135435.png

    在做SPAD技術(shù)選型時,進(jìn)行了大量的技術(shù)調(diào)研和技術(shù)評估,最終選擇使用XDP技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)抓包功能。

  3.2

  網(wǎng)絡(luò)數(shù)據(jù)加解密以及驗(yàn)證身份部分

  SPA請求授權(quán)包必須保證完整性和安全性,可參考以下主流算法實(shí)現(xiàn)自定義業(yè)務(wù)報(bào)文協(xié)議。

  對稱加密算法:加密和解密的兩個過程使用相同的密鑰,通過加密和解密函數(shù)對數(shù)據(jù)進(jìn)行操作,從而達(dá)到加密數(shù)據(jù)和解密數(shù)據(jù)的目的。具體算法主要有DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法等。

  公鑰加密算法:通信雙方共享各自的公鑰,傳輸時使用對方的公鑰對數(shù)據(jù)進(jìn)行加密,接收方收到后,用自己的私鑰對數(shù)據(jù)進(jìn)行解密。公鑰加密算法也被稱為非對稱加密算法,因?yàn)榧用芎徒饷苁褂貌煌拿荑€。具體算法主要有RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)。

  Hash函數(shù):散列函數(shù),具有單向性。散列函數(shù)對消息進(jìn)行摘要,并經(jīng)過迭代,得到固定長度的輸出。消息的一個字節(jié)的變化對Hash函數(shù)的輸出都會有很大的影響。具體算法主要有SHA,MD5等

  MAC:消息認(rèn)證碼,由Hash函數(shù)對消息進(jìn)行摘要得到,由于Hash函數(shù)的特性,可以提供對消息完整性的驗(yàn)證,一般隨消息一起發(fā)出。主要用于驗(yàn)證,防止信息被修改, 如:文件校驗(yàn)、數(shù)字簽名、鑒權(quán)協(xié)議

  SPAD在授權(quán)包協(xié)議設(shè)計(jì)時采用多種算法來保證了數(shù)據(jù)的完整性、保密性、安全性。在實(shí)踐中也可以將業(yè)務(wù)認(rèn)證和鑒權(quán)考慮進(jìn)來,比如與IAM系統(tǒng)聯(lián)動。

  3.3

  防火墻策略部分

  防火墻按照實(shí)現(xiàn)方式可分為軟件防火墻和硬件防火墻。

  軟件防火墻:主要有iptables firewalls on Linux (including firewalld as well on recent Fedora, RHEL, and CentOS systems);ipfw firewalls on FreeBSD and Mac OS X;pf on OpenBSD。

  可實(shí)現(xiàn)軟件防火墻技術(shù)的功能組件:XDP,Netfilter等

  硬件防火墻

  在方案比較時,對比發(fā)現(xiàn)軟件防火墻有很大的優(yōu)勢,如成本低,操作簡單,開發(fā)速度快等。在評估了各種軟件防火墻后,SPAD決定選用XDP技術(shù)做防火墻功能控制。

  04SPAD服務(wù)Q&A

  為什么一般采用udp協(xié)議?

  答:SPA一般選擇使用UDP通信,因?yàn)閁DP傳輸是無連接的,默認(rèn)無須響應(yīng),這樣就有很大優(yōu)勢,可通過drop授權(quán)不通過的數(shù)據(jù)包來隱藏自己;另外從安全角度講,TCP更容易被攻擊。

  為什么采用無監(jiān)聽服務(wù)端口方式?

  答:不監(jiān)聽任何端口的策略可以防范黑客攻擊前的掃描偵測,從源頭杜絕黑客對具體業(yè)務(wù)服務(wù)的攻擊。無監(jiān)聽服務(wù)端口方式實(shí)現(xiàn)上需要SPAD直接在網(wǎng)絡(luò)層抓包,直接解析UDP網(wǎng)絡(luò)報(bào)文內(nèi)容,不需要真正有應(yīng)用服務(wù)監(jiān)聽網(wǎng)絡(luò)端口。

  為什么請求授權(quán)包要控制大???

  答:在網(wǎng)絡(luò)傳輸中,TCP包傳輸都有MTU限制,一般網(wǎng)卡的MTU默認(rèn)是1500。為了在單網(wǎng)絡(luò)數(shù)據(jù)包中獲取全部的SPA授權(quán)請求報(bào)文,所以必須要限制請求授權(quán)包的大小。當(dāng)要支持多種網(wǎng)絡(luò)協(xié)議時需要重點(diǎn)考慮。

  為什么使用訪問策略TTL?

  答:為了減少安全風(fēng)險(xiǎn),使用一次授權(quán)保持一定的TTL時間,過期后如需要訪問,必須重新申請,這樣更加安全。

  為什么SPA服務(wù)和應(yīng)用部署在一起?

  答:和應(yīng)用部署在一起的好處是對本機(jī)防火墻策略管理就可以控制網(wǎng)絡(luò)數(shù)據(jù)包訪問應(yīng)用,這樣會更加簡單,更容易開發(fā)。

  為什么采用自定義授權(quán)報(bào)文協(xié)議?

  答:目前開源軟件中采用的SPA授權(quán)請求與響應(yīng)報(bào)文協(xié)議很難滿足自身業(yè)務(wù)需求,特別是ToC業(yè)務(wù),存在海量訪問客戶端,所以需要設(shè)計(jì)出更靈活,更安全的授權(quán)報(bào)文協(xié)議。

  為什么授權(quán)報(bào)文協(xié)議中要有NAT網(wǎng)絡(luò)標(biāo)識字段?

  答:對于NAT網(wǎng)絡(luò),多個子節(jié)點(diǎn)設(shè)備或服務(wù)器的外網(wǎng)IP地址相同,這樣容易出現(xiàn)一個終端授權(quán)成功,其他同網(wǎng)絡(luò)節(jié)點(diǎn)均可以訪問的情況,所以必須要區(qū)分NAT內(nèi)部設(shè)備或服務(wù)器。

  為什么支持按照源IP分組的訪問策略?

  答:當(dāng)通過CDN網(wǎng)絡(luò)訪問SPAD時,可能有多個源IP地址,需要將將該CDN網(wǎng)絡(luò)作為一個Group進(jìn)行訪問策略管理,即管理訪問策略時是對整個Group的所有源IP都做策略管控。同時在SPA首包認(rèn)證協(xié)議中需要增加用戶ID標(biāo)識字段,由SPAD服務(wù)管理維護(hù)用戶ID標(biāo)識字段對應(yīng)業(yè)務(wù)服務(wù)的訪問狀態(tài)。只有SPA授權(quán)請求包鑒權(quán)成功的用戶Session狀態(tài),才允許訪問對應(yīng)的業(yè)務(wù)服務(wù)。另外SPAD需要根據(jù)CDN網(wǎng)絡(luò)的IP動態(tài)變化維護(hù)Group內(nèi)的源IP列表和訪問策略變更。

  總結(jié):上述Q&A只是SPAD在技術(shù)方案上遇到的問題,由于每家企業(yè)需求不同,技術(shù)架構(gòu)也不一定相同,以上內(nèi)容僅供參考。



本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。