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