抵御DNS攻擊 從構(gòu)建現(xiàn)代DNS系統(tǒng)架構(gòu)開始
原創(chuàng)今天,DNS系統(tǒng)早已超出了最初設(shè)定的“地址本”功能,隨著互聯(lián)網(wǎng)絡(luò)的普及,也出現(xiàn)了越來越多的惡意入侵、DDoS攻擊等。一個(gè)現(xiàn)代的DNS系統(tǒng)從設(shè)計(jì)之初就應(yīng)該考慮到這些問題,以及給最終的用戶提供一個(gè)快速、易用的界面。
DNS系統(tǒng)的使用入口是站長添加刪除記錄等,這部分的要求是簡單易用,快速生效,所以需要一個(gè)強(qiáng)大的隊(duì)列系統(tǒng)迅速分發(fā)數(shù)據(jù)并保持各個(gè)服務(wù)器的同步。系統(tǒng)出口則是提供查詢服務(wù)的53端口。一方面要很好地滿足各個(gè)不同遞歸服務(wù)器的兼容要求,另一方面,也要防止抵御各式各樣的入侵及攻擊。中間的核心模塊則是提供基本的解析功能,需要盡可能地兼容各種RFC協(xié)議同時(shí)最大化地提升性能。比如,DNSPod web前端使用MySQL數(shù)據(jù)庫存儲(chǔ)用戶記錄,但后端的隊(duì)列系統(tǒng)并沒有使用其主從同步的功能,而是自行從MySQL數(shù)據(jù)庫中讀取數(shù)據(jù)進(jìn)行分發(fā)。這樣可以做到10秒內(nèi)在各個(gè)服務(wù)器之間生效,一般情況下用戶在網(wǎng)站在添加完記錄,關(guān)閉網(wǎng)頁再去服務(wù)器請求時(shí),數(shù)據(jù)已經(jīng)完成更新。
DNS服務(wù)器之前有黑洞集群防護(hù)設(shè)備,主要用于檢測一些常見的攻擊形式,同時(shí)也可以接受后端的實(shí)時(shí)命令,及時(shí)封禁域名,修改策略。實(shí)現(xiàn)部分智能的攻擊防護(hù)。而在DNS服務(wù)器上,則在內(nèi)核態(tài)運(yùn)行著攻擊檢測及相應(yīng)的保護(hù)程序。保護(hù)程序?qū)崟r(shí)統(tǒng)計(jì)檢測本機(jī)數(shù)據(jù)流量,確保不會(huì)超過機(jī)器最高負(fù)荷。攻擊檢測程序探測數(shù)據(jù)包特征,實(shí)時(shí)分析,發(fā)現(xiàn)有特征收斂時(shí)立即通知前方的黑洞設(shè)備,即可在最前方抵御攻擊,減少正常服務(wù)的壓力。
最終提供服務(wù)的標(biāo)準(zhǔn)DNS服務(wù)器則可以使用高效的網(wǎng)絡(luò)編程模式,內(nèi)存數(shù)據(jù)庫等提升性能,同時(shí)及時(shí)實(shí)現(xiàn)最新的RFC協(xié)議,確保跟各大遞歸服務(wù)器之間的無縫連接。
由此可以看到,DNS系統(tǒng)的構(gòu)架早已經(jīng)不是最初的運(yùn)行特定的服務(wù)器軟件這么簡單,而是成為一個(gè)鏈條,一個(gè)大的系統(tǒng),需要各方面密切配合才能做好。
【作者簡介】張普就職于DNSPod,Inc.,任高級(jí)系統(tǒng)開發(fā)工程師,從事公司DNS系統(tǒng)開發(fā)工作,主要研究方向?yàn)長inux內(nèi)核,網(wǎng)絡(luò),數(shù)據(jù)庫開發(fā)。