DNS解析是互聯(lián)網(wǎng)中一項(xiàng)非常重要的功能,是用戶訪問網(wǎng)站的關(guān)鍵環(huán)節(jié),我們?nèi)粘9ぷ魃钍褂镁W(wǎng)絡(luò)都伴隨著大量的DNS服務(wù)做支撐。DNS將用戶容易記憶輸入的域名指向可由計(jì)算機(jī)直接識別的IP地址,是確保用戶通過域名訪問網(wǎng)站,維持網(wǎng)絡(luò)空間正常秩序的導(dǎo)航系統(tǒng)。
但DNS在設(shè)計(jì)之初只注重實(shí)用性和便捷性,而忽視了安全性,DNS查詢過程通常是基于無連接不可靠的UDP協(xié)議,這就導(dǎo)致DNS查詢過程中驗(yàn)證機(jī)制的缺失,黑客很容易利用該漏洞進(jìn)行攻擊。DNS服務(wù)器可能面臨如下DNS攻擊風(fēng)險:
(1)黑客偽造客戶端源IP地址發(fā)送大量的DNS請求報文,造成DNS request flood攻擊。
(2)黑客偽造成授權(quán)服務(wù)器發(fā)送大量的DNS回應(yīng)報文,造成DNS reply flood攻擊。
(3)黑客篡改某些網(wǎng)站的域名和IP地址對應(yīng)關(guān)系,導(dǎo)致用戶訪問被導(dǎo)向至其他網(wǎng)站。
(4)黑客向DNS服務(wù)器發(fā)送大量錯誤格式的DNS異常報文,或者發(fā)送大量超長DNS報文,導(dǎo)致DNS服務(wù)器處理這些報文時出現(xiàn)異常,拒絕正常服務(wù)。
接下來我們重點(diǎn)介紹常見的一些DNS攻擊以及相應(yīng)的防御措施。
DNS Request Flood 攻擊與防御
DNS request flood攻擊原理非常簡單,就是黑客通過控制僵尸網(wǎng)絡(luò)向DNS服務(wù)器發(fā)送大量域名的解析請求,導(dǎo)致DNS服務(wù)器因大量解析請求而過載,無法響應(yīng)正常用戶的DNS請求。
在DNS request flood攻擊過程中,攻擊目標(biāo)可能是權(quán)威服務(wù)器,也可能是遞歸服務(wù)器,攻擊目標(biāo)不同,所采用的防御手段也不同。對于遞歸服務(wù)器,向它發(fā)送DNS請求的是終端用戶,所以防御過程中,需要判定這個DNS請求是否是由真實(shí)的瀏覽器客戶端發(fā)出;而對于權(quán)威服務(wù)器,向它發(fā)送DNS請求的可能就是遞歸服務(wù)器,所以認(rèn)證方式也應(yīng)有所不同。
1.針對虛假源攻擊
授權(quán)服務(wù)器源認(rèn)證(即ns重定向方式),可以有效防御DNS Request Flood虛假源攻擊。重定向只針對訪問受攻擊域名的源IP地址實(shí)施,以減少誤判和避免對正常業(yè)務(wù)的訪問延時。
基于目的地址對DNS Request報文的速率進(jìn)行統(tǒng)計(jì),當(dāng)DNS request報文的速率超過閾值時,啟動重定向。
(1)返回給請求源一個別名地址,如果請求源是虛假源,則不會回應(yīng)重定向報文,認(rèn)證不通過報文丟棄。
(2)如果請求源是真實(shí)源,則重新請求發(fā)送的重定向地址。認(rèn)證通過將此真實(shí)源加入白名單。
(3)再次重定向正確的地址,請求源重新請求正確地址,報文命中白名單,直接放行到達(dá)授權(quán)服務(wù)器,完成報文交互。
2.針對真實(shí)源攻擊
如果是真實(shí)源攻擊,經(jīng)過上述防御過程后,通過的DNS報文還很大,則可以繼續(xù)采用以下方式進(jìn)行防御。
(1)DNS請求報文限速:對于大流量的DNS request flood攻擊是一種非常有效的防御方式。
(2)DNS request報文限速源IP行為控制,丟棄超出閾值的DNS request報文。
(3)另外還需要對異常DNS報文進(jìn)行檢查,將非標(biāo)準(zhǔn)格式的DNS報文直接丟棄。
DNS Reply Flood 攻擊與防御
DNS服務(wù)器收到DNS回應(yīng)報文時,不管自己有沒有發(fā)過解析請求,都會處理這些DNS回應(yīng)報文。DNS reply flood攻擊是黑客發(fā)送大量的DNS回應(yīng)報文到DNS緩存服務(wù)器,導(dǎo)致緩存服務(wù)器因?yàn)樘幚磉@些DNS回應(yīng)報文而耗盡資源,影響正常業(yè)務(wù)的過程。
DNS reply flood大多都是虛假源攻擊,黑客控制僵尸主機(jī)發(fā)出的DNS reply報文的源IP地址通常都是偽造的,是不存在的,所以在防御的時候,就可以從回應(yīng)源IP地址的真假性入手,判定這個源IP是否是真實(shí)源。
針對DNS reply flood攻擊的應(yīng)對方式主要有:
1.DNS reply報文限速
DNS reply報文限速對于大流量的DNS Reply flood攻擊是一種非常有效的防御手段,主要分為對指定域名限速和對指定IP限速兩種,分別將匹配了指定域名和指定IP的DNS reply報文進(jìn)行限速,將超過閾值的DNS reply報文直接丟棄處理。
2.異常DNS報文的檢查
除DNS reply報文限速外,還可以針對異常DNS報文進(jìn)行檢查,從而過濾掉惡意的DNS請求數(shù)據(jù)。
(1)DNS報文格式:對DNS報文格式進(jìn)行檢查,將非標(biāo)準(zhǔn)的DNS報文直接丟棄。
(2)DNS報文長度:通常情況下,基于UDP協(xié)議的DNS協(xié)議長度都不大于512字節(jié),而很多DNS flood經(jīng)常采用超大DNS報文以造成鏈路堵塞,因此可以將報文長度作為檢測DNS報文是否正常的一個標(biāo)準(zhǔn),當(dāng)DNS報文長度超過閾值時,直接將DNS報文丟棄處理 。
(3)DNS報文的TTL值
將DNS報文的跳數(shù)限制在DNS報文允許跳數(shù)范圍內(nèi),當(dāng)DNS報文的跳數(shù)超出閾值時,直接丟棄該DNS請求報文。
此外,還有一種升級版的DNS reply flood攻擊,它的破壞性更強(qiáng),這就是DNS反射攻擊。
黑客將自己的源IP地址偽造成被攻擊目標(biāo)的IP地址,然后向網(wǎng)絡(luò)中開放的DNS服務(wù)器發(fā)送大量的查詢請求。
由于DNS回應(yīng)報文通常是請求報文的幾倍甚至幾十倍,這些放大后的DNS回應(yīng)報文被引導(dǎo)至被攻擊目標(biāo),導(dǎo)致網(wǎng)絡(luò)擁塞,拒絕正常服務(wù)器,從而達(dá)到放大攻擊的效果。
DNS反射攻擊和前面介紹的傳統(tǒng)DNS reply flood攻擊有兩點(diǎn)本質(zhì)的不同。
(1)傳統(tǒng)DNS reply flood攻擊的攻擊目標(biāo)一般是DNS緩存服務(wù)器;而DNS反射攻擊的攻擊目標(biāo)一般是客戶端。
(2)傳統(tǒng)DNS reply flood攻擊大多是虛假源攻擊,而在DNS反射攻擊中,DNS請求報文都是真實(shí)的,DNS回應(yīng)報文也都是真實(shí)的。
DNS 緩存投毒攻擊
在實(shí)際的DNS解析過程中,當(dāng)用戶對某個域名發(fā)起請求時,遞歸服務(wù)器首先會查看自身的DNS緩存,如果緩存中恰好有該域名的記錄,就會直接將結(jié)果返回給用戶,用戶對所得的IP地址發(fā)起訪問。如果緩存中沒有記錄,才會發(fā)起全球解析查詢。
這種查詢機(jī)制,縮短了解析查詢的時間,可以讓用戶獲得更快的訪問體驗(yàn),但也存在一定的安全風(fēng)險。如果攻擊者通過控制用戶的主機(jī)或者使用惡意軟件攻擊用戶的DNS緩存,就可以對DNS緩存中的域名映射關(guān)系進(jìn)行篡改,將域名解析結(jié)果指向一個虛假IP。
在這種情況下,用戶對該網(wǎng)站發(fā)起請求時,通過DNS系統(tǒng)的解析會直接將虛假的映射關(guān)系返給用戶,將用戶引導(dǎo)至虛假站點(diǎn)之上,從而造成信息泄露,財(cái)產(chǎn)安全受到影響。
針對DNS緩存投毒,主要有以下幾種應(yīng)對措施:
1.使用可信的ISP或DNS服務(wù)器
由于用戶的計(jì)算機(jī)通常會直接使用ISP所提供的DNS服務(wù)器。因此,盡量選擇信譽(yù)良好且配備了全面安全措施的ISP,才能有效預(yù)防緩存投毒。如果不放心ISP提供的默認(rèn)DNS服務(wù)器的話,也可以自行改用其他可信的DNS服務(wù)器,以減少受攻擊的可能性。
2.刷新DNS緩存
為了獲取最新的DNS解析記錄,預(yù)防遭受DNS緩存投毒攻擊,用戶可以定期對自己的系統(tǒng)進(jìn)行DNS緩存清理工作,操作方法:Win+R快捷鍵→輸入:cmd→輸入:ipconfig/flushdns→回車。
3.復(fù)查訪問過的目標(biāo)網(wǎng)站
雖然計(jì)算機(jī)會機(jī)械地認(rèn)為,只要你輸入的網(wǎng)站URL沒錯的話,它訪問到的就是真實(shí)的IP地址。但是我們可以更謹(jǐn)慎地檢查訪問的網(wǎng)站是否是目標(biāo)網(wǎng)站,檢查網(wǎng)頁的地址欄上是否有HTTPS加密,以及它的界面是否看起來可疑。一旦發(fā)現(xiàn)自己訪問的是虛假網(wǎng)站,立即退出該網(wǎng)站,并執(zhí)行病毒掃描和DNS緩存刷新。
4.重新啟動路由器以清除其DNS緩存
我們常用的路由器也可能帶有自己的DNS緩存功能,它們和上面提到的用戶計(jì)算機(jī)以及DNS服務(wù)器一樣,容易受到DNS投毒的攻擊。因此,定期重啟路由器,將有利于清除已有的DNS緩存,并重新獲取新的映射記錄。