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