使用CDN會(huì)增加被網(wǎng)絡(luò)攻擊的隱患?別說,還真會(huì)
為了提升訪問質(zhì)量,許多網(wǎng)站會(huì)使用CDN服務(wù)。在多達(dá)數(shù)人的印象中,CDN不僅能夠降低網(wǎng)絡(luò)擁塞、提高用戶訪問響應(yīng)速度和命中率,而且因?yàn)楹芏嘤脩舻脑L問網(wǎng)站內(nèi)容時(shí),不再經(jīng)過源站,因而CDN還具有隱藏源站IP的作用。
既然能隱藏源站IP,黑客要想發(fā)動(dòng)網(wǎng)絡(luò)攻擊,首先必須找到源站IP,攻擊難度上升不少,是不是意味著使用CDN可以提升網(wǎng)站安全性呢?
答案是肯定的,但隨著CDN的發(fā)展,使用CDN的的確確也會(huì)帶來一些隱患。
CDN科普
鑒于一些同學(xué)可能不了解什么是CDN,我們簡單的回顧一下。
CDN也叫內(nèi)容分發(fā)網(wǎng)絡(luò)。CDN服務(wù)提供商會(huì)在全世界各大城市搭建CDN緩存服務(wù)器,當(dāng)網(wǎng)站使用CDN服務(wù)時(shí),網(wǎng)站的文字、圖片等內(nèi)容就會(huì)緩存到這些服務(wù)器上,訪客訪問網(wǎng)站時(shí),離訪客最近的CDN服務(wù)器負(fù)責(zé)響應(yīng)用戶的請(qǐng)求,從而達(dá)到降低網(wǎng)絡(luò)擁塞、提高用戶訪問相應(yīng)速度和命中率的作用。
舉一個(gè)簡單的例子,A公司經(jīng)營自行車銷售業(yè)務(wù),總部位于北京,在各大城市都開設(shè)了分店,用戶可以選擇線下購買,也可以選擇線上下單。
位于廣州的自行車愛好者從線上渠道購買某型號(hào)山地車,A公司并不會(huì)從北京發(fā)貨,因?yàn)檫@樣物流時(shí)間太長,運(yùn)輸途中還可能發(fā)生各種意外。最好的選擇,是通知位于廣州的實(shí)體店,直接從廣州發(fā)貨,送到客戶的手里。
這個(gè)例子中,A公司總部是源站,廣州分公司是CDN緩存服務(wù)器??蛻粝蚓W(wǎng)站發(fā)出訪問請(qǐng)求,源站不負(fù)責(zé)響應(yīng)該請(qǐng)求,而是由CDN緩存服務(wù)器響應(yīng)用后的請(qǐng)求。CDN工作過程大抵如此。
CDN可以分為自建和他建。上面的例子屬于自建,如果是他建的CDN,相當(dāng)于代理商模式,顧客從代理商手中買山地車,A公司的廣州分公司負(fù)責(zé)發(fā)貨。這時(shí)候,A公司相當(dāng)于CDN服務(wù)商,代理商相當(dāng)于網(wǎng)站。
我們這里討論的是第三方CDN,因?yàn)樽越–DN成本實(shí)在太高,絕大部分企業(yè)使用的都是第三方的CDN,比如蔚可云的CDN就是第三方CDN。
使用CDN存在的安全隱患
說完CDN,進(jìn)入正題。使用CDN,的確會(huì)存在安全隱患,而且這個(gè)隱患還可能無法避免。
CND服務(wù)主要承載著兩個(gè)方面的任務(wù):性能提速和網(wǎng)絡(luò)防護(hù)。
性能提速方面,第三方CDN會(huì)緩存網(wǎng)站數(shù)據(jù),并在訪客訪問時(shí)直接而返回緩存,以減輕源站服務(wù)器的壓力。
在這個(gè)過程中,CDN只能緩存明文數(shù)據(jù),不能緩存密文數(shù)據(jù)。因?yàn)槿绻芫彺婷芪臄?shù)據(jù),就相當(dāng)于發(fā)動(dòng)一次重放攻擊。
什么是重放攻擊?
舉一個(gè)簡單的例子:A想向B轉(zhuǎn)賬100萬,一般來說如果黑客C篡改轉(zhuǎn)賬數(shù)據(jù),將100萬改成轉(zhuǎn)到自己的名下,銀行系統(tǒng)很容易發(fā)現(xiàn),以為A可以看到轉(zhuǎn)賬確認(rèn)單,銀行系統(tǒng)也會(huì)進(jìn)行確認(rèn)。
但如果C事先收集了其他人給B轉(zhuǎn)賬100萬留下的密文數(shù)據(jù),再用這份密文數(shù)據(jù),替換掉A轉(zhuǎn)給B應(yīng)該收到的數(shù)據(jù),A就會(huì)看到假的確認(rèn)單,欺騙系統(tǒng)。
如果CDN緩存密文數(shù)據(jù),就會(huì)出現(xiàn)類似的效果。
以TLS/SSL現(xiàn)行的加密機(jī)制,是不會(huì)允許重放攻擊發(fā)生的,第三方CDN根本無法繞開這一加密機(jī)制。
如果你想要CDN緩存密文數(shù)據(jù),就必須承受CDN發(fā)動(dòng)中間人攻擊的風(fēng)險(xiǎn)。
網(wǎng)絡(luò)防護(hù)方面,CDN可能還具有檢測惡意流量的功能,以現(xiàn)有的技術(shù)來說,一部分黑客攻擊可以在不解密流量的情況下進(jìn)行檢測,比如SYN Flood。不過也有一部分需要解密后才能檢測,比如與部分應(yīng)用層的DoS攻擊。
如果要求CDN防御這類攻擊,必然會(huì)將一定量的信息暴露給CDN,因?yàn)楸┞兜男畔⒃蕉啵瑱z測也會(huì)越徹底。但與此同時(shí),CDN發(fā)生攻擊的風(fēng)險(xiǎn)也越大。
不過我們換一個(gè)視角看,這種隱患不太可能發(fā)生。
CDN服務(wù)商本質(zhì)上就是中介,獲取用戶和網(wǎng)站兩者的信任,是它存在的基石。就好像銀行不會(huì)主動(dòng)暴露客戶資料一樣。如果CDN服務(wù)商發(fā)動(dòng)這類攻擊,無疑等于自殺。