雖然現(xiàn)在看來已經(jīng)可以算是陳年舊事,但就在互聯(lián)網(wǎng)剛剛誕生的約二十年前,我們曾面臨著一個巨大的難題:郵件服務(wù)器太過友好。
簡而言之,大多數(shù)郵件服務(wù)器允許任何人進(jìn)行接入,并將郵件發(fā)送給任何收件者。要實(shí)現(xiàn)這一切,我們甚至不需要作為郵件服務(wù)器的用戶,或者只需要費(fèi)一點(diǎn)小勁來將自己偽裝成用戶即可。
攻擊者能夠利用郵件服務(wù)器的郵件SMTP接收端口(TCP端口25)來實(shí)現(xiàn)連接,并模仿全部SMTP服務(wù)器用于交換郵件的內(nèi)部命令發(fā)送各類操作(通過telent、腳本或者其它程序)。如此一來,黑客將能夠偽造電子郵件、宣稱其來自郵件服務(wù)器所托管的某位合法用戶并將任意郵件內(nèi)容發(fā)送給任意收件人。
垃圾郵件發(fā)送者會尋找這類“開放轉(zhuǎn)發(fā)”服務(wù)器,并將成千萬甚至上億封垃圾郵件發(fā)送到世界各地。全球技術(shù)人員——以及郵件服務(wù)器供應(yīng)商——花了約二十年時間來強(qiáng)制要求所有始發(fā)郵件必須進(jìn)行實(shí)際來源驗(yàn)證,且由認(rèn)證用戶所發(fā)出。
然而在多年之后,類似的開放轉(zhuǎn)發(fā)問題又出現(xiàn)在互聯(lián)網(wǎng)領(lǐng)域的另一大基礎(chǔ)性技術(shù)當(dāng)中,即DNS。攻擊者經(jīng)常會利用配置不當(dāng)?shù)腄NS服務(wù)器向查詢客戶端發(fā)送無效IP地址——或者發(fā)送大量虛假流量以實(shí)施DDoS攻擊。
利用DNS實(shí)施DDoS攻擊
DDoS以及其它攻擊者多年來一直在利用DNS實(shí)施他們的邪惡陰謀,但在過去幾年當(dāng)中,這種狀況出現(xiàn)了愈演愈烈之勢。
最近一段時間來,多數(shù)大規(guī)模DDoS攻擊者開始頻繁利用DNS“放大”技術(shù)。如果大家對其具體實(shí)現(xiàn)方式及背景信息感興趣,可以查看US-CERT、互聯(lián)網(wǎng)系統(tǒng)聯(lián)盟以及CloudFlare上的相關(guān)資料(英文原文)。
最終,DNS服務(wù)器供應(yīng)商與協(xié)議開發(fā)商不得不采取對應(yīng)措施,而這一切正如當(dāng)年SMTP郵件供應(yīng)商所作出的保護(hù)努力一樣。其中包括更理想的默認(rèn)設(shè)置及新型防御機(jī)制。不過遺憾的是,DNS服務(wù)器——雖然它們看起來可能運(yùn)行良好——仍然被人們所忽視,而且繼續(xù)保留著攻擊者不希望管理方發(fā)現(xiàn)的大量安全漏洞。
禁用開放轉(zhuǎn)發(fā)DNS服務(wù)器
每一家企業(yè)客戶都能夠輕松實(shí)現(xiàn)的保護(hù)手段就是限定自身DNS服務(wù)器對哪些以及來自誰的請求做出響應(yīng)。對于內(nèi)部DNS服務(wù)器而言,我們需要確保其只會針對來自內(nèi)部計(jì)算機(jī)或者其它認(rèn)證DNS服務(wù)器的查詢給出DNS響應(yīng)。
即使是在外部環(huán)境下,面向公眾的DNS服務(wù)器也不應(yīng)該以無腦方式對所有請求做出響應(yīng)。如果大家的DNS服務(wù)器托管于*.example.com地址,那么絕對不會有合法用戶在該域名之外進(jìn)行域名地址查詢。如果大家的DNS服務(wù)器當(dāng)前會對來自任何使用者的全部查詢做出響應(yīng),特別是來自任意域名的請求,那么這就是一臺開放轉(zhuǎn)發(fā)DNS服務(wù)器——相信我,這絕不是什么好事。
為了確保我們的DNS服務(wù)器不被劃歸為開放轉(zhuǎn)發(fā)一類,并對其進(jìn)行嚴(yán)格鎖定并保證其合法運(yùn)作,請將其IP地址輸入到以下各DNS開放轉(zhuǎn)發(fā)檢測服務(wù)中進(jìn)行安全性測試:
· Open Resolver Project
· Open DNS Resolver Check Site
· DNS Expertise - The Measurement Factory
· DNS Inspect
DNS響應(yīng)速率限制
作為防止自有DNS服務(wù)器被用于DDoS攻擊活動的最佳防御手段之一,我們應(yīng)當(dāng)對其進(jìn)行響應(yīng)速率限制(簡稱RRL)。RRL主要面向權(quán)威DNS服務(wù)器(即那些應(yīng)當(dāng)對一個或者多個域名進(jìn)行響應(yīng)的DNS服務(wù)器),且允許DNS管理員針對DNS響應(yīng)流量作出有效速率限制。盡管在默認(rèn)情況下并未啟用(但絕對應(yīng)該被啟用!),我們可以在BIND 9.9(及其后續(xù)版本)當(dāng)中找到RRL,其同時也作為微軟即將推出的Windows Server 2016 DNS服務(wù)的組成部分。
如果大家的DNS服務(wù)器并不支持RRL,則可以嘗試?yán)闷渌鼈溥x方案實(shí)現(xiàn)同樣的效果,包括使用防火墻速率過濾或者其它反DDoS服務(wù)來保護(hù)自己的DNS。
禁用向上轉(zhuǎn)介響應(yīng)
對于大多數(shù)DNS來講,當(dāng)某臺非遞歸權(quán)威DNS服務(wù)器收到一條未經(jīng)認(rèn)證的域名查詢時,該DNS服務(wù)器會直接將該查詢客戶重新定向至頂級域名DNS服務(wù)器(能夠在文件托管‘root hints’當(dāng)中按照名稱及IP地址進(jìn)行排列)。這是一種較為禮貌的作法,類似于“嘿,我不知道答案是什么,但我建議你到那邊試試運(yùn)氣?!?/P>
但事實(shí)上,這種方式相當(dāng)于因?yàn)閭€人原因而毀掉大家的生活,而DNS放大攻擊的出現(xiàn)也使得這種使用root hints的方式飽受詬病。BIND長久以來一直建議大家禁用這一向上轉(zhuǎn)介行為。微軟公司計(jì)劃在其Windows Server 2016當(dāng)中默認(rèn)禁用向上轉(zhuǎn)介機(jī)制,而大家也可以通過刪除該root hints文件(具體位置為c:\windows\system32\DNS\cache.dns)的方式在其它Windows Server早期版本中禁用該功能。
檢查所有DNS服務(wù)
針對計(jì)算機(jī)及設(shè)備用于接收連接的TCP或者UDP端口53進(jìn)行掃描,從而檢查所有運(yùn)行有DNS服務(wù)的計(jì)算機(jī)及設(shè)備并對其進(jìn)行安全配置。一般來講,大家會發(fā)現(xiàn)其中存在著一些運(yùn)行有計(jì)劃外DNS服務(wù)器的裝置及網(wǎng)絡(luò)設(shè)備(例如無線路由器等)。
開門揖盜最為愚蠢
DNS協(xié)議自從1983年誕生以來就一直擁有良好的實(shí)際表現(xiàn)。它雖然也經(jīng)歷過被濫用以及后續(xù)更新作為補(bǔ)救的狀況,但總體而言,它仍然扮演著保障互聯(lián)網(wǎng)正常運(yùn)轉(zhuǎn)的核心角色。不過我們絕不能夠?qū)ΜF(xiàn)有安全水平盲目自滿,特別是在DNS方面。
在文章的最后,我要提醒大家千萬別讓自己的DNS服務(wù)器重復(fù)當(dāng)初公共郵件服務(wù)器的覆轍——作為現(xiàn)代IT世界中的一員,我們不可能再拿出十年時間來解決那些早就該進(jìn)行修復(fù)的問題。