柴新忠,李 凱,龔夢瑤,趙 原
(1.上海中船船舶設計技術國家工程研究中心有限公司 基礎設施部,上海 200235; 2.中國船舶及海洋工程設計研究院 軍船二部,上海 200021)
動目標防御(MTD)[1-4]是一種主動防御技術,其通過主動洗牌,可以在真正的攻擊行為啟動之前破壞網(wǎng)絡攻擊鏈的初始階段。例如,最具代表性的動目標防御方案MOTAG[5]提供了一種針對在線服務的洗牌方法。MOTAG機制被部署在代理服務器中,使外部攻擊者對不斷變化的IP地址感到迷惑,并通過快速篩選和屏蔽惡意用戶,使得流量在網(wǎng)絡邊界處得到凈化。在此基礎上,文獻[6]根據(jù)會話請求的強度,選擇性的將切換速度加快或者減慢,通過coupon-collecter模型建模所有間諜被篩選出的概率,文獻[7]通過負載均衡器實現(xiàn)對用戶的認證,文獻[8]增加了用戶批量遷移功能。此外,使用軟件定義網(wǎng)絡(software defined network,SDN)[9]等新技術的相關研究也在不斷增加,推動了MTD的發(fā)展。通過主動的周期性重映射,文獻[10]構建用戶與主服務平面之間的間接控制平面。文獻[11]應用雙代理零和博弈,避免DDoS攻擊或代理收割攻擊。文獻[12]將協(xié)作和自學習的跳變概念引入到動目標防御中。在入侵行為感知的基礎上,最大化防御系統(tǒng)的策略空間和不可預測性。
盡管動目標防御為受保護的網(wǎng)絡對象提供了安全防護,但是與靜態(tài)防御手段相比需要更頻繁地進行切換,因此也將高消耗引入到系統(tǒng)中[13,14]。安全防護和資源消耗之間的平衡讓防御者陷入了兩難的局面,阻礙了動目標防御的大規(guī)模應用。很少有研究關注提高動目標防御的適應性和成本效益的方法。
針對上述問題,本文提出了一種動態(tài)洗牌周期的主動防御框架,命名為DQ-MOTAG。在模型中,量化了動目標防御的運行成本和安全性能之間的權衡。提出了一種基于深度強化學習的算法,為洗牌周期提供學習管理和敏捷調(diào)整。通過基于實時威脅分析的迭代更新,細粒度洗牌策略以經(jīng)濟的方式收斂到足夠的安全性。在阿里云中實現(xiàn)了防御方案的原型系統(tǒng),并根據(jù)實際的服務需求進行了重構和改良。通過一系列實驗,驗證了該系統(tǒng)對多種主流攻擊的防御具有可行性、安全性和節(jié)能性。
在本節(jié)中,我們將對威脅模型與系統(tǒng)模型分別進行詳細的闡述。
首先,我們介紹威脅模型。我們假設間諜用戶可以與僵尸網(wǎng)絡進行通信,將目標服務器的IP地址與端口號告訴攻擊的組織者,然后引導僵尸網(wǎng)絡向目標發(fā)起大規(guī)模的DDoS攻擊(比如CC攻擊),被攻擊的服務器則會因為資源耗盡而無法繼續(xù)正常提供在線網(wǎng)絡服務。同時,間諜用戶沒有任何實質(zhì)性的惡意行為,僅僅是不斷地收集目標的相關信息,如嗅探目標主機的IP地址及端口號,這意味著傳統(tǒng)的入侵檢測機制將無法有效工作,無法將正常用戶和間諜用戶有效地區(qū)分開,因此這種間諜行為是十分隱蔽的。另一方面,間諜用戶可能會有一些策略來躲避常規(guī)檢測,例如間諜可能不會持續(xù)性引導僵尸網(wǎng)絡發(fā)動DDoS攻擊,從而使自身行為與正常用戶行為機會無差異,顯著減少了被甄別出的概率。
其次,我們描述DQ-MOTAG的主要框架。圖1展示了DQ-MOTAG的系統(tǒng)概況,主要由3個主要的組件組成:反向代理服務器、控制服務器和應用服務器。應用服務器提供一些在線實時服務例如多媒體視頻,因此它是我們系統(tǒng)需要保護的對象。只有反向代理服務器可以與應用服務器進行通信,因為來自未經(jīng)身份驗證過的IP地址的網(wǎng)絡請求將被過濾環(huán)過濾,過濾環(huán)是由放置在應用服務器周圍的許多高速路由器組成,只允許來自有效代理節(jié)點的接入流量。此外,控制服務器通常具有較強的計算能力,可用于調(diào)整洗牌周期、對于每一個用戶進行信用評分等決策。反向代理是一定數(shù)量的具有動態(tài)IP地址的分布式服務器,它在用戶和應用服務器之間中繼通信。這種機制有助于幫助應用服務器隱藏自己的IP地址。每個用戶與指定的反向代理保持通信,且僅能探測到當前連接的反向代理IP地址。我們設計的DQ-MOTAG不同于傳統(tǒng)MOTAG系統(tǒng)的地方在于去除了認證服務器這個脆弱的環(huán)節(jié),替代采用了DNS服務器來完成初始反向代理IP分配。由于針對DNS服務器的防御研究廣泛而成熟,所以這部分的安全性可以保證。
在本節(jié)中,我們將對DQ-MOTAG的主要運行流程進行闡述。本部分構建的DQ-MOTAG系統(tǒng)主要是對網(wǎng)絡流媒體平臺進行主動防御,原因在于流媒體對時延與帶寬均具有較高的要求,若DQ-MOTAG能夠在保證流媒體服務正常運行的情況下,高效保證安全性,那么DQ-MOTAG將可以部署在大部分的在線網(wǎng)絡服務平臺。
如圖2所示,DQ-MOTAG防御系統(tǒng)工作流程如下,首先用戶需要完成身份認證,控制服務器建立反向代理和用戶的映射表,完成后返回有效期固定的秘鑰,用戶完成注冊后會直接由DNS服務器分配初始反向代理地址。隨后客戶端和反向代理建立全雙工連接,進行視頻加載。當反向代理服務器遭受到DDoS攻擊時首先告知控制服務器,隨后控制服務器根據(jù)洗牌規(guī)則進行洗牌并重新建立反向代理和客戶端映射并將結果通知反向代理,反向代理收到結果后通過全雙工連接通知客戶端更換連接,隨即客戶端和新的反向代理建立連接。同時保證該過程對合法用戶透明,即觀看視頻并無卡頓或重定向等重連反應。需要保存在數(shù)據(jù)庫中的信息流為用戶信息和用戶對反向代理服務器的映射關系,NMTD系統(tǒng)中的認證用戶需要在系統(tǒng)中完成注冊,反向代理不對信息進行存儲,而是將信息傳遞至控制服務器處進行信息的存儲和查詢。同時反向代理的視頻模塊負責視頻的串流和內(nèi)容的反向代理。在反向代理內(nèi)部部署有成熟的入侵監(jiān)測系統(tǒng),能夠監(jiān)測DDoS攻擊流量,一旦系統(tǒng)監(jiān)測到被攻擊,則會觸發(fā)攻擊系統(tǒng)的評分機制,從而進行動態(tài)目標防御。
圖2 DQ-MOTAG系統(tǒng)運行流程
接下來,我們將闡述洗牌的詳細過程。在開始時,每個被訪問的用戶將被隨機分配到一個激活的反向代理節(jié)點。如果一些反向代理在初始分配后受到攻擊,應用服務器將降低這些受到攻擊的代理中用戶的信用評分。然后,應用服務器將在反向代理組中反復洗牌客戶到反向代理的分配,以區(qū)分間諜用戶和正常用戶并隔離間諜。由于應用服務器無法知道用戶中誰是實際的間諜,為了保護正常用戶,應用服務器將在洗牌過程中隨機重新分配所有用戶到反向代理的映射關系。通過多次的洗牌過程,間諜的信用評分將會越來越少,直到被DQ-MOTAG系統(tǒng)封禁。在一定數(shù)量的間諜用戶和可用的反向代理服務器中,可以激活更多的反向代理作為洗牌代理,以加速洗牌進程。在本文中,我們假設DQ-MOTAG系統(tǒng)采取最普遍使用的隨機洗牌算法,即切換時隨機分配用戶連接到其它的反向代理服務器。此外,雖然洗牌過程是獨立的,但每個用戶的信用評分是基于歷史行為的累積值。如果存在一些間諜用戶保持不引導攻擊的狀態(tài)來讓DQ-MOTAG系統(tǒng)相信他們是正常用戶,那么他們也不會對系統(tǒng)造成額外的損害。
在本節(jié)中,我們首先介紹了深度強化學習的總體概述。其次,我們提出一種基于深度強化學習的MOTAG系統(tǒng)來動態(tài)調(diào)整洗牌周期,其目的是尋得防御性能與網(wǎng)絡資源消耗的最優(yōu)平衡。
強化學習被認為是機器學習中重要的組成部分,能夠幫助MOTAG系統(tǒng)探索最優(yōu)的洗牌周期來最大化防御性能的同時減少網(wǎng)絡資源消耗。強化學習能夠通過選擇動作at優(yōu)化長期獎勵rt在網(wǎng)絡狀態(tài)st的情況下。我們定義Vπ(s)為通過洗牌周期選擇策略得到的狀態(tài)價值函數(shù),其可以表示為如下的公式
其中,E是期望算子,γ是折扣因子,k是索引。最優(yōu)洗牌周期選擇策略π*能夠被定義為Vπ*(s)=maxπVπ(s)。在實際問題中轉移動態(tài)性通常難以計算。在這種情況下,強化學習例如無模型算法Q-learning被廣泛應用于學習最優(yōu)解。在通常Q-learning算法中,往往基于Bellman公式來評估Q值函數(shù),表示如下
Qt+1(s,a)=Qt(s,a)+α{r+γ[maxa′Qt(s′,a′)]-Qt(s,a)}
其中,Qt(s,a)是在網(wǎng)絡狀態(tài)s和動作a下的Q值,α是Q-learning算法的學習速率。但是,當狀態(tài)動作空間越來越大時,學習過程將會消耗大量的時間并且收斂十分緩慢。在這種情況下,Q-learning已經(jīng)不適合解決龐大狀態(tài)空間下的馬爾科夫決策問題了。
為了解決一般Q-learning中的上述挑戰(zhàn),深度強化學習[15]在近年內(nèi)表現(xiàn)出了顯著的優(yōu)勢。受益于神經(jīng)網(wǎng)絡的快速發(fā)展,大規(guī)模狀態(tài)空間可以表達為神經(jīng)網(wǎng)絡替代原來的二維矩陣,其可以降低學習過程的時間復雜度。此外,深度Q-learning相比于Q-learning主要存在著兩方面的提升,分別是經(jīng)驗重放和兩部分Q網(wǎng)絡。經(jīng)驗重放技術存儲歷史經(jīng)驗對到重放經(jīng)驗池,可以表達為et=(st,at,st+1)。深度Q-learning從經(jīng)驗重放池中選出歷史樣例來用于訓練神經(jīng)網(wǎng)絡參數(shù)。在兩部分Q網(wǎng)絡中,目標Q值可以表示為y=r+γmaxa′Q(s′,a′;θ-),并且通過目標Q網(wǎng)絡進行計算。同時,目標網(wǎng)絡的神經(jīng)網(wǎng)絡參數(shù)每隔幾個時隙更新一次。
傳統(tǒng)代理切換型系統(tǒng)一般具有固定時間間隔的洗牌周期,無論系統(tǒng)中的接入間諜數(shù)量是多是少,總是高強度的進行洗牌切換操作,保持了較高的安全級別,但會浪費大量的網(wǎng)絡資源。因此,我們需要設計一種自適應調(diào)整切換周期的算法來實現(xiàn)當系統(tǒng)中的接入間諜數(shù)量較高時,系統(tǒng)保持高速的洗牌切換,盡可能保障安全性;當系統(tǒng)中的接入間諜數(shù)量較低時,則會降低洗牌切換的速度,盡可能降低切換造成的網(wǎng)絡資源消耗。
在一個代理切換型動目標防御系統(tǒng)中,我們假設一共有N個反向代理節(jié)點,M個接入的用戶并且每個方向代理節(jié)點最多可以分配L個接入用戶,有N×L≥M。時間間隙可以被定義為△T,從而時間可以表示為t=time/△T。為了將深度Q學習算法應用到自適應調(diào)整洗牌周期中,我們首先給出網(wǎng)絡狀態(tài)、動作和獎勵的定義,表示如下:
(3)獎勵:設計獎勵函數(shù)是為了評估動態(tài)洗牌周期的高效性。DQ-MOTAG的目的是尋求最優(yōu)洗牌周期基于獎勵函數(shù)。在本文中,簡單而不失一般性,我們定義一個普適的獎勵函數(shù)如下
其中,δ和β都是系數(shù),Gi(t)代表在t時刻反向代理i遭受DDoS攻擊的次數(shù),Z表示時隙的總數(shù)量。這個獎勵函數(shù)說明越多數(shù)量的DDoS攻擊,獎勵越低。另一方面,更長的洗牌周期意味著更少的網(wǎng)絡資源消耗。通過這個獎勵函數(shù),深度Q-learning最終能夠發(fā)現(xiàn)防御性能與資源消耗之間的平衡。在本文中,我們關注的是設計一個基于深度強化學習的自適應洗牌周期機制。盡管我們設計的獎勵函數(shù)看上去結構較為簡單,但它具有普適性且能夠被應用于更加復雜的場景。
接下來,將給出我們設計的基于深度Q學習的自適應洗牌周期機制的偽代碼,其展示在算法1中。
算法1:MOTAG系統(tǒng)中基于深度強化學習的自適應洗牌周期
(1)設置貪婪因子和學習速率
(2)初始化經(jīng)驗重放緩存
(3)初始化主Q網(wǎng)絡的參數(shù)
(4)初始化目標Q網(wǎng)絡的參數(shù)
(5)Fork=1,2,…,Kdo
(6) 選擇一個隨機的初始狀態(tài)
(7) Fort=1,2,…,Zdo
(8) 生成一個隨機概率p
(9) 通過下述方式選擇動作
(10) Ifp<=εthen
(11) 隨機選擇一個動作
(12) Else
(13)at=argmaxaQ(S,a;θ)
(14) End if
(15) 執(zhí)行洗牌周期選擇動作at并且觀測反饋的獎勵rt。
(16) 獲得下一個狀態(tài)St+1。
(17) 將經(jīng)驗(st,at,rt,st+1)存儲到經(jīng)驗重放緩存中。
(18) 從重放記憶中取一系列樣例(sx,ax,rx,sx+1)。
(19) 對目標深度Q網(wǎng)絡中的目標Q值進行計算:
(20) 通過梯度下降法最小化損失函數(shù)更新主Q網(wǎng)絡
(21) 將主Q網(wǎng)絡的參數(shù)每隔N個時隙拷貝到目標Q網(wǎng)絡中。
(22) End for
(23)End for
DQ-MOTAG系統(tǒng)在沒有先驗知識的前提下探索不同的洗牌周期。從初始網(wǎng)絡狀態(tài)開始直到完成Z×△T時隙后被稱為一個episode。在每個episode中,DQ-MOTAG通過貪婪策略選擇不同的洗牌周期并且能夠獲得相應的獎勵,然后當前狀態(tài)將會轉移到下一個狀態(tài)((15)行~(16)行)。接下來,神經(jīng)網(wǎng)絡里的參數(shù)將會通過經(jīng)驗重放機制來更新((17)行~(21)行)。
為了驗證DQ-MOTAG能夠顯著減少網(wǎng)絡資源消耗并同時保持高效的防御性能,我們在極客云服務[16]進行了一系列的仿真實驗,服務器參數(shù)為Intel i7 2.8 GHz CPU,顯卡為GeForce RTX 2080 Ti和16 G內(nèi)存。軟件環(huán)境為python3.6中的Tensorflow 1.14.0。
首先我們驗證隨機洗牌算法的有效性。為了體現(xiàn)系統(tǒng)的高并發(fā)性,我們設置接入系統(tǒng)的用戶數(shù)量為400個,反向代理服務器60個,不斷地進行隨機洗牌,收斂后結果如圖3所示。
圖3 隨機洗牌算法的收斂結果
圖3中的結果表示經(jīng)過不斷的洗牌后,正常用戶的評分均勻分布在1000~3000的區(qū)間內(nèi),而惡意間諜的評分均勻分布在5000左右,可以說明隨機洗牌算法能夠有效地將正常用戶與惡意間諜區(qū)分開,因此基于隨機洗牌算法進行后續(xù)的仿真實驗。
其次,我們設置了兩種不同規(guī)模的仿真環(huán)境來驗證自適應切換周期算法的優(yōu)越性。環(huán)境I有5個反向代理服務器、24個正常用戶和6個惡意用戶。同時,我們設置神經(jīng)網(wǎng)絡為6個全連接層,數(shù)量分別為30,10,26,18,11,10。環(huán)境II有10反向代理服務器,64個正常用戶和16個惡意用戶。同時,我們設置神經(jīng)網(wǎng)絡為6個全連接層,數(shù)量分別為80,60,52,38,24,10。不論是MOTAG還是DQ-MOTAG,我們均采用隨機洗牌策略,惡意用戶發(fā)動攻擊的概率為0.5。如果用戶的信用評分超過5000,則用戶將會遭受封禁。與具有代表性的MOTAG系統(tǒng)相比,環(huán)境I下的收斂結果如圖4、圖5所示。
圖4 環(huán)境I中MOTAG的收斂結果
圖5 環(huán)境I中DQ-MOTAG的收斂結果
如圖4所示,我們能夠發(fā)現(xiàn)所有的惡意用戶都會在24輪洗牌中遭到封禁并且沒有正常用戶遭到誤封。相似地,從圖5中,我們能夠發(fā)現(xiàn)所有惡意用戶在我們提出的DQ-MOTAG系統(tǒng)同樣遭到封禁并且沒有正常用戶遭到誤封。但是DQ-MOTAG僅使用了14輪洗牌就完成了對惡意用戶的搜尋過程。這些結果說明DQ-MOTAG和MOTAG相比能夠在保證高效防御性能的同時降低網(wǎng)絡資源消耗。
為了進一步驗證DQ-MOTAG的有效性,我們在更大規(guī)模的環(huán)境II中進行了相似的實驗。圖6中的結果說明所有惡意用戶在30輪洗牌后都將遭到封禁但是仍然存在兩個正常用戶被誤封情況,意味著誤封率為12.5%。另一方面,如圖7中DQ-MOTAG系統(tǒng)在12輪洗牌后封禁了所有的惡意用戶但同樣存在兩個正常被錯誤封禁,意味著誤封率同樣為12.5%。基于上述的實驗,我們能夠給出的結論是DQ-MOTAG系統(tǒng)具有和著名MOTAG系統(tǒng)相似的防御性能,但MOTAG系統(tǒng)能夠減少洗牌的輪次,通過自適應的學習機制,說明DQ-MOTAG能減少資源消耗并且適合更多種的場景。
圖6 環(huán)境II中MOTAG的收斂結果
圖7 環(huán)境II中DQ-MOTAG的收斂結果
在本文中,我們提出了一種基于深度強化學習的系統(tǒng)被稱為DQ-MOTAG。首先,我們給出了DQ-MOTAG的總體概述。其次,我們設計了一個基于深度強化學習的算法來自適應地調(diào)整洗牌周期,其目的在于顯著減少網(wǎng)絡資源消耗的同時保持相似的防御性能。最后,我們進行了一系列的仿真實驗來驗證我們系統(tǒng)的性能提升。在未來工作中,我們將考慮具有不同級別的混合反向代理來處理信用評分。