于欣越,孫 剛,張亞偉
(1.中國(guó)電信股份有限公司安徽分公司,安徽 合肥 230000;2.德思信息科技(南京)有限公司,江蘇 南京 210000)
過(guò)去企業(yè)IT 基礎(chǔ)設(shè)施局限在企業(yè)自建或租賃的“機(jī)房”內(nèi),企業(yè)用戶或合作伙伴都是通過(guò)傳統(tǒng)的企業(yè)“內(nèi)網(wǎng)”訪問(wèn)企業(yè)的業(yè)務(wù)系統(tǒng),企業(yè)的IT架構(gòu)是“有邊界”的。在業(yè)務(wù)上云和用戶開始使用自帶設(shè)備(Bring Your Own Device,BYOD)[1]移動(dòng)辦公的大背景下,企業(yè)IT 基礎(chǔ)設(shè)施與用戶辦公的內(nèi)外邊界變得模糊,傳統(tǒng)安全邊界開始慢慢消失,企業(yè)IT 架構(gòu)正在從“有邊界”向“無(wú)邊界”進(jìn)行過(guò)渡。傳統(tǒng)的網(wǎng)絡(luò)安全手段已經(jīng)不能滿足云時(shí)代和移動(dòng)辦公時(shí)代企業(yè)所需的安全防護(hù)以及高效的訪問(wèn)要求,零信任安全架構(gòu)模型應(yīng)運(yùn)而生。零信任網(wǎng)絡(luò)安全架構(gòu)打破了傳統(tǒng)的邊界防護(hù)思維,從以往的以網(wǎng)絡(luò)防護(hù)為中心轉(zhuǎn)變?yōu)橐陨矸荩ㄈ恕⒃O(shè)備、應(yīng)用)為中心;最小化權(quán)限訪問(wèn)控制,默認(rèn)不信任網(wǎng)絡(luò)內(nèi)部和外部的任何人、設(shè)備或網(wǎng)絡(luò),持續(xù)監(jiān)控所有連接的可疑行為。
零信任(Zero Trust,ZT)安全的核心思想是:打破舊式邊界防護(hù)思維,從傳統(tǒng)的以網(wǎng)絡(luò)為中心轉(zhuǎn)變?yōu)橐陨矸轂橹行倪M(jìn)行最小權(quán)限訪問(wèn)控制[2]。軟件定義邊 界(Software-Defined-Perimeter,SDP)安全模型作為零信任的最佳實(shí)踐,由國(guó)際云安全聯(lián)盟在2013 年提出,也被Gartner 定義為零信任網(wǎng)絡(luò)訪問(wèn)零信任網(wǎng)絡(luò)接入(Zero Trust Network Access,ZTNA)。
SDP 是圍繞某個(gè)應(yīng)用或一組應(yīng)用創(chuàng)建的。基于身份和上下文的邏輯訪問(wèn)邊界,SDP 從架構(gòu)設(shè)計(jì)上就只允許可信任的業(yè)務(wù)報(bào)文通過(guò),同時(shí)丟棄不合法報(bào)文。一般來(lái)講,在SDP 架構(gòu)下真實(shí)的后端服務(wù)是被隱藏的:客戶端與眾多的SDP 邊緣節(jié)點(diǎn)聯(lián)動(dòng),使得合法報(bào)文知道如何進(jìn)入SDP 網(wǎng)絡(luò),惡意流量將被SDP 邊緣節(jié)點(diǎn)丟棄,把應(yīng)用資源從公共視野中消除,從而顯著減少攻擊面[3]。
SDP 作為零信任的最佳實(shí)踐落地技術(shù)架構(gòu),在“移動(dòng)+云”的時(shí)代背景下,旨在通過(guò)網(wǎng)絡(luò)隱身技術(shù),為企業(yè)構(gòu)建起一個(gè)云安全邊界,確保只有合法的身份、設(shè)備和網(wǎng)絡(luò)環(huán)境才能接入,對(duì)其他工具完全不可見,由于看不到目標(biāo),因此有效地規(guī)避了各種安全風(fēng)險(xiǎn)。同時(shí),SDP 還有一個(gè)很重要的零信任機(jī)制,就是在訪問(wèn)過(guò)程中對(duì)用戶行為持續(xù)進(jìn)行安全等級(jí)評(píng)估,并對(duì)風(fēng)險(xiǎn)行為進(jìn)行動(dòng)態(tài)控制,從而有效保護(hù)企業(yè)的數(shù)據(jù)資產(chǎn)的安全。
傳統(tǒng)的網(wǎng)絡(luò)接入控制是先接入再認(rèn)證,由于端口暴露在互聯(lián)網(wǎng)上,很容易遭受安全攻擊,從而產(chǎn)生各種安全威脅。零信任SDP 安全模型跟傳統(tǒng)的網(wǎng)絡(luò)接入控制模型不同,通過(guò)網(wǎng)絡(luò)隱身技術(shù)實(shí)現(xiàn)先認(rèn)證后連接,端口不暴露在互聯(lián)網(wǎng)。同時(shí),采用三角架構(gòu),管理控制平面與傳輸數(shù)據(jù)平面分離,實(shí)現(xiàn)更安全的接入管控,并且在云環(huán)境下實(shí)現(xiàn)系統(tǒng)的靈活可擴(kuò)展。
如圖1 所示,零信任SDP 安全模型由3 部分組成[4]:SDP 管控平臺(tái)、SDP 網(wǎng)關(guān)和SDP 客戶端。該模型采用三角架構(gòu),SDP 客戶端發(fā)起連接請(qǐng)求,SDP 管控平臺(tái)認(rèn)證客戶端請(qǐng)求,并控制SDP 客戶端與SDP 網(wǎng)關(guān)建立數(shù)據(jù)通道。
圖1 SDP 架構(gòu)
SDP 客戶端通過(guò)敲門技術(shù)攜帶認(rèn)證信息,包含用戶名、密碼、終端信息、網(wǎng)絡(luò)環(huán)境等。SDP 控制器對(duì)這些認(rèn)證信息組合的多因素身份進(jìn)行驗(yàn)證,向客戶端返回SDP 網(wǎng)關(guān)列表及權(quán)限列表。
SDP 管控平臺(tái)用來(lái)對(duì)接入的SDP 客戶端進(jìn)行身份驗(yàn)證,管理SDP 網(wǎng)關(guān)。管控平臺(tái)自身具備安全策略管理、日志審計(jì)等功能,能夠動(dòng)態(tài)管控用戶的認(rèn)證和訪問(wèn)行為,以及與企業(yè)已有的身份管理、態(tài)勢(shì)感知等系統(tǒng)對(duì)接。
默認(rèn)情況下,SDP 網(wǎng)關(guān)拒絕一切連接請(qǐng)求,只有管控平臺(tái)下發(fā)認(rèn)證策略后,才動(dòng)態(tài)接受指定SDP客戶端的連接,通過(guò)加密傳輸?shù)姆绞酱鞸DP 客戶端和應(yīng)用的數(shù)據(jù)通信,同時(shí)根據(jù)管控平臺(tái)下發(fā)的控制策略,管理通信過(guò)程。
網(wǎng)絡(luò)隱身作為零信任SDP 最關(guān)鍵的技術(shù)之一,其目標(biāo)之一是克服傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議地 址(Transmission Control Protocol/Internet Protocol Address,TCP/IP)開放和不安全的基本特性。該特性允許“先連接后認(rèn)證”,而使用SDP 架構(gòu)的應(yīng)用被隱藏在SDP 網(wǎng)關(guān)之后,實(shí)現(xiàn)“先認(rèn)證后連接”,從而只有被授權(quán)的用戶才能可靠地訪問(wèn),而未授權(quán)用戶則看不到這些服務(wù)。
單包授權(quán)(Single Packet Authorization,SPA)是實(shí)現(xiàn)SDP 網(wǎng)絡(luò)隱身的核心網(wǎng)絡(luò)安全協(xié)議。在允許訪問(wèn)控制器、網(wǎng)關(guān)等相關(guān)系統(tǒng)組件所在的網(wǎng)絡(luò)之前先驗(yàn)證設(shè)備和用戶身份,實(shí)現(xiàn)零信任“先認(rèn)證,再連接”的安全模型理念。SPA 包含包括請(qǐng)求方的IP地址等在內(nèi)的連接請(qǐng)求的信息,在單一的網(wǎng)絡(luò)信息中被加密和認(rèn)證,通過(guò)配置默認(rèn)丟棄(Default-Drop)的防火墻策略使保護(hù)的服務(wù)對(duì)外不可見。SPA 的目的是允許服務(wù)器防火墻隱藏起來(lái)并被默認(rèn)丟棄。該防火墻系統(tǒng)應(yīng)該丟棄所有TCP 和用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,UDP)數(shù)據(jù)包,不回復(fù)連接嘗試,從而不為潛在的攻擊者提供任何關(guān)于該端口是否正被監(jiān)聽的信息。
用戶嘗試訪問(wèn)時(shí),先驗(yàn)證用戶的身份、設(shè)備和網(wǎng)絡(luò)信息,然后允許用戶網(wǎng)絡(luò)訪問(wèn)零信任系統(tǒng)組件管控平臺(tái)和SDP 網(wǎng)關(guān),最后用戶才被允許訪問(wèn)該服務(wù)。所以,SPA 對(duì)于SDP 不可或缺,用于在客戶端和控制端、網(wǎng)關(guān)和控制器、客戶端和網(wǎng)關(guān)等之間的連接中通信。
SPA 實(shí)現(xiàn)原則:
(1)數(shù)據(jù)包必須被加密認(rèn)證;
(2)數(shù)據(jù)包必須自行包含所有必要的信息,單獨(dú)的數(shù)據(jù)包不被信任;
(3)生成和發(fā)送數(shù)據(jù)包必須不依賴于管理員或底層訪問(wèn)權(quán)限,不允許篡改原始數(shù)據(jù)包;
(4)服務(wù)器必須盡可能無(wú)聲地接收和處理數(shù)據(jù)包,不發(fā)送回應(yīng)或確認(rèn)。
具體實(shí)現(xiàn)原理如圖2 所示。
圖2 SDP 網(wǎng)絡(luò)隱身原理
SDP 架構(gòu)下保護(hù)的業(yè)務(wù)服務(wù)只允許被認(rèn)為合法的報(bào)文進(jìn)行訪問(wèn),丟棄“非法”報(bào)文,從而實(shí)現(xiàn)了業(yè)務(wù)服務(wù)隱身。SPA 認(rèn)證流程如圖3 所示。
圖3 SPA 認(rèn)證流程
認(rèn)證處理流程如下:
(1)客戶端發(fā)送一個(gè)簽名的請(qǐng)求授權(quán)訪問(wèn)后端服務(wù)的數(shù)據(jù)包給SPA 服務(wù);
(2)SPA 服務(wù)對(duì)收到的請(qǐng)求授權(quán)包進(jìn)行解包、驗(yàn)簽等操作,對(duì)無(wú)效請(qǐng)求直接丟棄;對(duì)檢查通過(guò)的,設(shè)置防火墻訪問(wèn)規(guī)則并回復(fù)授權(quán)響應(yīng)包給合法客戶端。
SPA 可以看做通信層的訪問(wèn)保護(hù),主要在網(wǎng)絡(luò)通信層保護(hù)防火墻之后的后端服務(wù)。SPA 首包認(rèn)證作為網(wǎng)絡(luò)通信的授權(quán)認(rèn)證手段,有效地防范未信任數(shù)據(jù)包的風(fēng)險(xiǎn)。
SPA 對(duì)網(wǎng)絡(luò)授權(quán)數(shù)據(jù)包的應(yīng)用訪問(wèn)進(jìn)行防火墻管控,從而達(dá)到控制網(wǎng)絡(luò)訪問(wèn)的目的。SPA 服務(wù)主要有如下技術(shù)特點(diǎn)。
(1)無(wú)監(jiān)聽端口:使用快速數(shù)據(jù)路徑(eXpress Data Path,XDP)直接從網(wǎng)卡驅(qū)動(dòng)層獲取通信數(shù)據(jù)包,直接處理報(bào)文內(nèi)容。掃描程序無(wú)法偵測(cè)到監(jiān)聽端口,這樣可以防范黑客攻擊前的掃描偵測(cè),從源頭杜絕黑客對(duì)具體業(yè)務(wù)服務(wù)的攻擊。無(wú)監(jiān)聽服務(wù)端口方式只需要SPA 直接在網(wǎng)絡(luò)層抓包,直接解析UDP 網(wǎng)絡(luò)報(bào)文內(nèi)容,不需要真正擁有應(yīng)用服務(wù)監(jiān)聽網(wǎng)絡(luò)端口。
(2)支持大網(wǎng)絡(luò)流量處理:XDP 技術(shù)性能非常高,可接近網(wǎng)卡帶寬上限,特別是在抵御DDoS攻擊方面有先天優(yōu)勢(shì)。
(3)支持千萬(wàn)級(jí)別管理策略:使用源IP、目的IP 和目的端口,通過(guò)服務(wù)標(biāo)識(shí)做Hash(哈希)算法來(lái)管控網(wǎng)絡(luò),可支持千萬(wàn)級(jí)別管理策略。
(4)更加安全的SPA 首包認(rèn)證協(xié)議:SPAD使用自定義SPA 協(xié)議。通過(guò)使用個(gè)性化簽名算法和報(bào)文加密算法,以及MAC 算法,提高了安全性。
(5)支持高可用集群部署:管理策略使用NoSQL、MySQL 等存儲(chǔ),支持多節(jié)點(diǎn)集群部署。目前SPAD 支持VIP 模式高可用方案(Keepalived +VIP)。
SPA 網(wǎng)絡(luò)控制組件架構(gòu)如圖4 所示。
圖4 SPA 網(wǎng)絡(luò)控制組件架構(gòu)
從圖4 可以看出,SPA 網(wǎng)絡(luò)控制組件可以分為以下3 層。
(1)網(wǎng)絡(luò)通信層:可使用UDP、TCP 通信,也可以使用自定義協(xié)議。SPA 一般選擇使用UDP通信,因?yàn)閁DP 傳輸是無(wú)連接的,默認(rèn)無(wú)須響應(yīng),可通過(guò)drop 授權(quán)不通過(guò)的數(shù)據(jù)包來(lái)隱藏自己,這個(gè)特性使得SPA 可以隱藏自己。另外從安全角度講,TCP 更容易被攻擊。
(2)授權(quán)包的加解密以及簽名驗(yàn)證:數(shù)據(jù)本身包含簽名、加密算法密文以及防篡改MAC 保護(hù)。
(3)防火墻網(wǎng)絡(luò)策略規(guī)則管理:對(duì)SPA 授權(quán)認(rèn)證通過(guò)的應(yīng)用開放網(wǎng)絡(luò)訪問(wèn)權(quán)限,添加防火墻的訪問(wèn)策略。一般網(wǎng)絡(luò)策略默認(rèn)設(shè)置時(shí)間生命周期(Time To Live,TTL),過(guò)期時(shí)訪問(wèn)策略會(huì)清除。
3.2.1 網(wǎng)絡(luò)通信
負(fù)責(zé)網(wǎng)絡(luò)通信的服務(wù)應(yīng)用容易被掃描器偵測(cè),也容易被DDoS 攻擊,這在安全方面必須考慮到。另外如果被識(shí)別出提供服務(wù)的端口,也會(huì)增加網(wǎng)絡(luò)攻擊的概率。因此SPA 可需要通過(guò)抓包方式直接拿到請(qǐng)求授權(quán)包。
目前主流網(wǎng)絡(luò)抓包方式有以下4 種。
(1)XDP:全名是eXpress Data Path,是一種內(nèi)核快速表達(dá)數(shù)據(jù)路徑方法。
(2)DPDK(Data Plane Development Kit):DPDK 是數(shù)據(jù)平面開發(fā)套件,由多個(gè)庫(kù)組成,可提高在各種CPU 架構(gòu)上運(yùn)行的數(shù)據(jù)包處理工作量。
(3)PF_RING:PF_RING 是一個(gè)Linux 內(nèi)核模塊和用戶空間框架,可以高速率處理數(shù)據(jù)包,同時(shí)為數(shù)據(jù)包處理應(yīng)用程序提供一致的API。
(4)PCAP:PCAP 由應(yīng)用程序編程接口組成,通過(guò)這種高層次的接口來(lái)捕獲網(wǎng)絡(luò)流量。PCAP 也支持把捕獲的數(shù)據(jù)包保存為本地文件并從本地文件讀取信息。
上述抓包方式在大流量高并發(fā)場(chǎng)景下的比較情況,如表1 所示。
表1 網(wǎng)絡(luò)抓包性能
3.2.2 數(shù)據(jù)加解密及驗(yàn)證
SPA 請(qǐng)求授權(quán)包必須保證完整性和安全性,可參考以下主流算法實(shí)現(xiàn)自定義業(yè)務(wù)報(bào)文協(xié)議。
(1)對(duì)稱加密算法:指加密和解密使用相同密鑰的加密算法。對(duì)稱加密算法用來(lái)對(duì)敏感數(shù)據(jù)等信息進(jìn)行加密,常用的算法包括DES、3DES、AES、DESX、Blowfish、RC4、RC5、RC6。
(2)公鑰加密算法:指加密和解密使用不同密鑰的加密算法,也稱為公私鑰加密。假設(shè)兩個(gè)用戶要加密交換數(shù)據(jù),雙方交換公鑰,使用時(shí)一方用對(duì)方的公鑰加密,另一方即可用自己的私鑰解密。常見的非對(duì)稱加密算法:RSA、DSA(數(shù)字簽名用)、ECC(移動(dòng)設(shè)備用)、Diffie-Hellman、El Gamal。
(3)Hash 函數(shù):是一種單向算法,用戶可以通過(guò)Hash 算法對(duì)目標(biāo)信息生成一段特定長(zhǎng)度的唯一的Hash 值,卻不能通過(guò)這個(gè)Hash 值重新獲得目標(biāo)信息。因此Hash 算法常用在不可還原的密碼存儲(chǔ)、信息完整性校驗(yàn)等。常見的Hash 算法包括MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。
3.2.3 防火墻策略
通過(guò)防火墻安全策略可以控制內(nèi)網(wǎng)訪問(wèn)外網(wǎng)的權(quán)限、控制內(nèi)網(wǎng)不同安全級(jí)別的子網(wǎng)間的訪問(wèn)權(quán)限等。同時(shí)也能夠?qū)υO(shè)備本身的訪問(wèn)進(jìn)行控制,例如限制哪些IP 地址可以通過(guò)Telnet 和Web 等方式登錄設(shè)備,并且控制網(wǎng)管服務(wù)器、NTP 服務(wù)器等與設(shè)備的互訪等。
SDP 通過(guò)網(wǎng)絡(luò)隱身技術(shù)(如圖5 所示)可有效減少受攻擊面,緩解或者徹底消除多項(xiàng)安全威脅、風(fēng)險(xiǎn)和漏洞[5]。
(1)系統(tǒng)和應(yīng)用程序漏洞
SDP 顯著減少攻擊面,通過(guò)將系統(tǒng)和應(yīng)用程序的漏洞隱藏起來(lái),對(duì)于未授權(quán)用戶不可見。
(2)賬號(hào)劫持
基于會(huì)話cookie 的賬戶劫持被SDP 完全消除。如果沒有預(yù)先認(rèn)證和預(yù)先授權(quán),并且攜帶適當(dāng)?shù)腟PA 數(shù)據(jù)包,應(yīng)用服務(wù)器會(huì)默認(rèn)拒絕來(lái)自惡意終端的網(wǎng)絡(luò)連接請(qǐng)求。因此,即使網(wǎng)絡(luò)請(qǐng)求中攜帶被劫持的會(huì)話cookie,也不會(huì)被SDP 網(wǎng)關(guān)準(zhǔn)入。
(3)數(shù)據(jù)泄露
SDP 通過(guò)添加預(yù)驗(yàn)證和預(yù)授權(quán)層來(lái)減少公開暴露的主機(jī)的攻擊面,實(shí)現(xiàn)服務(wù)器和網(wǎng)絡(luò)的安全性的“最小訪問(wèn)權(quán)限”模型,從而有助于減少數(shù)據(jù)泄露的許多攻擊方式。
(4)DDoS 拒絕服務(wù)
SDP 架構(gòu)中的單包授權(quán)(SPA)技術(shù)使得SDP控制器和網(wǎng)關(guān)對(duì)阻止DDoS 攻擊更有彈性。SPA 與典型的TCP 握手連接相比可花費(fèi)更少的資源,使服務(wù)器能夠大規(guī)模處理、丟棄惡意的網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)包。與TCP 相比,基于UDP 的SPA 進(jìn)一步提高了服務(wù)器的可用性。
圖5 網(wǎng)絡(luò)隱身安全能力
目前,開源社區(qū)中發(fā)布了一個(gè)實(shí)現(xiàn)SPA 實(shí)現(xiàn)單包授權(quán)技術(shù)的方案Fwknop。該技術(shù)實(shí)現(xiàn)了只通過(guò)一個(gè)加密的UDP 數(shù)據(jù)包來(lái)傳達(dá)各種信息,且該技術(shù)兼容目前主流操作系統(tǒng)中的防火墻,如最常用的iptables。通過(guò)在客戶端封裝Fwknop,將單個(gè)攜帶認(rèn)證信息的UDP 數(shù)據(jù)包進(jìn)行非對(duì)稱加密,并發(fā)送到Fwknop 服務(wù)端進(jìn)行驗(yàn)證,同時(shí),支持對(duì)UDP 數(shù)據(jù)包的認(rèn)證信息進(jìn)行多重因子的驗(yàn)證,包括用戶信息、設(shè)備信息、網(wǎng)絡(luò)環(huán)境等。
單個(gè)或多個(gè)應(yīng)用服務(wù)隱藏于Fwknop服務(wù)之后,部署Fwknop 服務(wù)的主機(jī)防火墻默認(rèn)拒絕一切數(shù)據(jù)包的連接,丟棄一切數(shù)據(jù)包。然后通過(guò)libpcap 從物理網(wǎng)卡上被動(dòng)地嗅探Fwknop 客戶端發(fā)出的單個(gè)UDP 數(shù)據(jù)包。
封裝Fwknop 的客戶端向Fwknop 服務(wù)端發(fā)送單個(gè)UDP 的認(rèn)證數(shù)據(jù)包,F(xiàn)wknop 服務(wù)端嗅探到合法的Fwknop 客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù)包后,暫時(shí)授予被動(dòng)認(rèn)證的Fwknop 客戶端的訪問(wèn)權(quán)限。即向主機(jī)上相應(yīng)的iptables 鏈中添加該主機(jī)對(duì)相應(yīng)服務(wù)的accept 規(guī)則,實(shí)現(xiàn)授信終端的接入。
移動(dòng)互聯(lián)網(wǎng)時(shí)代,在云化的大背景下,隨著企業(yè)的數(shù)字化轉(zhuǎn)型升級(jí),新技術(shù)態(tài)勢(shì)下的網(wǎng)絡(luò)安全威脅和風(fēng)險(xiǎn)不斷涌現(xiàn),基于傳統(tǒng)邊界安全解決方案難以應(yīng)對(duì)?;诹阈湃伟踩P偷能浖x邊界(SDP)架構(gòu)應(yīng)運(yùn)而生。SDP 破除傳統(tǒng)安全防護(hù)思維,通過(guò)在云上建立起虛擬的網(wǎng)絡(luò)安全邊界,幫助企業(yè)能夠快速、安全上云,加速各行各業(yè)的數(shù)字化進(jìn)程,具有非常重要的戰(zhàn)略意義。零信任安全作為一種顛覆傳統(tǒng)安全邊界思維的策略,對(duì)傳統(tǒng)安全防護(hù)機(jī)制的革新不是一蹴而就的,需要結(jié)合企業(yè)的數(shù)字化轉(zhuǎn)型規(guī)劃和業(yè)務(wù)發(fā)展規(guī)劃。必須基于企業(yè)現(xiàn)有條件,通過(guò)確立愿景、制定規(guī)劃、運(yùn)用合理的技術(shù)手段,分步驟穩(wěn)妥地進(jìn)行零信任實(shí)踐,最終實(shí)現(xiàn)零信任安全體系架構(gòu)建設(shè)。